@vanira/sdk 0.0.87 → 0.0.88

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.
@@ -14,7 +14,7 @@
14
14
  <p style="margin:12px 0 0;font-size:12px;color:#888">
15
15
  Tip: Ctrl+Shift+R (Windows) or Cmd+Shift+R (Mac)
16
16
  </p>
17
- `,n.appendChild(e),document.body.appendChild(n),(t=e.querySelector("#vanira-stall-refresh"))==null||t.addEventListener("click",()=>{Wl(),window.location.reload()}),(r=e.querySelector("#vanira-stall-dismiss"))==null||r.addEventListener("click",()=>Wl())}let li=null;const Vw=4e3;function du(n){if(typeof window>"u")return n||"/";const e=(n||"/").trim();if(!e)return"/";try{const t=new URL(e,window.location.origin);return t.origin!==window.location.origin?e:`${t.pathname}${t.search}${t.hash}`||"/"}catch{return e.startsWith("/")?e:`/${e}`}}function uu(n,e){li={targetRoute:du(n),presetId:e==null?void 0:e.presetId,toolName:e==null?void 0:e.toolName,expiresAt:Date.now()+Vw}}function zw(n){if(!li)return null;if(Date.now()>li.expiresAt)return li=null,null;const e=du(n),t=li.targetRoute;if(!(e===t||e.startsWith(t.split("#")[0])||t.startsWith(e.split("#")[0])))return null;const i=li;return li=null,i}function Ls(){return typeof window>"u"?"/":`${window.location.pathname}${window.location.search}${window.location.hash}`||"/"}class xm{constructor(e){L(this,"active",!1);L(this,"initialSent",!1);L(this,"lastRoute","");L(this,"sendContext");L(this,"isReady");L(this,"cleanupFns",[]);L(this,"initialRetryTimer",null);L(this,"routePollTimer",null);L(this,"originalPushState",null);L(this,"originalReplaceState",null);this.sendContext=e.sendContext,this.isReady=e.isReady??(()=>!0)}start(){typeof window>"u"||this.active||(this.active=!0,this.initialSent=!1,this.lastRoute=Ls(),this.attachListeners(),this.scheduleInitialContextSend())}stop(){if(!(!this.active&&this.cleanupFns.length===0)){this.active=!1,this.initialSent=!1,this.initialRetryTimer!==null&&(clearTimeout(this.initialRetryTimer),this.initialRetryTimer=null),this.routePollTimer!==null&&(clearInterval(this.routePollTimer),this.routePollTimer=null);for(const e of this.cleanupFns)try{e()}catch{}this.cleanupFns.length=0,this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null)}}onChannelReady(){this.scheduleInitialContextSend()}scheduleInitialContextSend(e=0){if(!(!this.active||this.initialSent)){if(this.isReady()){this.sendRouteContext("call_started"),this.initialSent=!0;return}e>=30||(this.initialRetryTimer=window.setTimeout(()=>this.scheduleInitialContextSend(e+1),100))}}attachListeners(){const e=(s,a=0)=>{const o=()=>{const A=Ls();A!==this.lastRoute&&this.handleRouteChange(A,s)};a>0?window.setTimeout(o,a):queueMicrotask(o)},t=()=>e("popstate"),r=()=>e("hashchange"),i=s=>{const a=s.detail;if((a==null?void 0:a.initiated_by)==="agent"){e("vanira_navigate_agent",120);return}e("vanira_navigate",120)};window.addEventListener("popstate",t),window.addEventListener("hashchange",r),window.addEventListener("vanira:navigate",i),this.cleanupFns.push(()=>window.removeEventListener("popstate",t),()=>window.removeEventListener("hashchange",r),()=>window.removeEventListener("vanira:navigate",i)),this.originalPushState=history.pushState.bind(history),this.originalReplaceState=history.replaceState.bind(history),history.pushState=(...s)=>{this.originalPushState(...s),e("pushState")},history.replaceState=(...s)=>{this.originalReplaceState(...s),e("replaceState")},this.routePollTimer=window.setInterval(()=>{if(!this.active)return;const s=Ls();s!==this.lastRoute&&this.handleRouteChange(s,"location_poll")},1e3)}handleRouteChange(e,t){if(!this.active)return;const r=this.lastRoute;if(r===e)return;if(this.lastRoute=e,!this.initialSent){this.scheduleInitialContextSend();return}!this.isReady()||zw(e)||this.sendRouteContext("route_changed",r,t,"user")}sendRouteContext(e,t,r,i="user"){const s=Ls();this.lastRoute=s;const a={ui_state:"page_navigation",navigation_led_by:i,current_route:s,current_page:s,user_action:e==="call_started"?"call_started_on_page":"user_navigated"};e==="call_started"?a.message=`User started the call while viewing ${s}.`:(a.previous_route=t??"",a.message=`User navigated from ${t||"(unknown)"} to ${s}.`,r&&(a.navigation_source=r));try{this.sendContext(a)}catch{}}}const pn=class pn{constructor(e){L(this,"serverUrl");L(this,"agentId");L(this,"callId");L(this,"prospectId");L(this,"apiKey");L(this,"backendUrl");L(this,"token");L(this,"prospectName");L(this,"extraDetails");L(this,"onConnected");L(this,"onDisconnected");L(this,"onError");L(this,"onTranscription");L(this,"onLocalStream");L(this,"onRemoteTrack");L(this,"onClientToolCall");L(this,"onSessionStarted");L(this,"sessionStartedEmitted",!1);L(this,"pc",null);L(this,"dataChannel",null);L(this,"mediaBytesChannel",null);L(this,"audioElement",null);L(this,"localStream",null);L(this,"micMuted",!1);L(this,"connected",!1);L(this,"appliedRemoteCandidates",new Set);L(this,"remoteDescSet",!1);L(this,"pendingServerIce",[]);L(this,"icePollStop",!1);L(this,"iceServers");L(this,"callSessionLoaded",!1);L(this,"connectGeneration",0);L(this,"runtime");L(this,"sessionBehavior");L(this,"routeTracker",null);L(this,"_status","idle");L(this,"listeners",new Map);L(this,"liveVision");L(this,"liveVisionAutoStarted",!1);L(this,"connectStallTimeoutMs");if(!e.agentId)throw new Error("agentId is required");const t=!!(e.apiKey||e.token),r=!!(e.serverUrl&&e.callId),i=pn.normalizeIceServers(e.iceServers);if(!t&&!r)throw new Error("apiKey or token is required — or pass serverUrl and callId from a prior POST /calls/create");this.agentId=e.agentId,this.sessionBehavior=e.sessionBehavior,this.serverUrl=(e.serverUrl||"").replace(/\/$/,""),this.apiKey=e.apiKey,this.token=e.token,this.prospectName=e.prospectName,this.extraDetails=e.extraDetails,this.backendUrl=(e.backendUrl||vw).replace(/\/$/,""),i.length&&(this.iceServers=i),r&&(this.callSessionLoaded=!0);const s=typeof window<"u";this.prospectId=e.prospectId;const a=e.sessionBehavior==="continue";if(a&&s&&!e.callId){const A=Xo(this.agentId);A&&(e.callId||(this.callId=A.callId),!this.prospectId&&A.prospectId&&(this.prospectId=A.prospectId))}if(!this.prospectId&&s)try{const A=Xo(this.agentId);this.prospectId=(A==null?void 0:A.prospectId)||window.sessionStorage&&window.sessionStorage.getItem("vanira_prospect_id")||window.localStorage&&window.localStorage.getItem("vanira_prospect_id")||void 0}catch{}e.callId?this.callId=e.callId:a||(this.callId=void 0);const o=e.onSessionStarted;this.onSessionStarted=A=>{o==null||o(A),this.emit("session_started",A)},this.liveVision=e.liveVision,this.connectStallTimeoutMs=e.connectStallTimeoutMs??15e3,this.onConnected=()=>{var A;Ds(),this._status="connected",(A=e.onConnected)==null||A.call(e),this.emit("connected"),this.maybeAutoStartLiveCamera()},this.onDisconnected=()=>{var A;Ds(),this._status="disconnected",(A=e.onDisconnected)==null||A.call(e),this.emit("disconnected")},this.onError=A=>{var l;Ds(),this._status="error";const c=typeof A=="string"?A:(A==null?void 0:A.message)||"Connection error";(l=e.onError)==null||l.call(e,A),this.emit("error",c)},this.onTranscription=(A,c,l)=>{var d;(d=e.onTranscription)==null||d.call(e,A,c),this.emit("transcription",{text:A,isFinal:c,role:l})},this.onLocalStream=e.onLocalStream||(()=>{}),this.onRemoteTrack=(A,c)=>{var l;(l=e.onRemoteTrack)==null||l.call(e,A,c),this.emit("track",{track:A,stream:c})},this.onClientToolCall=A=>{var d;(d=e.onClientToolCall)==null||d.call(e,A);const c=(A==null?void 0:A.data)||A,l={name:String(c.name||c.tool_name||""),arguments:c.arguments||c.args||{},tool_call_id:String(c.tool_call_id||c.call_id||""),execution_mode:c.execution_mode==="blocking"?"blocking":"fire_and_forget",client_fields:c.client_fields||{}};l.name&&l.tool_call_id&&this.emit("tool_call",l)},this.runtime=e.runtime,typeof window<"u"&&e.trackRouteContext!==!1&&(this.routeTracker=new xm({sendContext:A=>this.sendContextUpdate(A),isReady:()=>{var A;return((A=this.dataChannel)==null?void 0:A.readyState)==="open"}}))}async createCall(){return this.connect()}async connect(){var t;this._status="connecting",this.connectStallTimeoutMs>0&&Nw(this.connectStallTimeoutMs);const e=++this.connectGeneration;if(await this.loadCallSession(),!this.isConnectCancelled(e)){if(!this.serverUrl)throw new Error("[VaniraClient] worker_url missing from /calls/create");if(!this.callId)throw new Error("[VaniraClient] call_id missing — must come from POST /calls/create");if(this.onSessionStarted&&this.prospectId&&this.callId&&!this.sessionStartedEmitted)try{this.onSessionStarted({prospectId:this.prospectId,callId:this.callId,serverUrl:this.serverUrl}),this.sessionStartedEmitted=!0}catch{}try{this.appliedRemoteCandidates.clear(),this.remoteDescSet=!1,this.pendingServerIce=[],this.icePollStop=!1,this.stopRemoteIcePolling();const r=this.getIceServers();this.pc=new RTCPeerConnection({iceServers:r,iceTransportPolicy:"all"});let i;try{i=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:{ideal:16e3},channelCount:1}})}catch(d){if(d.name==="NotAllowedError"||d.name==="PermissionDeniedError"||(t=d.message)!=null&&t.includes("Permission denied")){const u=navigator.userAgent,h=/iPad|iPhone|iPod/.test(u)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;let p="Microphone access denied. Please allow microphone access in your browser settings.";h&&(u.includes("CriOS")?p="Microphone access blocked. Please enable it in iOS Settings > Chrome > Microphone, then reload the page.":u.includes("FxiOS")?p="Microphone access blocked. Please enable it in iOS Settings > Firefox > Microphone, then reload the page.":p="Microphone access blocked. Please enable it in iOS Settings > Safari > Microphone (or tap 'aA' > Website Settings > Allow Microphone).");const m=new Error(p);throw m.name=d.name,m}throw d}if(this.isConnectCancelled(e)){i.getTracks().forEach(d=>d.stop());return}if(this.localStream=i,!this.pc||this.isConnectCancelled(e)){i.getTracks().forEach(d=>d.stop());return}if(this.onLocalStream(i),i.getTracks().forEach(d=>{var u;(u=this.pc)==null||u.addTrack(d,i)}),!this.pc)throw new Error("RTCPeerConnection was closed unexpectedly");this.dataChannel=this.pc.createDataChannel("control"),this.dataChannel.onopen=()=>{var d;(d=this.routeTracker)==null||d.onChannelReady()},this.dataChannel.onmessage=d=>{if(typeof d.data=="string")try{this.handleControlEvent(JSON.parse(d.data))}catch{}else if(d.data instanceof ArrayBuffer)try{const u=new TextDecoder().decode(d.data);try{const h=JSON.parse(u);Sm(h)&&this.handleControlEvent(h)}catch{}}catch{}else d.data instanceof Blob&&d.data.text().then(u=>{try{this.handleControlEvent(JSON.parse(u))}catch{}})},this.dataChannel.onerror=d=>{},this.mediaBytesChannel=this.pc.createDataChannel("media-bytes",{ordered:!0}),this.mediaBytesChannel.binaryType="arraybuffer",this.mediaBytesChannel.onopen=()=>{},this.mediaBytesChannel.onerror=d=>{},this.pc.ontrack=d=>{const u=d.track,h=d.streams[0];u.kind==="audio"?(this.audioElement=new Audio,this.audioElement.srcObject=h,this.audioElement.play().catch(p=>{}),this.audioElement.onended=()=>{this.sendEvent("playedStream"),typeof window<"u"&&window.dispatchEvent(new CustomEvent("vanira:agent-playback-ended"))},this.onRemoteTrack(u,h)):u.kind==="video"&&this.onRemoteTrack(u,h)};const s=()=>{var h,p,m,v,y,B,T,w,C,k,I;const d=((h=this.pc)==null?void 0:h.connectionState)==="connected"||((p=this.pc)==null?void 0:p.iceConnectionState)==="connected"||((m=this.pc)==null?void 0:m.iceConnectionState)==="completed",u=((v=this.pc)==null?void 0:v.connectionState)==="failed"||((y=this.pc)==null?void 0:y.iceConnectionState)==="failed"||((B=this.pc)==null?void 0:B.connectionState)==="closed"||((T=this.pc)==null?void 0:T.iceConnectionState)==="closed"||((w=this.pc)==null?void 0:w.connectionState)==="disconnected"||((C=this.pc)==null?void 0:C.iceConnectionState)==="disconnected";((k=this.pc)==null?void 0:k.connectionState)==="connected"&&this.stopRemoteIcePolling(),d&&!this.connected?(this.connected=!0,(I=this.routeTracker)==null||I.start(),this.onConnected()):u&&this.connected&&(this.connected=!1,this.liveVisionAutoStarted=!1,this.onDisconnected())};this.pc.onconnectionstatechange=s,this.pc.oniceconnectionstatechange=s;const a=this.getIceTrickleUrl();this.pc.onicecandidate=d=>{d.candidate&&this.sendRemoteIceCandidate(d.candidate,a)};const o=await this.pc.createOffer();if(this.isConnectCancelled(e)||(await this.pc.setLocalDescription(o),this.isConnectCancelled(e)))return;const A=this.serverUrl.includes("?")?this.serverUrl:`${this.serverUrl}/webrtc?agent=${this.agentId}_${this.callId}`,c=await fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({offer:this.pc.localDescription,agentId:this.agentId,callId:this.callId})});if(this.isConnectCancelled(e))return;if(!c.ok){const d=await c.json();throw new Error(d.error||`HTTP ${c.status}`)}const{answer:l}=await c.json();if(this.isConnectCancelled(e)||!this.pc||(await this.pc.setRemoteDescription(l),this.isConnectCancelled(e))||(this.remoteDescSet=!0,await this.flushPendingServerIce(),this.isConnectCancelled(e)))return;this.startRemoteIcePolling(a)}catch(r){if(this.isConnectCancelled(e))return;throw this.disconnect(),this.onError(r.message||r),r}}}createCallCacheKey(e,t){const r=this.apiKey?`key:${this.apiKey.slice(0,16)}`:`token:${(this.token||"").slice(-16)}`;return[this.backendUrl,this.agentId,e,t||"",this.prospectId||"",r].join("|")}async postCreateCall(e,t,r){var o,A,c;const i=await fetch(`${this.backendUrl}/calls/create`,{method:"POST",headers:e,body:JSON.stringify({agent_id:this.agentId,type:((o=this.runtime)==null?void 0:o.callType)||"web",mode:t,...(A=this.runtime)!=null&&A.runtimeName?{runtime:this.runtime.runtimeName}:{},prospect_id:this.prospectId,...this.prospectName?{prospect_name:this.prospectName}:{},...this.extraDetails&&Object.keys(this.extraDetails).length?{extra_details:this.extraDetails}:{},...r?{call_id:r}:{}})});if(!i.ok){const l=await i.json().catch(()=>({}));throw new Error(`[VaniraClient] createCall failed (${i.status}): ${((c=l==null?void 0:l.detail)==null?void 0:c.message)||(l==null?void 0:l.message)||i.statusText}`)}const s=await i.json();if(!s.call_id||!s.worker_url)throw new Error("[VaniraClient] /calls/create response missing call_id or worker_url");const a=pn.normalizeIceServers(s.ice_servers);if(!a.length)throw new Error("[VaniraClient] /calls/create response missing ice_servers");return{callId:s.call_id,prospectId:s.prospect_id||this.prospectId,serverUrl:s.worker_url.replace(/\/$/,""),iceServers:a}}applyCreateCallSession(e){if(this.callId=e.callId,this.prospectId=e.prospectId||this.prospectId,this.serverUrl=e.serverUrl,this.iceServers=e.iceServers,this.callSessionLoaded=!0,Cm(this.agentId,this.callId||"",this.prospectId),this.onSessionStarted&&this.prospectId&&this.callId&&!this.sessionStartedEmitted)try{this.onSessionStarted({prospectId:this.prospectId,callId:this.callId,serverUrl:this.serverUrl}),this.sessionStartedEmitted=!0}catch{}}async loadCallSession(){if(this.callSessionLoaded)return;if(this.serverUrl&&this.callId){this.callSessionLoaded=!0;return}if(!this.apiKey&&!this.token)throw new Error("[VaniraClient] apiKey or token is required to create a call session");const e={"Content-Type":"application/json"};this.apiKey?e["X-API-Key"]=this.apiKey:this.token&&(e.Authorization=this.token.startsWith("Bearer ")?this.token:`Bearer ${this.token}`);const t=this.sessionBehavior==="continue"?this.callId:void 0,r=this.sessionBehavior==="continue"?"continue":"new",i=this.createCallCacheKey(r,t);let s=pn.inflightCreates.get(i);s||(s=this.postCreateCall(e,r,t),pn.inflightCreates.set(i,s),s.finally(()=>{pn.inflightCreates.get(i)===s&&pn.inflightCreates.delete(i)}));const a=await s;this.applyCreateCallSession(a)}getIceServers(){var e;if((e=this.iceServers)!=null&&e.length)return this.iceServers;throw new Error("[VaniraClient] ice_servers missing — pass iceServers from POST /calls/create")}static normalizeIceServers(e){if(!Array.isArray(e))return[];const t=[];for(const r of e){const i=r==null?void 0:r.urls,s=Array.isArray(i)?i.filter(Boolean):typeof i=="string"&&i.trim()?[i.trim()]:[];if(!s.length)continue;const a={urls:s.length===1?s[0]:s},o=r.username,A=r.credential;o&&(a.username=o),A&&(a.credential=A),t.push(a)}return t}getWorkerOrigin(){var e;if(!((e=this.serverUrl)!=null&&e.trim()))return"";try{return new URL(this.serverUrl).origin}catch{return this.serverUrl.replace(/\/webrtc.*$/,"").replace(/\/$/,"")}}getIceTrickleUrl(){try{const e=new URL(this.serverUrl);return e.pathname.endsWith("/webrtc")?e.pathname=`${e.pathname}/ice`:e.pathname="/webrtc/ice",e.toString()}catch{return`${this.getWorkerOrigin()}/webrtc/ice?agent_id=${this.agentId}&call_id=${this.callId}`}}async sendRemoteIceCandidate(e,t){try{const r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({candidate:e.toJSON()})});if(r.ok){const i=await r.json();await this.applyServerIceCandidates(i.candidates)}}catch{}}async applyServerIceCandidates(e){if(!(!this.pc||!(e!=null&&e.length))){if(!this.remoteDescSet){this.pendingServerIce.push(...e);return}for(const t of e){const r=JSON.stringify(t);if(!this.appliedRemoteCandidates.has(r)){this.appliedRemoteCandidates.add(r);try{await this.pc.addIceCandidate(t)}catch{}}}}}async flushPendingServerIce(){if(!this.pc||!this.remoteDescSet||this.pendingServerIce.length===0)return;const e=this.pendingServerIce;this.pendingServerIce=[];for(const t of e){const r=JSON.stringify(t);if(!this.appliedRemoteCandidates.has(r)){this.appliedRemoteCandidates.add(r);try{await this.pc.addIceCandidate(t)}catch{}}}}startRemoteIcePolling(e){this.icePollStop=!1,this.pollServerIce(e)}async pollServerIce(e){var r;const t=Date.now()+15e3;for(;!this.icePollStop&&Date.now()<t;){const i=(r=this.pc)==null?void 0:r.connectionState;if(i==="connected"||i==="failed"||i==="closed")break;try{const s=await fetch(e,{method:"GET"});if(s.ok){const a=await s.json();if(await this.applyServerIceCandidates(a.candidates),a.done&&(!a.candidates||a.candidates.length===0))break}}catch{}await new Promise(s=>setTimeout(s,150))}}stopRemoteIcePolling(){this.icePollStop=!0}sendEvent(e,t={}){var r;if(((r=this.dataChannel)==null?void 0:r.readyState)==="open"){const i={event:e,...t};this.dataChannel.send(JSON.stringify(i))}}async sendEventWhenReady(e,t={},r=1e4){var s;const i=Date.now()+r;for(;Date.now()<i;){if(((s=this.dataChannel)==null?void 0:s.readyState)==="open")return this.sendEvent(e,t),!0;await new Promise(a=>setTimeout(a,50))}return!1}startLiveCamera(e={}){const t={...this.liveVision,...e};this.emit("tool_call",this.buildOpenLiveCameraToolCall(t))}buildOpenLiveCameraToolCall(e={}){const t=e.scope??"until_call_end";return{name:"open_live_camera",tool_call_id:`lv_${crypto.randomUUID()}`,execution_mode:"fire_and_forget",client_fields:{preset_id:_.LiveVision},arguments:{mode:"live",scope:t,target_fps:e.target_fps??1,max_fps:e.max_fps??3,max_width:e.max_width??640,reason:e.reason??"camera_capture",facing_mode:e.facing_mode??"environment",show_preview:e.show_preview??!0,...t==="timed"&&e.duration_sec?{duration_sec:e.duration_sec}:{}}}}maybeAutoStartLiveCamera(){const e=this.liveVision;!(e!=null&&e.enabled)||e.scope!=="full_call"||this.liveVisionAutoStarted||(this.liveVisionAutoStarted=!0,this.emit("tool_call",this.buildOpenLiveCameraToolCall(e)))}handleControlEvent(e){var t;switch(e.event){case"clearAudio":this.dispatchBoardAbort("User interrupted while LaTeX was writing",void 0,_.WriteLatexText);break;case"transcription":{const r=e.data&&typeof e.data=="object"?e.data:{},i=String(e.text??r.text??"").trim(),s=e.isFinal??e.is_final??r.isFinal??r.is_final,a=s===void 0?!0:s===!0||s==="true",o=String(e.role??e.speaker??r.role??r.speaker??"").trim()||void 0;i&&this.onTranscription(i,a,o)}break;case"mark":break;case"client_tool_cancel":{const i=(e.data||e).tool_call_id||e.tool_call_id;this.dispatchBoardAbort("Tool cancelled by server",i);break}case"client_tool_call":{const r=e.tool_call||e.data||e,i=(r==null?void 0:r.tool_call_id)||(r==null?void 0:r.call_id)||e.tool_call_id||"";i&&((t=this.dataChannel)==null?void 0:t.readyState)==="open"&&this.dataChannel.send(JSON.stringify({event:"client_tool_ack",data:{tool_call_id:i}}));const s=(r==null?void 0:r.arguments)||(r==null?void 0:r.args)||{},a=(r==null?void 0:r.client_fields)||{},o=(r==null?void 0:r.name)||(r==null?void 0:r.tool_name)||"",A=lu(a,s,o);if(o==="end_call"){i&&this.sendToolResult(i,{status:"client_ack_end_call",message:"Ending call."}),window.setTimeout(()=>this.disconnect(),120);break}if(A){window.dispatchEvent(new CustomEvent("vanira:preset",{detail:{toolCall:r,client:this}})),this.onClientToolCall(r);break}this.onClientToolCall(r);break}}}disconnect(){var e;Ds(),this.connectGeneration++,this.stopRemoteIcePolling(),this.appliedRemoteCandidates.clear(),this.remoteDescSet=!1,this.pendingServerIce=[],this.audioElement&&(this.audioElement.pause(),this.audioElement.srcObject=null),this.dataChannel&&(this.dataChannel.close(),this.dataChannel=null),this.mediaBytesChannel&&(this.mediaBytesChannel.close(),this.mediaBytesChannel=null),this.pc&&(this.pc.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc.close(),this.pc=null),this.localStream&&(this.localStream.getTracks().forEach(t=>{try{t.stop()}catch{}}),this.localStream=null),this.connected=!1,(e=this.routeTracker)==null||e.stop(),this.callSessionLoaded=!1,this.sessionStartedEmitted=!1,this.serverUrl="",this.callId=void 0,this.micMuted=!1,this.iceServers=void 0,this.onDisconnected()}setMicrophoneMuted(e){var t,r;this.micMuted=e,(t=this.localStream)==null||t.getAudioTracks().forEach(i=>{i.enabled=!e}),(r=this.pc)==null||r.getSenders().forEach(i=>{var s;((s=i.track)==null?void 0:s.kind)==="audio"&&(i.track.enabled=!e)})}isMicrophoneMuted(){return this.micMuted}toggleMicrophoneMuted(){return this.setMicrophoneMuted(!this.micMuted),this.micMuted}isConnectCancelled(e){return e!==this.connectGeneration}dispatchBoardAbort(e,t,r){typeof window>"u"||window.dispatchEvent(new CustomEvent("vanira:board_abort",{detail:{reason:e,toolCallId:t,presetId:r}}))}sendToolResult(e,t){this.callId,this.sendEvent("client_tool_result",{call_id:this.callId,data:{tool_call_id:e,result:t},result:t}),this.emit("tool_result",{toolCallId:e,result:t})}sendToolAck(e){var t;((t=this.dataChannel)==null?void 0:t.readyState)==="open"&&this.dataChannel.send(JSON.stringify({event:"client_tool_ack",data:{tool_call_id:e}}))}sendContextUpdate(e){this.sendEvent("client_context_update",{data:{context:e}})}sendActionTrigger(e,t={}){this.sendEvent("client_action_trigger",{data:{action_name:e,data:t}})}triggerActionInterrupt(){this.sendEvent("action_interrupt")}sendMediaUpdate(e){if(!this.dataChannel||this.dataChannel.readyState!=="open")return!1;const t={event:"client_media_update",data:{media_id:e.media_id,media_url:e.media_url,content_type:e.content_type,reason:e.reason,message:e.message??""}};return this.dataChannel.send(JSON.stringify(t)),!0}async uploadMediaForToolResult(e,t="general"){return this._postMediaUpload(e,t)}async uploadMedia(e,t="general",r=""){return await Dw(this.dataChannel,this.mediaBytesChannel)?this._uploadMediaViaDataChannel(e,t,r):(Rw(this.dataChannel,this.mediaBytesChannel),this._uploadMediaViaHTTP(e,t,r))}async uploadMediaFrame(e,t="camera_capture",r){const i=r&&!(e instanceof File)?new File([e],r,{type:e.type||"image/jpeg"}):e,{media_id:s,url:a,contentType:o}=await this._postMediaUpload(i,t,!0);if(!s||!a)throw new Error("Frame upload failed: server response missing media_id or url");return{media_id:s,url:a,content_type:o}}async _uploadBytesViaDataChannel(e,t,r,i,s){if(!this.callId||!this.mediaBytesChannel)throw new Error("Upload failed: call not ready for WebRTC media upload.");const a=s||(e instanceof File?e.name:i==="frame"?"frame.jpg":"upload.bin"),o=e.type||(i==="frame"?"image/jpeg":"application/octet-stream"),A=await Ow(e);return Lw({bytes:A,filename:a,contentType:o,reason:t,message:r,callId:this.callId,mediaBytesChannel:this.mediaBytesChannel,sendControlEvent:(c,l)=>this.sendEvent(c,l),uploadKind:i})}async _uploadMediaViaDataChannel(e,t,r){const i=await this._uploadBytesViaDataChannel(e,t,r,"media");return{media_id:i.media_id,url:i.url}}async _uploadMediaViaHTTP(e,t="general",r=""){const{media_id:i,url:s,contentType:a}=await this._postMediaUpload(e,t,!0);return this.sendMediaUpdate({media_id:i,media_url:s,content_type:a,reason:t,message:r}),{media_id:i,url:s}}async _postMediaUpload(e,t,r=!1){if(!this.serverUrl)throw new Error("Upload failed: serverUrl is not set. Connect the VaniraClient first.");if(!this.callId)throw new Error("Upload failed: callId is missing.");const i=this.getWorkerOrigin();if(!i)throw new Error("Upload failed: worker_url is not set. Connect the call before uploading media.");const s=`${i}/media/upload`,a=new FormData;a.append("file",e),a.append("call_id",this.callId),a.append("reason",t);const o=await fetch(s,{method:"POST",body:a});if(!o.ok){let u=`HTTP ${o.status}`;try{u=(await o.json()).error||u}catch{}throw new Error(`Upload failed: ${u}`)}const A=await o.json(),c=A.media_id,l=A.url,d=A.content_type||e.type;if(!c||!l)throw new Error("Upload failed: server response missing media_id or url");return r?{media_id:c,url:l,contentType:d}:{media_id:c,url:l,contentType:d}}get status(){return this._status}get isConnected(){return this._status==="connected"}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){var r;return(r=this.listeners.get(e))==null||r.delete(t),this}emit(e,t){var r;(r=this.listeners.get(e))==null||r.forEach(i=>i(t))}async start(){return await this.connect(),{callId:this.callId||"",prospectId:this.prospectId||"",serverUrl:this.serverUrl||""}}stop(){this.disconnect(),this._status="disconnected"}sendToolError(e,t){this.sendToolResult(e,{status:"error",error:t})}updateContext(e){this.sendContextUpdate(e)}triggerInterrupt(e,t={}){this.triggerActionInterrupt(),this.sendActionTrigger(e,t)}interruptAudioOnly(){this.triggerActionInterrupt()}};L(pn,"inflightCreates",new Map);let Jo=pn;function Gw(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(r){if(r!=="default"&&!(r in n)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}})}),Object.freeze(n)}var qw=Object.defineProperty,Ww=(n,e,t)=>e in n?qw(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,F0=(n,e,t)=>Ww(n,typeof e!="symbol"?e+"":e,t);class kt{constructor(){F0(this,"_locking"),F0(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),r}}function et(n,e){if(!n)throw new Error(e)}const $w=34028234663852886e22,jw=-34028234663852886e22,Xw=4294967295,Jw=2147483647,Yw=-2147483648;function So(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Jw||n<Yw)throw new Error("invalid int 32: "+n)}function $l(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Xw||n<0)throw new Error("invalid uint 32: "+n)}function km(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>$w||n<jw))throw new Error("invalid float 32: "+n)}const Tm=Symbol("@bufbuild/protobuf/enum-type");function Zw(n){const e=n[Tm];return et(e,"missing enum type on enum object"),e}function Em(n,e,t,r){n[Tm]=Um(e,t.map(i=>({no:i.no,name:i.name,localName:n[i.no]})))}function Um(n,e,t){const r=Object.create(null),i=Object.create(null),s=[];for(const a of e){const o=Im(a);s.push(o),r[a.name]=o,i[a.no]=o}return{typeName:n,values:s,findName(a){return r[a]},findNumber(a){return i[a]}}}function eb(n,e,t){const r={};for(const i of e){const s=Im(i);r[s.localName]=s.no,r[s.no]=s.localName}return Em(r,n,e),r}function Im(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class hu{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const r=this.getType(),i=r.runtime.bin,s=i.makeReadOptions(t);return i.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const r=this.getType(),i=r.runtime.json,s=i.makeReadOptions(t);return i.readMessage(r,e,s,this),this}fromJsonString(e,t){let r;try{r=JSON.parse(e)}catch(i){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(i instanceof Error?i.message:String(i)))}return this.fromJson(r,t)}toBinary(e){const t=this.getType(),r=t.runtime.bin,i=r.makeWriteOptions(e),s=i.writerFactory();return r.writeMessage(this,s,i),s.finish()}toJson(e){const t=this.getType(),r=t.runtime.json,i=r.makeWriteOptions(e);return r.writeMessage(this,i)}toJsonString(e){var t;const r=this.toJson(e);return JSON.stringify(r,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function tb(n,e,t,r){var i;const s=(i=r==null?void 0:r.localName)!==null&&i!==void 0?i:e.substring(e.lastIndexOf(".")+1),a={[s]:function(o){n.util.initFields(this),n.util.initPartial(o,this)}}[s];return Object.setPrototypeOf(a.prototype,new hu),Object.assign(a,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(o,A){return new a().fromBinary(o,A)},fromJson(o,A){return new a().fromJson(o,A)},fromJsonString(o,A){return new a().fromJsonString(o,A)},equals(o,A){return n.util.equals(a,o,A)}}),a}function rb(){let n=0,e=0;for(let r=0;r<28;r+=7){let i=this.buf[this.pos++];if(n|=(i&127)<<r,!(i&128))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))return this.assertBounds(),[n,e];for(let r=3;r<=31;r+=7){let i=this.buf[this.pos++];if(e|=(i&127)<<r,!(i&128))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function Tc(n,e,t){for(let s=0;s<28;s=s+7){const a=n>>>s,o=!(!(a>>>7)&&e==0),A=(o?a|128:a)&255;if(t.push(A),!o)return}const r=n>>>28&15|(e&7)<<4,i=!!(e>>3);if(t.push((i?r|128:r)&255),!!i){for(let s=3;s<31;s=s+7){const a=e>>>s,o=!!(a>>>7),A=(o?a|128:a)&255;if(t.push(A),!o)return}t.push(e>>>31&1)}}const xo=4294967296;function _0(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let r=0,i=0;function s(a,o){const A=Number(n.slice(a,o));i*=t,r=r*t+A,r>=xo&&(i=i+(r/xo|0),r=r%xo)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?_m(r,i):fu(r,i)}function nb(n,e){let t=fu(n,e);const r=t.hi&2147483648;r&&(t=_m(t.lo,t.hi));const i=Fm(t.lo,t.hi);return r?"-"+i:i}function Fm(n,e){var t=ib(n,e);if(n=t.lo,e=t.hi,e<=2097151)return String(xo*e+n);const r=n&16777215,i=(n>>>24|e<<8)&16777215,s=e>>16&65535;let a=r+i*6777216+s*6710656,o=i+s*8147497,A=s*2;const c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(A+=Math.floor(o/c),o%=c),A.toString()+M0(o)+M0(a)}function ib(n,e){return{lo:n>>>0,hi:e>>>0}}function fu(n,e){return{lo:n|0,hi:e|0}}function _m(n,e){return e=~e,n?n=~n+1:e+=1,fu(n,e)}const M0=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Q0(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function sb(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function ab(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const i=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),a=BigInt("0"),o=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(A){const c=typeof A=="bigint"?A:BigInt(A);if(c>s||c<i)throw new Error("int64 invalid: ".concat(A));return c},uParse(A){const c=typeof A=="bigint"?A:BigInt(A);if(c>o||c<a)throw new Error("uint64 invalid: ".concat(A));return c},enc(A){return n.setBigInt64(0,this.parse(A),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(A){return n.setBigInt64(0,this.uParse(A),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(A,c){return n.setInt32(0,A,!0),n.setInt32(4,c,!0),n.getBigInt64(0,!0)},uDec(A,c){return n.setInt32(0,A,!0),n.setInt32(4,c,!0),n.getBigUint64(0,!0)}}}const t=i=>et(/^-?[0-9]+$/.test(i),"int64 invalid: ".concat(i)),r=i=>et(/^[0-9]+$/.test(i),"uint64 invalid: ".concat(i));return{zero:"0",supported:!1,parse(i){return typeof i!="string"&&(i=i.toString()),t(i),i},uParse(i){return typeof i!="string"&&(i=i.toString()),r(i),i},enc(i){return typeof i!="string"&&(i=i.toString()),t(i),_0(i)},uEnc(i){return typeof i!="string"&&(i=i.toString()),r(i),_0(i)},dec(i,s){return nb(i,s)},uDec(i,s){return Fm(i,s)}}}const Ge=ab();var K;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(K||(K={}));var Jn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(Jn||(Jn={}));function Mn(n,e,t){if(e===t)return!0;if(n==K.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}switch(n){case K.UINT64:case K.FIXED64:case K.INT64:case K.SFIXED64:case K.SINT64:return e==t}return!1}function ls(n,e){switch(n){case K.BOOL:return!1;case K.UINT64:case K.FIXED64:case K.INT64:case K.SFIXED64:case K.SINT64:return e==0?Ge.zero:"0";case K.DOUBLE:case K.FLOAT:return 0;case K.BYTES:return new Uint8Array(0);case K.STRING:return"";default:return 0}}function Mm(n,e){switch(n){case K.BOOL:return e===!1;case K.STRING:return e==="";case K.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}function P0(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function ob(n){if(Array.isArray(n))return n}function Se(n,e,t){return(e=db(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Ab(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var r,i,s,a,o=[],A=!0,c=!1;try{if(s=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;A=!1}else for(;!(A=(r=s.call(t)).done)&&(o.push(r.value),o.length!==e);A=!0);}catch(l){c=!0,i=l}finally{try{if(!A&&t.return!=null&&(a=t.return(),Object(a)!==a))return}finally{if(c)throw i}}return o}}function cb(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
17
+ `,n.appendChild(e),document.body.appendChild(n),(t=e.querySelector("#vanira-stall-refresh"))==null||t.addEventListener("click",()=>{Wl(),window.location.reload()}),(r=e.querySelector("#vanira-stall-dismiss"))==null||r.addEventListener("click",()=>Wl())}let li=null;const Vw=4e3;function du(n){if(typeof window>"u")return n||"/";const e=(n||"/").trim();if(!e)return"/";try{const t=new URL(e,window.location.origin);return t.origin!==window.location.origin?e:`${t.pathname}${t.search}${t.hash}`||"/"}catch{return e.startsWith("/")?e:`/${e}`}}function uu(n,e){li={targetRoute:du(n),presetId:e==null?void 0:e.presetId,toolName:e==null?void 0:e.toolName,expiresAt:Date.now()+Vw}}function zw(n){if(!li)return null;if(Date.now()>li.expiresAt)return li=null,null;const e=du(n),t=li.targetRoute;if(!(e===t||e.startsWith(t.split("#")[0])||t.startsWith(e.split("#")[0])))return null;const i=li;return li=null,i}function Ls(){return typeof window>"u"?"/":`${window.location.pathname}${window.location.search}${window.location.hash}`||"/"}class xm{constructor(e){L(this,"active",!1);L(this,"initialSent",!1);L(this,"lastRoute","");L(this,"sendContext");L(this,"isReady");L(this,"cleanupFns",[]);L(this,"initialRetryTimer",null);L(this,"routePollTimer",null);L(this,"originalPushState",null);L(this,"originalReplaceState",null);this.sendContext=e.sendContext,this.isReady=e.isReady??(()=>!0)}start(){typeof window>"u"||this.active||(this.active=!0,this.initialSent=!1,this.lastRoute=Ls(),this.attachListeners(),this.scheduleInitialContextSend())}stop(){if(!(!this.active&&this.cleanupFns.length===0)){this.active=!1,this.initialSent=!1,this.initialRetryTimer!==null&&(clearTimeout(this.initialRetryTimer),this.initialRetryTimer=null),this.routePollTimer!==null&&(clearInterval(this.routePollTimer),this.routePollTimer=null);for(const e of this.cleanupFns)try{e()}catch{}this.cleanupFns.length=0,this.originalPushState&&(history.pushState=this.originalPushState,this.originalPushState=null),this.originalReplaceState&&(history.replaceState=this.originalReplaceState,this.originalReplaceState=null)}}onChannelReady(){this.scheduleInitialContextSend()}scheduleInitialContextSend(e=0){if(!(!this.active||this.initialSent)){if(this.isReady()){this.sendRouteContext("call_started"),this.initialSent=!0;return}e>=30||(this.initialRetryTimer=window.setTimeout(()=>this.scheduleInitialContextSend(e+1),100))}}attachListeners(){const e=(s,a=0)=>{const o=()=>{const A=Ls();A!==this.lastRoute&&this.handleRouteChange(A,s)};a>0?window.setTimeout(o,a):queueMicrotask(o)},t=()=>e("popstate"),r=()=>e("hashchange"),i=s=>{const a=s.detail;if((a==null?void 0:a.initiated_by)==="agent"){e("vanira_navigate_agent",120);return}e("vanira_navigate",120)};window.addEventListener("popstate",t),window.addEventListener("hashchange",r),window.addEventListener("vanira:navigate",i),this.cleanupFns.push(()=>window.removeEventListener("popstate",t),()=>window.removeEventListener("hashchange",r),()=>window.removeEventListener("vanira:navigate",i)),this.originalPushState=history.pushState.bind(history),this.originalReplaceState=history.replaceState.bind(history),history.pushState=(...s)=>{this.originalPushState(...s),e("pushState")},history.replaceState=(...s)=>{this.originalReplaceState(...s),e("replaceState")},this.routePollTimer=window.setInterval(()=>{if(!this.active)return;const s=Ls();s!==this.lastRoute&&this.handleRouteChange(s,"location_poll")},1e3)}handleRouteChange(e,t){if(!this.active)return;const r=this.lastRoute;if(r===e)return;if(this.lastRoute=e,!this.initialSent){this.scheduleInitialContextSend();return}!this.isReady()||zw(e)||this.sendRouteContext("route_changed",r,t,"user")}sendRouteContext(e,t,r,i="user"){const s=Ls();this.lastRoute=s;const a={ui_state:"page_navigation",navigation_led_by:i,current_route:s,current_page:s,user_action:e==="call_started"?"call_started_on_page":"user_navigated"};e==="call_started"?a.message=`User started the call while viewing ${s}.`:(a.previous_route=t??"",a.message=`User navigated from ${t||"(unknown)"} to ${s}.`,r&&(a.navigation_source=r));try{this.sendContext(a)}catch{}}}const pn=class pn{constructor(e){L(this,"serverUrl");L(this,"agentId");L(this,"callId");L(this,"prospectId");L(this,"apiKey");L(this,"backendUrl");L(this,"token");L(this,"prospectName");L(this,"welcomeMessage");L(this,"extraDetails");L(this,"onConnected");L(this,"onDisconnected");L(this,"onError");L(this,"onTranscription");L(this,"onLocalStream");L(this,"onRemoteTrack");L(this,"onClientToolCall");L(this,"onSessionStarted");L(this,"sessionStartedEmitted",!1);L(this,"pc",null);L(this,"dataChannel",null);L(this,"mediaBytesChannel",null);L(this,"audioElement",null);L(this,"localStream",null);L(this,"micMuted",!1);L(this,"connected",!1);L(this,"appliedRemoteCandidates",new Set);L(this,"remoteDescSet",!1);L(this,"pendingServerIce",[]);L(this,"icePollStop",!1);L(this,"iceServers");L(this,"callSessionLoaded",!1);L(this,"connectGeneration",0);L(this,"runtime");L(this,"sessionBehavior");L(this,"routeTracker",null);L(this,"_status","idle");L(this,"listeners",new Map);L(this,"liveVision");L(this,"liveVisionAutoStarted",!1);L(this,"connectStallTimeoutMs");var A;if(!e.agentId)throw new Error("agentId is required");const t=!!(e.apiKey||e.token),r=!!(e.serverUrl&&e.callId),i=pn.normalizeIceServers(e.iceServers);if(!t&&!r)throw new Error("apiKey or token is required — or pass serverUrl and callId from a prior POST /calls/create");this.agentId=e.agentId,this.sessionBehavior=e.sessionBehavior,this.serverUrl=(e.serverUrl||"").replace(/\/$/,""),this.apiKey=e.apiKey,this.token=e.token,this.prospectName=e.prospectName,this.welcomeMessage=((A=e.welcomeMessage)==null?void 0:A.trim())||void 0,this.extraDetails=e.extraDetails,this.backendUrl=(e.backendUrl||vw).replace(/\/$/,""),i.length&&(this.iceServers=i),r&&(this.callSessionLoaded=!0);const s=typeof window<"u";this.prospectId=e.prospectId;const a=e.sessionBehavior==="continue";if(a&&s&&!e.callId){const c=Xo(this.agentId);c&&(e.callId||(this.callId=c.callId),!this.prospectId&&c.prospectId&&(this.prospectId=c.prospectId))}if(!this.prospectId&&s)try{const c=Xo(this.agentId);this.prospectId=(c==null?void 0:c.prospectId)||window.sessionStorage&&window.sessionStorage.getItem("vanira_prospect_id")||window.localStorage&&window.localStorage.getItem("vanira_prospect_id")||void 0}catch{}e.callId?this.callId=e.callId:a||(this.callId=void 0);const o=e.onSessionStarted;this.onSessionStarted=c=>{o==null||o(c),this.emit("session_started",c)},this.liveVision=e.liveVision,this.connectStallTimeoutMs=e.connectStallTimeoutMs??15e3,this.onConnected=()=>{var c;Ds(),this._status="connected",(c=e.onConnected)==null||c.call(e),this.emit("connected"),this.maybeAutoStartLiveCamera()},this.onDisconnected=()=>{var c;Ds(),this._status="disconnected",(c=e.onDisconnected)==null||c.call(e),this.emit("disconnected")},this.onError=c=>{var d;Ds(),this._status="error";const l=typeof c=="string"?c:(c==null?void 0:c.message)||"Connection error";(d=e.onError)==null||d.call(e,c),this.emit("error",l)},this.onTranscription=(c,l,d)=>{var u;(u=e.onTranscription)==null||u.call(e,c,l),this.emit("transcription",{text:c,isFinal:l,role:d})},this.onLocalStream=e.onLocalStream||(()=>{}),this.onRemoteTrack=(c,l)=>{var d;(d=e.onRemoteTrack)==null||d.call(e,c,l),this.emit("track",{track:c,stream:l})},this.onClientToolCall=c=>{var u;(u=e.onClientToolCall)==null||u.call(e,c);const l=(c==null?void 0:c.data)||c,d={name:String(l.name||l.tool_name||""),arguments:l.arguments||l.args||{},tool_call_id:String(l.tool_call_id||l.call_id||""),execution_mode:l.execution_mode==="blocking"?"blocking":"fire_and_forget",client_fields:l.client_fields||{}};d.name&&d.tool_call_id&&this.emit("tool_call",d)},this.runtime=e.runtime,typeof window<"u"&&e.trackRouteContext!==!1&&(this.routeTracker=new xm({sendContext:c=>this.sendContextUpdate(c),isReady:()=>{var c;return((c=this.dataChannel)==null?void 0:c.readyState)==="open"}}))}async createCall(){return this.connect()}async connect(){var t;this._status="connecting",this.connectStallTimeoutMs>0&&Nw(this.connectStallTimeoutMs);const e=++this.connectGeneration;if(await this.loadCallSession(),!this.isConnectCancelled(e)){if(!this.serverUrl)throw new Error("[VaniraClient] worker_url missing from /calls/create");if(!this.callId)throw new Error("[VaniraClient] call_id missing — must come from POST /calls/create");if(this.onSessionStarted&&this.prospectId&&this.callId&&!this.sessionStartedEmitted)try{this.onSessionStarted({prospectId:this.prospectId,callId:this.callId,serverUrl:this.serverUrl}),this.sessionStartedEmitted=!0}catch{}try{this.appliedRemoteCandidates.clear(),this.remoteDescSet=!1,this.pendingServerIce=[],this.icePollStop=!1,this.stopRemoteIcePolling();const r=this.getIceServers();this.pc=new RTCPeerConnection({iceServers:r,iceTransportPolicy:"all"});let i;try{i=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:{ideal:16e3},channelCount:1}})}catch(d){if(d.name==="NotAllowedError"||d.name==="PermissionDeniedError"||(t=d.message)!=null&&t.includes("Permission denied")){const u=navigator.userAgent,h=/iPad|iPhone|iPod/.test(u)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;let p="Microphone access denied. Please allow microphone access in your browser settings.";h&&(u.includes("CriOS")?p="Microphone access blocked. Please enable it in iOS Settings > Chrome > Microphone, then reload the page.":u.includes("FxiOS")?p="Microphone access blocked. Please enable it in iOS Settings > Firefox > Microphone, then reload the page.":p="Microphone access blocked. Please enable it in iOS Settings > Safari > Microphone (or tap 'aA' > Website Settings > Allow Microphone).");const m=new Error(p);throw m.name=d.name,m}throw d}if(this.isConnectCancelled(e)){i.getTracks().forEach(d=>d.stop());return}if(this.localStream=i,!this.pc||this.isConnectCancelled(e)){i.getTracks().forEach(d=>d.stop());return}if(this.onLocalStream(i),i.getTracks().forEach(d=>{var u;(u=this.pc)==null||u.addTrack(d,i)}),!this.pc)throw new Error("RTCPeerConnection was closed unexpectedly");this.dataChannel=this.pc.createDataChannel("control"),this.dataChannel.onopen=()=>{var d;(d=this.routeTracker)==null||d.onChannelReady()},this.dataChannel.onmessage=d=>{if(typeof d.data=="string")try{this.handleControlEvent(JSON.parse(d.data))}catch{}else if(d.data instanceof ArrayBuffer)try{const u=new TextDecoder().decode(d.data);try{const h=JSON.parse(u);Sm(h)&&this.handleControlEvent(h)}catch{}}catch{}else d.data instanceof Blob&&d.data.text().then(u=>{try{this.handleControlEvent(JSON.parse(u))}catch{}})},this.dataChannel.onerror=d=>{},this.mediaBytesChannel=this.pc.createDataChannel("media-bytes",{ordered:!0}),this.mediaBytesChannel.binaryType="arraybuffer",this.mediaBytesChannel.onopen=()=>{},this.mediaBytesChannel.onerror=d=>{},this.pc.ontrack=d=>{const u=d.track,h=d.streams[0];u.kind==="audio"?(this.audioElement=new Audio,this.audioElement.srcObject=h,this.audioElement.play().catch(p=>{}),this.audioElement.onended=()=>{this.sendEvent("playedStream"),typeof window<"u"&&window.dispatchEvent(new CustomEvent("vanira:agent-playback-ended"))},this.onRemoteTrack(u,h)):u.kind==="video"&&this.onRemoteTrack(u,h)};const s=()=>{var h,p,m,v,y,B,T,w,C,k,I;const d=((h=this.pc)==null?void 0:h.connectionState)==="connected"||((p=this.pc)==null?void 0:p.iceConnectionState)==="connected"||((m=this.pc)==null?void 0:m.iceConnectionState)==="completed",u=((v=this.pc)==null?void 0:v.connectionState)==="failed"||((y=this.pc)==null?void 0:y.iceConnectionState)==="failed"||((B=this.pc)==null?void 0:B.connectionState)==="closed"||((T=this.pc)==null?void 0:T.iceConnectionState)==="closed"||((w=this.pc)==null?void 0:w.connectionState)==="disconnected"||((C=this.pc)==null?void 0:C.iceConnectionState)==="disconnected";((k=this.pc)==null?void 0:k.connectionState)==="connected"&&this.stopRemoteIcePolling(),d&&!this.connected?(this.connected=!0,(I=this.routeTracker)==null||I.start(),this.onConnected()):u&&this.connected&&(this.connected=!1,this.liveVisionAutoStarted=!1,this.onDisconnected())};this.pc.onconnectionstatechange=s,this.pc.oniceconnectionstatechange=s;const a=this.getIceTrickleUrl();this.pc.onicecandidate=d=>{d.candidate&&this.sendRemoteIceCandidate(d.candidate,a)};const o=await this.pc.createOffer();if(this.isConnectCancelled(e)||(await this.pc.setLocalDescription(o),this.isConnectCancelled(e)))return;const A=this.serverUrl.includes("?")?this.serverUrl:`${this.serverUrl}/webrtc?agent=${this.agentId}_${this.callId}`,c=await fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({offer:this.pc.localDescription,agentId:this.agentId,callId:this.callId})});if(this.isConnectCancelled(e))return;if(!c.ok){const d=await c.json();throw new Error(d.error||`HTTP ${c.status}`)}const{answer:l}=await c.json();if(this.isConnectCancelled(e)||!this.pc||(await this.pc.setRemoteDescription(l),this.isConnectCancelled(e))||(this.remoteDescSet=!0,await this.flushPendingServerIce(),this.isConnectCancelled(e)))return;this.startRemoteIcePolling(a)}catch(r){if(this.isConnectCancelled(e))return;throw this.disconnect(),this.onError(r.message||r),r}}}createCallCacheKey(e,t){const r=this.apiKey?`key:${this.apiKey.slice(0,16)}`:`token:${(this.token||"").slice(-16)}`;return[this.backendUrl,this.agentId,e,t||"",this.prospectId||"",r].join("|")}async postCreateCall(e,t,r){var o,A,c;const i=await fetch(`${this.backendUrl}/calls/create`,{method:"POST",headers:e,body:JSON.stringify({agent_id:this.agentId,type:((o=this.runtime)==null?void 0:o.callType)||"web",mode:t,...(A=this.runtime)!=null&&A.runtimeName?{runtime:this.runtime.runtimeName}:{},prospect_id:this.prospectId,...this.prospectName?{prospect_name:this.prospectName}:{},...this.welcomeMessage?{welcome_message:this.welcomeMessage}:{},...this.extraDetails&&Object.keys(this.extraDetails).length?{extra_details:this.extraDetails}:{},...r?{call_id:r}:{}})});if(!i.ok){const l=await i.json().catch(()=>({}));throw new Error(`[VaniraClient] createCall failed (${i.status}): ${((c=l==null?void 0:l.detail)==null?void 0:c.message)||(l==null?void 0:l.message)||i.statusText}`)}const s=await i.json();if(!s.call_id||!s.worker_url)throw new Error("[VaniraClient] /calls/create response missing call_id or worker_url");const a=pn.normalizeIceServers(s.ice_servers);if(!a.length)throw new Error("[VaniraClient] /calls/create response missing ice_servers");return{callId:s.call_id,prospectId:s.prospect_id||this.prospectId,serverUrl:s.worker_url.replace(/\/$/,""),iceServers:a}}applyCreateCallSession(e){if(this.callId=e.callId,this.prospectId=e.prospectId||this.prospectId,this.serverUrl=e.serverUrl,this.iceServers=e.iceServers,this.callSessionLoaded=!0,Cm(this.agentId,this.callId||"",this.prospectId),this.onSessionStarted&&this.prospectId&&this.callId&&!this.sessionStartedEmitted)try{this.onSessionStarted({prospectId:this.prospectId,callId:this.callId,serverUrl:this.serverUrl}),this.sessionStartedEmitted=!0}catch{}}async loadCallSession(){if(this.callSessionLoaded)return;if(this.serverUrl&&this.callId){this.callSessionLoaded=!0;return}if(!this.apiKey&&!this.token)throw new Error("[VaniraClient] apiKey or token is required to create a call session");const e={"Content-Type":"application/json"};this.apiKey?e["X-API-Key"]=this.apiKey:this.token&&(e.Authorization=this.token.startsWith("Bearer ")?this.token:`Bearer ${this.token}`);const t=this.sessionBehavior==="continue"?this.callId:void 0,r=this.sessionBehavior==="continue"?"continue":"new",i=this.createCallCacheKey(r,t);let s=pn.inflightCreates.get(i);s||(s=this.postCreateCall(e,r,t),pn.inflightCreates.set(i,s),s.finally(()=>{pn.inflightCreates.get(i)===s&&pn.inflightCreates.delete(i)}));const a=await s;this.applyCreateCallSession(a)}getIceServers(){var e;if((e=this.iceServers)!=null&&e.length)return this.iceServers;throw new Error("[VaniraClient] ice_servers missing — pass iceServers from POST /calls/create")}static normalizeIceServers(e){if(!Array.isArray(e))return[];const t=[];for(const r of e){const i=r==null?void 0:r.urls,s=Array.isArray(i)?i.filter(Boolean):typeof i=="string"&&i.trim()?[i.trim()]:[];if(!s.length)continue;const a={urls:s.length===1?s[0]:s},o=r.username,A=r.credential;o&&(a.username=o),A&&(a.credential=A),t.push(a)}return t}getWorkerOrigin(){var e;if(!((e=this.serverUrl)!=null&&e.trim()))return"";try{return new URL(this.serverUrl).origin}catch{return this.serverUrl.replace(/\/webrtc.*$/,"").replace(/\/$/,"")}}getIceTrickleUrl(){try{const e=new URL(this.serverUrl);return e.pathname.endsWith("/webrtc")?e.pathname=`${e.pathname}/ice`:e.pathname="/webrtc/ice",e.toString()}catch{return`${this.getWorkerOrigin()}/webrtc/ice?agent_id=${this.agentId}&call_id=${this.callId}`}}async sendRemoteIceCandidate(e,t){try{const r=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({candidate:e.toJSON()})});if(r.ok){const i=await r.json();await this.applyServerIceCandidates(i.candidates)}}catch{}}async applyServerIceCandidates(e){if(!(!this.pc||!(e!=null&&e.length))){if(!this.remoteDescSet){this.pendingServerIce.push(...e);return}for(const t of e){const r=JSON.stringify(t);if(!this.appliedRemoteCandidates.has(r)){this.appliedRemoteCandidates.add(r);try{await this.pc.addIceCandidate(t)}catch{}}}}}async flushPendingServerIce(){if(!this.pc||!this.remoteDescSet||this.pendingServerIce.length===0)return;const e=this.pendingServerIce;this.pendingServerIce=[];for(const t of e){const r=JSON.stringify(t);if(!this.appliedRemoteCandidates.has(r)){this.appliedRemoteCandidates.add(r);try{await this.pc.addIceCandidate(t)}catch{}}}}startRemoteIcePolling(e){this.icePollStop=!1,this.pollServerIce(e)}async pollServerIce(e){var r;const t=Date.now()+15e3;for(;!this.icePollStop&&Date.now()<t;){const i=(r=this.pc)==null?void 0:r.connectionState;if(i==="connected"||i==="failed"||i==="closed")break;try{const s=await fetch(e,{method:"GET"});if(s.ok){const a=await s.json();if(await this.applyServerIceCandidates(a.candidates),a.done&&(!a.candidates||a.candidates.length===0))break}}catch{}await new Promise(s=>setTimeout(s,150))}}stopRemoteIcePolling(){this.icePollStop=!0}sendEvent(e,t={}){var r;if(((r=this.dataChannel)==null?void 0:r.readyState)==="open"){const i={event:e,...t};this.dataChannel.send(JSON.stringify(i))}}async sendEventWhenReady(e,t={},r=1e4){var s;const i=Date.now()+r;for(;Date.now()<i;){if(((s=this.dataChannel)==null?void 0:s.readyState)==="open")return this.sendEvent(e,t),!0;await new Promise(a=>setTimeout(a,50))}return!1}startLiveCamera(e={}){const t={...this.liveVision,...e};this.emit("tool_call",this.buildOpenLiveCameraToolCall(t))}buildOpenLiveCameraToolCall(e={}){const t=e.scope??"until_call_end";return{name:"open_live_camera",tool_call_id:`lv_${crypto.randomUUID()}`,execution_mode:"fire_and_forget",client_fields:{preset_id:_.LiveVision},arguments:{mode:"live",scope:t,target_fps:e.target_fps??1,max_fps:e.max_fps??3,max_width:e.max_width??640,reason:e.reason??"camera_capture",facing_mode:e.facing_mode??"environment",show_preview:e.show_preview??!0,...t==="timed"&&e.duration_sec?{duration_sec:e.duration_sec}:{}}}}maybeAutoStartLiveCamera(){const e=this.liveVision;!(e!=null&&e.enabled)||e.scope!=="full_call"||this.liveVisionAutoStarted||(this.liveVisionAutoStarted=!0,this.emit("tool_call",this.buildOpenLiveCameraToolCall(e)))}handleControlEvent(e){var t;switch(e.event){case"clearAudio":this.dispatchBoardAbort("User interrupted while LaTeX was writing",void 0,_.WriteLatexText);break;case"transcription":{const r=e.data&&typeof e.data=="object"?e.data:{},i=String(e.text??r.text??"").trim(),s=e.isFinal??e.is_final??r.isFinal??r.is_final,a=s===void 0?!0:s===!0||s==="true",o=String(e.role??e.speaker??r.role??r.speaker??"").trim()||void 0;i&&this.onTranscription(i,a,o)}break;case"mark":break;case"client_tool_cancel":{const i=(e.data||e).tool_call_id||e.tool_call_id;this.dispatchBoardAbort("Tool cancelled by server",i);break}case"client_tool_call":{const r=e.tool_call||e.data||e,i=(r==null?void 0:r.tool_call_id)||(r==null?void 0:r.call_id)||e.tool_call_id||"";i&&((t=this.dataChannel)==null?void 0:t.readyState)==="open"&&this.dataChannel.send(JSON.stringify({event:"client_tool_ack",data:{tool_call_id:i}}));const s=(r==null?void 0:r.arguments)||(r==null?void 0:r.args)||{},a=(r==null?void 0:r.client_fields)||{},o=(r==null?void 0:r.name)||(r==null?void 0:r.tool_name)||"",A=lu(a,s,o);if(o==="end_call"){i&&this.sendToolResult(i,{status:"client_ack_end_call",message:"Ending call."}),window.setTimeout(()=>this.disconnect(),120);break}if(A){window.dispatchEvent(new CustomEvent("vanira:preset",{detail:{toolCall:r,client:this}})),this.onClientToolCall(r);break}this.onClientToolCall(r);break}}}disconnect(){var e;Ds(),this.connectGeneration++,this.stopRemoteIcePolling(),this.appliedRemoteCandidates.clear(),this.remoteDescSet=!1,this.pendingServerIce=[],this.audioElement&&(this.audioElement.pause(),this.audioElement.srcObject=null),this.dataChannel&&(this.dataChannel.close(),this.dataChannel=null),this.mediaBytesChannel&&(this.mediaBytesChannel.close(),this.mediaBytesChannel=null),this.pc&&(this.pc.getSenders().forEach(t=>{t.track&&t.track.stop()}),this.pc.close(),this.pc=null),this.localStream&&(this.localStream.getTracks().forEach(t=>{try{t.stop()}catch{}}),this.localStream=null),this.connected=!1,(e=this.routeTracker)==null||e.stop(),this.callSessionLoaded=!1,this.sessionStartedEmitted=!1,this.serverUrl="",this.callId=void 0,this.micMuted=!1,this.iceServers=void 0,this.onDisconnected()}setMicrophoneMuted(e){var t,r;this.micMuted=e,(t=this.localStream)==null||t.getAudioTracks().forEach(i=>{i.enabled=!e}),(r=this.pc)==null||r.getSenders().forEach(i=>{var s;((s=i.track)==null?void 0:s.kind)==="audio"&&(i.track.enabled=!e)})}isMicrophoneMuted(){return this.micMuted}toggleMicrophoneMuted(){return this.setMicrophoneMuted(!this.micMuted),this.micMuted}isConnectCancelled(e){return e!==this.connectGeneration}dispatchBoardAbort(e,t,r){typeof window>"u"||window.dispatchEvent(new CustomEvent("vanira:board_abort",{detail:{reason:e,toolCallId:t,presetId:r}}))}sendToolResult(e,t){this.callId,this.sendEvent("client_tool_result",{call_id:this.callId,data:{tool_call_id:e,result:t},result:t}),this.emit("tool_result",{toolCallId:e,result:t})}sendToolAck(e){var t;((t=this.dataChannel)==null?void 0:t.readyState)==="open"&&this.dataChannel.send(JSON.stringify({event:"client_tool_ack",data:{tool_call_id:e}}))}sendContextUpdate(e){this.sendEvent("client_context_update",{data:{context:e}})}sendActionTrigger(e,t={}){this.sendEvent("client_action_trigger",{data:{action_name:e,data:t}})}triggerActionInterrupt(){this.sendEvent("action_interrupt")}sendMediaUpdate(e){if(!this.dataChannel||this.dataChannel.readyState!=="open")return!1;const t={event:"client_media_update",data:{media_id:e.media_id,media_url:e.media_url,content_type:e.content_type,reason:e.reason,message:e.message??""}};return this.dataChannel.send(JSON.stringify(t)),!0}async uploadMediaForToolResult(e,t="general"){return this._postMediaUpload(e,t)}async uploadMedia(e,t="general",r=""){return await Dw(this.dataChannel,this.mediaBytesChannel)?this._uploadMediaViaDataChannel(e,t,r):(Rw(this.dataChannel,this.mediaBytesChannel),this._uploadMediaViaHTTP(e,t,r))}async uploadMediaFrame(e,t="camera_capture",r){const i=r&&!(e instanceof File)?new File([e],r,{type:e.type||"image/jpeg"}):e,{media_id:s,url:a,contentType:o}=await this._postMediaUpload(i,t,!0);if(!s||!a)throw new Error("Frame upload failed: server response missing media_id or url");return{media_id:s,url:a,content_type:o}}async _uploadBytesViaDataChannel(e,t,r,i,s){if(!this.callId||!this.mediaBytesChannel)throw new Error("Upload failed: call not ready for WebRTC media upload.");const a=s||(e instanceof File?e.name:i==="frame"?"frame.jpg":"upload.bin"),o=e.type||(i==="frame"?"image/jpeg":"application/octet-stream"),A=await Ow(e);return Lw({bytes:A,filename:a,contentType:o,reason:t,message:r,callId:this.callId,mediaBytesChannel:this.mediaBytesChannel,sendControlEvent:(c,l)=>this.sendEvent(c,l),uploadKind:i})}async _uploadMediaViaDataChannel(e,t,r){const i=await this._uploadBytesViaDataChannel(e,t,r,"media");return{media_id:i.media_id,url:i.url}}async _uploadMediaViaHTTP(e,t="general",r=""){const{media_id:i,url:s,contentType:a}=await this._postMediaUpload(e,t,!0);return this.sendMediaUpdate({media_id:i,media_url:s,content_type:a,reason:t,message:r}),{media_id:i,url:s}}async _postMediaUpload(e,t,r=!1){if(!this.serverUrl)throw new Error("Upload failed: serverUrl is not set. Connect the VaniraClient first.");if(!this.callId)throw new Error("Upload failed: callId is missing.");const i=this.getWorkerOrigin();if(!i)throw new Error("Upload failed: worker_url is not set. Connect the call before uploading media.");const s=`${i}/media/upload`,a=new FormData;a.append("file",e),a.append("call_id",this.callId),a.append("reason",t);const o=await fetch(s,{method:"POST",body:a});if(!o.ok){let u=`HTTP ${o.status}`;try{u=(await o.json()).error||u}catch{}throw new Error(`Upload failed: ${u}`)}const A=await o.json(),c=A.media_id,l=A.url,d=A.content_type||e.type;if(!c||!l)throw new Error("Upload failed: server response missing media_id or url");return r?{media_id:c,url:l,contentType:d}:{media_id:c,url:l,contentType:d}}get status(){return this._status}get isConnected(){return this._status==="connected"}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){var r;return(r=this.listeners.get(e))==null||r.delete(t),this}emit(e,t){var r;(r=this.listeners.get(e))==null||r.forEach(i=>i(t))}async start(){return await this.connect(),{callId:this.callId||"",prospectId:this.prospectId||"",serverUrl:this.serverUrl||""}}stop(){this.disconnect(),this._status="disconnected"}sendToolError(e,t){this.sendToolResult(e,{status:"error",error:t})}updateContext(e){this.sendContextUpdate(e)}triggerInterrupt(e,t={}){this.triggerActionInterrupt(),this.sendActionTrigger(e,t)}interruptAudioOnly(){this.triggerActionInterrupt()}};L(pn,"inflightCreates",new Map);let Jo=pn;function Gw(n,e){return e.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(r){if(r!=="default"&&!(r in n)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}})}),Object.freeze(n)}var qw=Object.defineProperty,Ww=(n,e,t)=>e in n?qw(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,F0=(n,e,t)=>Ww(n,typeof e!="symbol"?e+"":e,t);class kt{constructor(){F0(this,"_locking"),F0(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){this._locks+=1;let e;const t=new Promise(i=>e=()=>{this._locks-=1,i()}),r=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),r}}function et(n,e){if(!n)throw new Error(e)}const $w=34028234663852886e22,jw=-34028234663852886e22,Xw=4294967295,Jw=2147483647,Yw=-2147483648;function So(n){if(typeof n!="number")throw new Error("invalid int 32: "+typeof n);if(!Number.isInteger(n)||n>Jw||n<Yw)throw new Error("invalid int 32: "+n)}function $l(n){if(typeof n!="number")throw new Error("invalid uint 32: "+typeof n);if(!Number.isInteger(n)||n>Xw||n<0)throw new Error("invalid uint 32: "+n)}function km(n){if(typeof n!="number")throw new Error("invalid float 32: "+typeof n);if(Number.isFinite(n)&&(n>$w||n<jw))throw new Error("invalid float 32: "+n)}const Tm=Symbol("@bufbuild/protobuf/enum-type");function Zw(n){const e=n[Tm];return et(e,"missing enum type on enum object"),e}function Em(n,e,t,r){n[Tm]=Um(e,t.map(i=>({no:i.no,name:i.name,localName:n[i.no]})))}function Um(n,e,t){const r=Object.create(null),i=Object.create(null),s=[];for(const a of e){const o=Im(a);s.push(o),r[a.name]=o,i[a.no]=o}return{typeName:n,values:s,findName(a){return r[a]},findNumber(a){return i[a]}}}function eb(n,e,t){const r={};for(const i of e){const s=Im(i);r[s.localName]=s.no,r[s.no]=s.localName}return Em(r,n,e),r}function Im(n){return"localName"in n?n:Object.assign(Object.assign({},n),{localName:n.name})}class hu{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const r=this.getType(),i=r.runtime.bin,s=i.makeReadOptions(t);return i.readMessage(this,s.readerFactory(e),e.byteLength,s),this}fromJson(e,t){const r=this.getType(),i=r.runtime.json,s=i.makeReadOptions(t);return i.readMessage(r,e,s,this),this}fromJsonString(e,t){let r;try{r=JSON.parse(e)}catch(i){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(i instanceof Error?i.message:String(i)))}return this.fromJson(r,t)}toBinary(e){const t=this.getType(),r=t.runtime.bin,i=r.makeWriteOptions(e),s=i.writerFactory();return r.writeMessage(this,s,i),s.finish()}toJson(e){const t=this.getType(),r=t.runtime.json,i=r.makeWriteOptions(e);return r.writeMessage(this,i)}toJsonString(e){var t;const r=this.toJson(e);return JSON.stringify(r,null,(t=e==null?void 0:e.prettySpaces)!==null&&t!==void 0?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function tb(n,e,t,r){var i;const s=(i=r==null?void 0:r.localName)!==null&&i!==void 0?i:e.substring(e.lastIndexOf(".")+1),a={[s]:function(o){n.util.initFields(this),n.util.initPartial(o,this)}}[s];return Object.setPrototypeOf(a.prototype,new hu),Object.assign(a,{runtime:n,typeName:e,fields:n.util.newFieldList(t),fromBinary(o,A){return new a().fromBinary(o,A)},fromJson(o,A){return new a().fromJson(o,A)},fromJsonString(o,A){return new a().fromJsonString(o,A)},equals(o,A){return n.util.equals(a,o,A)}}),a}function rb(){let n=0,e=0;for(let r=0;r<28;r+=7){let i=this.buf[this.pos++];if(n|=(i&127)<<r,!(i&128))return this.assertBounds(),[n,e]}let t=this.buf[this.pos++];if(n|=(t&15)<<28,e=(t&112)>>4,!(t&128))return this.assertBounds(),[n,e];for(let r=3;r<=31;r+=7){let i=this.buf[this.pos++];if(e|=(i&127)<<r,!(i&128))return this.assertBounds(),[n,e]}throw new Error("invalid varint")}function Tc(n,e,t){for(let s=0;s<28;s=s+7){const a=n>>>s,o=!(!(a>>>7)&&e==0),A=(o?a|128:a)&255;if(t.push(A),!o)return}const r=n>>>28&15|(e&7)<<4,i=!!(e>>3);if(t.push((i?r|128:r)&255),!!i){for(let s=3;s<31;s=s+7){const a=e>>>s,o=!!(a>>>7),A=(o?a|128:a)&255;if(t.push(A),!o)return}t.push(e>>>31&1)}}const xo=4294967296;function _0(n){const e=n[0]==="-";e&&(n=n.slice(1));const t=1e6;let r=0,i=0;function s(a,o){const A=Number(n.slice(a,o));i*=t,r=r*t+A,r>=xo&&(i=i+(r/xo|0),r=r%xo)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),e?_m(r,i):fu(r,i)}function nb(n,e){let t=fu(n,e);const r=t.hi&2147483648;r&&(t=_m(t.lo,t.hi));const i=Fm(t.lo,t.hi);return r?"-"+i:i}function Fm(n,e){var t=ib(n,e);if(n=t.lo,e=t.hi,e<=2097151)return String(xo*e+n);const r=n&16777215,i=(n>>>24|e<<8)&16777215,s=e>>16&65535;let a=r+i*6777216+s*6710656,o=i+s*8147497,A=s*2;const c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(A+=Math.floor(o/c),o%=c),A.toString()+M0(o)+M0(a)}function ib(n,e){return{lo:n>>>0,hi:e>>>0}}function fu(n,e){return{lo:n|0,hi:e|0}}function _m(n,e){return e=~e,n?n=~n+1:e+=1,fu(n,e)}const M0=n=>{const e=String(n);return"0000000".slice(e.length)+e};function Q0(n,e){if(n>=0){for(;n>127;)e.push(n&127|128),n=n>>>7;e.push(n)}else{for(let t=0;t<9;t++)e.push(n&127|128),n=n>>7;e.push(1)}}function sb(){let n=this.buf[this.pos++],e=n&127;if(!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<7,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<14,!(n&128))return this.assertBounds(),e;if(n=this.buf[this.pos++],e|=(n&127)<<21,!(n&128))return this.assertBounds(),e;n=this.buf[this.pos++],e|=(n&15)<<28;for(let t=5;n&128&&t<10;t++)n=this.buf[this.pos++];if(n&128)throw new Error("invalid varint");return this.assertBounds(),e>>>0}function ab(){const n=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof n.getBigInt64=="function"&&typeof n.getBigUint64=="function"&&typeof n.setBigInt64=="function"&&typeof n.setBigUint64=="function"&&(typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){const i=BigInt("-9223372036854775808"),s=BigInt("9223372036854775807"),a=BigInt("0"),o=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(A){const c=typeof A=="bigint"?A:BigInt(A);if(c>s||c<i)throw new Error("int64 invalid: ".concat(A));return c},uParse(A){const c=typeof A=="bigint"?A:BigInt(A);if(c>o||c<a)throw new Error("uint64 invalid: ".concat(A));return c},enc(A){return n.setBigInt64(0,this.parse(A),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},uEnc(A){return n.setBigInt64(0,this.uParse(A),!0),{lo:n.getInt32(0,!0),hi:n.getInt32(4,!0)}},dec(A,c){return n.setInt32(0,A,!0),n.setInt32(4,c,!0),n.getBigInt64(0,!0)},uDec(A,c){return n.setInt32(0,A,!0),n.setInt32(4,c,!0),n.getBigUint64(0,!0)}}}const t=i=>et(/^-?[0-9]+$/.test(i),"int64 invalid: ".concat(i)),r=i=>et(/^[0-9]+$/.test(i),"uint64 invalid: ".concat(i));return{zero:"0",supported:!1,parse(i){return typeof i!="string"&&(i=i.toString()),t(i),i},uParse(i){return typeof i!="string"&&(i=i.toString()),r(i),i},enc(i){return typeof i!="string"&&(i=i.toString()),t(i),_0(i)},uEnc(i){return typeof i!="string"&&(i=i.toString()),r(i),_0(i)},dec(i,s){return nb(i,s)},uDec(i,s){return Fm(i,s)}}}const Ge=ab();var K;(function(n){n[n.DOUBLE=1]="DOUBLE",n[n.FLOAT=2]="FLOAT",n[n.INT64=3]="INT64",n[n.UINT64=4]="UINT64",n[n.INT32=5]="INT32",n[n.FIXED64=6]="FIXED64",n[n.FIXED32=7]="FIXED32",n[n.BOOL=8]="BOOL",n[n.STRING=9]="STRING",n[n.BYTES=12]="BYTES",n[n.UINT32=13]="UINT32",n[n.SFIXED32=15]="SFIXED32",n[n.SFIXED64=16]="SFIXED64",n[n.SINT32=17]="SINT32",n[n.SINT64=18]="SINT64"})(K||(K={}));var Jn;(function(n){n[n.BIGINT=0]="BIGINT",n[n.STRING=1]="STRING"})(Jn||(Jn={}));function Mn(n,e,t){if(e===t)return!0;if(n==K.BYTES){if(!(e instanceof Uint8Array)||!(t instanceof Uint8Array)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}switch(n){case K.UINT64:case K.FIXED64:case K.INT64:case K.SFIXED64:case K.SINT64:return e==t}return!1}function ls(n,e){switch(n){case K.BOOL:return!1;case K.UINT64:case K.FIXED64:case K.INT64:case K.SFIXED64:case K.SINT64:return e==0?Ge.zero:"0";case K.DOUBLE:case K.FLOAT:return 0;case K.BYTES:return new Uint8Array(0);case K.STRING:return"";default:return 0}}function Mm(n,e){switch(n){case K.BOOL:return e===!1;case K.STRING:return e==="";case K.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}function P0(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function ob(n){if(Array.isArray(n))return n}function Se(n,e,t){return(e=db(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Ab(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var r,i,s,a,o=[],A=!0,c=!1;try{if(s=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;A=!1}else for(;!(A=(r=s.call(t)).done)&&(o.push(r.value),o.length!==e);A=!0);}catch(l){c=!0,i=l}finally{try{if(!A&&t.return!=null&&(a=t.return(),Object(a)!==a))return}finally{if(c)throw i}}return o}}function cb(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
18
18
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ae(n,e){return ob(n)||Ab(n,e)||ub(n,e)||cb()}function lb(n,e){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function db(n){var e=lb(n,"string");return typeof e=="symbol"?e:e+""}function ub(n,e){if(n){if(typeof n=="string")return P0(n,e);var t={}.toString.call(n).slice(8,-1);return t==="Object"&&n.constructor&&(t=n.constructor.name),t==="Map"||t==="Set"?Array.from(n):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?P0(n,e):void 0}}var ot;(function(n){n[n.Varint=0]="Varint",n[n.Bit64=1]="Bit64",n[n.LengthDelimited=2]="LengthDelimited",n[n.StartGroup=3]="StartGroup",n[n.EndGroup=4]="EndGroup",n[n.Bit32=5]="Bit32"})(ot||(ot={}));class hb{constructor(e){this.stack=[],this.textEncoder=e??new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let i=0;i<this.chunks.length;i++)e+=this.chunks[i].length;let t=new Uint8Array(e),r=0;for(let i=0;i<this.chunks.length;i++)t.set(this.chunks[i],r),r+=this.chunks[i].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for($l(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return So(e),Q0(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){km(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){$l(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){So(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return So(e),e=(e<<1^e>>31)>>>0,Q0(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),r=new DataView(t.buffer),i=Ge.enc(e);return r.setInt32(0,i.lo,!0),r.setInt32(4,i.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),r=new DataView(t.buffer),i=Ge.uEnc(e);return r.setInt32(0,i.lo,!0),r.setInt32(4,i.hi,!0),this.raw(t)}int64(e){let t=Ge.enc(e);return Tc(t.lo,t.hi,this.buf),this}sint64(e){let t=Ge.enc(e),r=t.hi>>31,i=t.lo<<1^r,s=(t.hi<<1|t.lo>>>31)^r;return Tc(i,s,this.buf),this}uint64(e){let t=Ge.uEnc(e);return Tc(t.lo,t.hi,this.buf),this}}class fb{constructor(e,t){this.varint64=rb,this.uint32=sb,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=t??new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,r=e&7;if(t<=0||r<0||r>5)throw new Error("illegal tag: field no "+t+" wire type "+r);return[t,r]}skip(e,t){let r=this.pos;switch(e){case ot.Varint:for(;this.buf[this.pos++]&128;);break;case ot.Bit64:this.pos+=4;case ot.Bit32:this.pos+=4;break;case ot.LengthDelimited:let i=this.uint32();this.pos+=i;break;case ot.StartGroup:for(;;){const s=this.tag(),a=ae(s,2),o=a[0],A=a[1];if(A===ot.EndGroup){if(t!==void 0&&o!==t)throw new Error("invalid end group tag");break}this.skip(A,o)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return Ge.dec(...this.varint64())}uint64(){return Ge.uDec(...this.varint64())}sint64(){let e=this.varint64(),t=ae(e,2),r=t[0],i=t[1],s=-(r&1);return r=(r>>>1|(i&1)<<31)^s,i=i>>>1^s,Ge.dec(r,i)}bool(){let e=this.varint64(),t=ae(e,2),r=t[0],i=t[1];return r!==0||i!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return Ge.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return Ge.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function pb(n,e,t,r){let i;return{typeName:e,extendee:t,get field(){if(!i){const s=typeof r=="function"?r():r;s.name=e.split(".").pop(),s.jsonName="[".concat(e,"]"),i=n.util.newFieldList([s]).list()[0]}return i},runtime:n}}function Qm(n){const e=n.field.localName,t=Object.create(null);return t[e]=mb(n),[t,()=>t[e]]}function mb(n){const e=n.field;if(e.repeated)return[];if(e.default!==void 0)return e.default;switch(e.kind){case"enum":return e.T.values[0].no;case"scalar":return ls(e.T,e.L);case"message":const t=e.T,r=new t;return t.fieldWrapper?t.fieldWrapper.unwrapField(r):r;case"map":throw"map fields are not allowed to be extensions"}}function gb(n,e){if(!e.repeated&&(e.kind=="enum"||e.kind=="scalar")){for(let t=n.length-1;t>=0;--t)if(n[t].no==e.no)return[n[t]];return[]}return n.filter(t=>t.no===e.no)}let vn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),PA=[];for(let n=0;n<vn.length;n++)PA[vn[n].charCodeAt(0)]=n;PA[45]=vn.indexOf("+");PA[95]=vn.indexOf("/");const Pm={dec(n){let e=n.length*3/4;n[n.length-2]=="="?e-=2:n[n.length-1]=="="&&(e-=1);let t=new Uint8Array(e),r=0,i=0,s,a=0;for(let o=0;o<n.length;o++){if(s=PA[n.charCodeAt(o)],s===void 0)switch(n[o]){case"=":i=0;case`
19
19
  `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(i){case 0:a=s,i=1;break;case 1:t[r++]=a<<2|(s&48)>>4,a=s,i=2;break;case 2:t[r++]=(a&15)<<4|(s&60)>>2,a=s,i=3;break;case 3:t[r++]=(a&3)<<6|s,i=0;break}}if(i==1)throw Error("invalid base64 string.");return t.subarray(0,r)},enc(n){let e="",t=0,r,i=0;for(let s=0;s<n.length;s++)switch(r=n[s],t){case 0:e+=vn[r>>2],i=(r&3)<<4,t=1;break;case 1:e+=vn[i|r>>4],i=(r&15)<<2,t=2;break;case 2:e+=vn[i|r>>6],e+=vn[r&63],t=0;break}return t&&(e+=vn[i],e+="=",t==1&&(e+="=")),e}};function vb(n,e,t){Dm(e,n);const r=e.runtime.bin.makeReadOptions(t),i=gb(n.getType().runtime.bin.listUnknownFields(n),e.field),s=Qm(e),a=ae(s,2),o=a[0],A=a[1];for(const c of i)e.runtime.bin.readField(o,r.readerFactory(c.data),e.field,c.wireType,r);return A()}function yb(n,e,t,r){Dm(e,n);const i=e.runtime.bin.makeReadOptions(r),s=e.runtime.bin.makeWriteOptions(r);if(Rm(n,e)){const c=n.getType().runtime.bin.listUnknownFields(n).filter(l=>l.no!=e.field.no);n.getType().runtime.bin.discardUnknownFields(n);for(const l of c)n.getType().runtime.bin.onUnknownField(n,l.no,l.wireType,l.data)}const a=s.writerFactory();let o=e.field;!o.opt&&!o.repeated&&(o.kind=="enum"||o.kind=="scalar")&&(o=Object.assign(Object.assign({},e.field),{opt:!0})),e.runtime.bin.writeField(o,t,a,s);const A=i.readerFactory(a.finish());for(;A.pos<A.len;){const c=A.tag(),l=ae(c,2),d=l[0],u=l[1],h=A.skip(u,d);n.getType().runtime.bin.onUnknownField(n,d,u,h)}}function Rm(n,e){const t=n.getType();return e.extendee.typeName===t.typeName&&!!t.runtime.bin.listUnknownFields(n).find(r=>r.no==e.field.no)}function Dm(n,e){et(n.extendee.typeName==e.getType().typeName,"extension ".concat(n.typeName," can only be applied to message ").concat(n.extendee.typeName))}function Lm(n,e){const t=n.localName;if(n.repeated)return e[t].length>0;if(n.oneof)return e[n.oneof.localName].case===t;switch(n.kind){case"enum":case"scalar":return n.opt||n.req?e[t]!==void 0:n.kind=="enum"?e[t]!==n.T.values[0].no:!Mm(n.T,e[t]);case"message":return e[t]!==void 0;case"map":return Object.keys(e[t]).length>0}}function R0(n,e){const t=n.localName,r=!n.opt&&!n.req;if(n.repeated)e[t]=[];else if(n.oneof)e[n.oneof.localName]={case:void 0};else switch(n.kind){case"map":e[t]={};break;case"enum":e[t]=r?n.T.values[0].no:void 0;break;case"scalar":e[t]=r?ls(n.T,n.L):void 0;break;case"message":e[t]=void 0;break}}function yn(n,e){if(n===null||typeof n!="object"||!Object.getOwnPropertyNames(hu.prototype).every(r=>r in n&&typeof n[r]=="function"))return!1;const t=n.getType();return t===null||typeof t!="function"||!("typeName"in t)||typeof t.typeName!="string"?!1:e===void 0?!0:t.typeName==e.typeName}function Om(n,e){return yn(e)||!n.fieldWrapper?e:n.fieldWrapper.wrapField(e)}K.DOUBLE,K.FLOAT,K.INT64,K.UINT64,K.INT32,K.UINT32,K.BOOL,K.STRING,K.BYTES;const D0={ignoreUnknownFields:!1},L0={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function wb(n){return n?Object.assign(Object.assign({},D0),n):D0}function bb(n){return n?Object.assign(Object.assign({},L0),n):L0}const Yo=Symbol(),ko=Symbol();function Bb(){return{makeReadOptions:wb,makeWriteOptions:bb,readMessage(n,e,t,r){if(e==null||Array.isArray(e)||typeof e!="object")throw new Error("cannot decode message ".concat(n.typeName," from JSON: ").concat(zr(e)));r=r??new n;const i=new Map,s=t.typeRegistry;for(const o of Object.entries(e)){var a=ae(o,2);const A=a[0],c=a[1],l=n.fields.findJsonName(A);if(l){if(l.oneof){if(c===null&&l.kind=="scalar")continue;const d=i.get(l.oneof);if(d!==void 0)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: multiple keys for oneof "').concat(l.oneof.name,'" present: "').concat(d,'", "').concat(A,'"'));i.set(l.oneof,A)}O0(r,c,l,t,n)}else{let d=!1;if(s!=null&&s.findExtension&&A.startsWith("[")&&A.endsWith("]")){const u=s.findExtension(A.substring(1,A.length-1));if(u&&u.extendee.typeName==n.typeName){d=!0;const h=Qm(u),p=ae(h,2),m=p[0],v=p[1];O0(m,c,u.field,t,u),yb(r,u,v(),t)}}if(!d&&!t.ignoreUnknownFields)throw new Error("cannot decode message ".concat(n.typeName,' from JSON: key "').concat(A,'" is unknown'))}}return r},writeMessage(n,e){const t=n.getType(),r={};let i;try{for(i of t.fields.byNumber()){if(!Lm(i,n)){if(i.req)throw"required field not set";if(!e.emitDefaultValues||!Sb(i))continue}const a=i.oneof?n[i.oneof.localName].value:n[i.localName],o=H0(i,a,e);o!==void 0&&(r[e.useProtoFieldName?i.name:i.jsonName]=o)}const s=e.typeRegistry;if(s!=null&&s.findExtensionFor)for(const a of t.runtime.bin.listUnknownFields(n)){const o=s.findExtensionFor(t.typeName,a.no);if(o&&Rm(n,o)){const A=vb(n,o,e),c=H0(o.field,A,e);c!==void 0&&(r[o.field.jsonName]=c)}}}catch(s){const a=i?"cannot encode field ".concat(t.typeName,".").concat(i.name," to JSON"):"cannot encode message ".concat(t.typeName," to JSON"),o=s instanceof Error?s.message:String(s);throw new Error(a+(o.length>0?": ".concat(o):""))}return r},readScalar(n,e,t){return Zs(n,e,t??Jn.BIGINT,!0)},writeScalar(n,e,t){if(e!==void 0&&(t||Mm(n,e)))return To(n,e)},debug:zr}}function zr(n){if(n===null)return"null";switch(typeof n){case"object":return Array.isArray(n)?"array":"object";case"string":return n.length>100?"string":'"'.concat(n.split('"').join('\\"'),'"');default:return String(n)}}function O0(n,e,t,r,i){let s=t.localName;if(t.repeated){if(et(t.kind!="map"),e===null)return;if(!Array.isArray(e))throw new Error("cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(e)));const o=n[s];for(const A of e){if(A===null)throw new Error("cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(A)));switch(t.kind){case"message":o.push(t.T.fromJson(A,r));break;case"enum":const c=Ec(t.T,A,r.ignoreUnknownFields,!0);c!==ko&&o.push(c);break;case"scalar":try{o.push(Zs(t.T,A,t.L,!0))}catch(l){let d="cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(A));throw l instanceof Error&&l.message.length>0&&(d+=": ".concat(l.message)),new Error(d)}break}}}else if(t.kind=="map"){if(e===null)return;if(typeof e!="object"||Array.isArray(e))throw new Error("cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(e)));const o=n[s];for(const A of Object.entries(e)){var a=ae(A,2);const c=a[0],l=a[1];if(l===null)throw new Error("cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: map value null"));let d;try{d=Cb(t.K,c)}catch(u){let h="cannot decode map key for field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(e));throw u instanceof Error&&u.message.length>0&&(h+=": ".concat(u.message)),new Error(h)}switch(t.V.kind){case"message":o[d]=t.V.T.fromJson(l,r);break;case"enum":const u=Ec(t.V.T,l,r.ignoreUnknownFields,!0);u!==ko&&(o[d]=u);break;case"scalar":try{o[d]=Zs(t.V.T,l,Jn.BIGINT,!0)}catch(h){let p="cannot decode map value for field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(e));throw h instanceof Error&&h.message.length>0&&(p+=": ".concat(h.message)),new Error(p)}break}}}else switch(t.oneof&&(n=n[t.oneof.localName]={case:s},s="value"),t.kind){case"message":const o=t.T;if(e===null&&o.typeName!="google.protobuf.Value")return;let A=n[s];yn(A)?A.fromJson(e,r):(n[s]=A=o.fromJson(e,r),o.fieldWrapper&&!t.oneof&&(n[s]=o.fieldWrapper.unwrapField(A)));break;case"enum":const c=Ec(t.T,e,r.ignoreUnknownFields,!1);switch(c){case Yo:R0(t,n);break;case ko:break;default:n[s]=c;break}break;case"scalar":try{const l=Zs(t.T,e,t.L,!1);switch(l){case Yo:R0(t,n);break;default:n[s]=l;break}}catch(l){let d="cannot decode field ".concat(i.typeName,".").concat(t.name," from JSON: ").concat(zr(e));throw l instanceof Error&&l.message.length>0&&(d+=": ".concat(l.message)),new Error(d)}break}}function Cb(n,e){if(n===K.BOOL)switch(e){case"true":e=!0;break;case"false":e=!1;break}return Zs(n,e,Jn.BIGINT,!0).toString()}function Zs(n,e,t,r){if(e===null)return r?ls(n,t):Yo;switch(n){case K.DOUBLE:case K.FLOAT:if(e==="NaN")return Number.NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(e===""||typeof e=="string"&&e.trim().length!==e.length||typeof e!="string"&&typeof e!="number")break;const i=Number(e);if(Number.isNaN(i)||!Number.isFinite(i))break;return n==K.FLOAT&&km(i),i;case K.INT32:case K.FIXED32:case K.SFIXED32:case K.SINT32:case K.UINT32:let s;if(typeof e=="number"?s=e:typeof e=="string"&&e.length>0&&e.trim().length===e.length&&(s=Number(e)),s===void 0)break;return n==K.UINT32||n==K.FIXED32?$l(s):So(s),s;case K.INT64:case K.SFIXED64:case K.SINT64:if(typeof e!="number"&&typeof e!="string")break;const a=Ge.parse(e);return t?a.toString():a;case K.FIXED64:case K.UINT64:if(typeof e!="number"&&typeof e!="string")break;const o=Ge.uParse(e);return t?o.toString():o;case K.BOOL:if(typeof e!="boolean")break;return e;case K.STRING:if(typeof e!="string")break;try{encodeURIComponent(e)}catch{throw new Error("invalid UTF8")}return e;case K.BYTES:if(e==="")return new Uint8Array(0);if(typeof e!="string")break;return Pm.dec(e)}throw new Error}function Ec(n,e,t,r){if(e===null)return n.typeName=="google.protobuf.NullValue"?0:r?n.values[0].no:Yo;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":const i=n.findName(e);if(i!==void 0)return i.no;if(t)return ko;break}throw new Error("cannot decode enum ".concat(n.typeName," from JSON: ").concat(zr(e)))}function Sb(n){return n.repeated||n.kind=="map"?!0:!(n.oneof||n.kind=="message"||n.opt||n.req)}function H0(n,e,t){if(n.kind=="map"){et(typeof e=="object"&&e!=null);const a={},o=Object.entries(e);switch(n.V.kind){case"scalar":for(const c of o){var r=ae(c,2);const l=r[0],d=r[1];a[l.toString()]=To(n.V.T,d)}break;case"message":for(const c of o){var i=ae(c,2);const l=i[0],d=i[1];a[l.toString()]=d.toJson(t)}break;case"enum":const A=n.V.T;for(const c of o){var s=ae(c,2);const l=s[0],d=s[1];a[l.toString()]=Uc(A,d,t.enumAsInteger)}break}return t.emitDefaultValues||o.length>0?a:void 0}if(n.repeated){et(Array.isArray(e));const a=[];switch(n.kind){case"scalar":for(let o=0;o<e.length;o++)a.push(To(n.T,e[o]));break;case"enum":for(let o=0;o<e.length;o++)a.push(Uc(n.T,e[o],t.enumAsInteger));break;case"message":for(let o=0;o<e.length;o++)a.push(e[o].toJson(t));break}return t.emitDefaultValues||a.length>0?a:void 0}switch(n.kind){case"scalar":return To(n.T,e);case"enum":return Uc(n.T,e,t.enumAsInteger);case"message":return Om(n.T,e).toJson(t)}}function Uc(n,e,t){var r;if(et(typeof e=="number"),n.typeName=="google.protobuf.NullValue")return null;if(t)return e;const i=n.findNumber(e);return(r=i==null?void 0:i.name)!==null&&r!==void 0?r:e}function To(n,e){switch(n){case K.INT32:case K.SFIXED32:case K.SINT32:case K.FIXED32:case K.UINT32:return et(typeof e=="number"),e;case K.FLOAT:case K.DOUBLE:return et(typeof e=="number"),Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case K.STRING:return et(typeof e=="string"),e;case K.BOOL:return et(typeof e=="boolean"),e;case K.UINT64:case K.FIXED64:case K.INT64:case K.SFIXED64:case K.SINT64:return et(typeof e=="bigint"||typeof e=="string"||typeof e=="number"),e.toString();case K.BYTES:return et(e instanceof Uint8Array),Pm.enc(e)}}const Ri=Symbol("@bufbuild/protobuf/unknown-fields"),N0={readUnknownFields:!0,readerFactory:n=>new fb(n)},K0={writeUnknownFields:!0,writerFactory:()=>new hb};function xb(n){return n?Object.assign(Object.assign({},N0),n):N0}function kb(n){return n?Object.assign(Object.assign({},K0),n):K0}function Tb(){return{makeReadOptions:xb,makeWriteOptions:kb,listUnknownFields(n){var e;return(e=n[Ri])!==null&&e!==void 0?e:[]},discardUnknownFields(n){delete n[Ri]},writeUnknownFields(n,e){const r=n[Ri];if(r)for(const i of r)e.tag(i.no,i.wireType).raw(i.data)},onUnknownField(n,e,t,r){const i=n;Array.isArray(i[Ri])||(i[Ri]=[]),i[Ri].push({no:e,wireType:t,data:r})},readMessage(n,e,t,r,i){const s=n.getType(),a=i?e.len:e.pos+t;let o,A;for(;e.pos<a;){var c=e.tag(),l=ae(c,2);if(o=l[0],A=l[1],i===!0&&A==ot.EndGroup)break;const d=s.fields.find(o);if(!d){const u=e.skip(A,o);r.readUnknownFields&&this.onUnknownField(n,o,A,u);continue}V0(n,e,d,A,r)}if(i&&(A!=ot.EndGroup||o!==t))throw new Error("invalid end group tag")},readField:V0,writeMessage(n,e,t){const r=n.getType();for(const i of r.fields.byNumber()){if(!Lm(i,n)){if(i.req)throw new Error("cannot encode field ".concat(r.typeName,".").concat(i.name," to binary: required field not set"));continue}const s=i.oneof?n[i.oneof.localName].value:n[i.localName];z0(i,s,e,t)}return t.writeUnknownFields&&this.writeUnknownFields(n,e),e},writeField(n,e,t,r){e!==void 0&&z0(n,e,t,r)}}}function V0(n,e,t,r,i){let s=t.repeated,a=t.localName;switch(t.oneof&&(n=n[t.oneof.localName],n.case!=a&&delete n.value,n.case=a,a="value"),t.kind){case"scalar":case"enum":const o=t.kind=="enum"?K.INT32:t.T;let A=Zo;if(t.kind=="scalar"&&t.L>0&&(A=Ub),s){let p=n[a];if(r==ot.LengthDelimited&&o!=K.STRING&&o!=K.BYTES){let v=e.uint32()+e.pos;for(;e.pos<v;)p.push(A(e,o))}else p.push(A(e,o))}else n[a]=A(e,o);break;case"message":const c=t.T;s?n[a].push(Eo(e,new c,i,t)):yn(n[a])?Eo(e,n[a],i,t):(n[a]=Eo(e,new c,i,t),c.fieldWrapper&&!t.oneof&&!t.repeated&&(n[a]=c.fieldWrapper.unwrapField(n[a])));break;case"map":let l=Eb(t,e,i),d=ae(l,2),u=d[0],h=d[1];n[a][u]=h;break}}function Eo(n,e,t,r){const i=e.getType().runtime.bin,s=r==null?void 0:r.delimited;return i.readMessage(e,n,s?r.no:n.uint32(),t,s),e}function Eb(n,e,t){const r=e.uint32(),i=e.pos+r;let s,a;for(;e.pos<i;){const o=e.tag();switch(ae(o,1)[0]){case 1:s=Zo(e,n.K);break;case 2:switch(n.V.kind){case"scalar":a=Zo(e,n.V.T);break;case"enum":a=e.int32();break;case"message":a=Eo(e,new n.V.T,t,void 0);break}break}}if(s===void 0&&(s=ls(n.K,Jn.BIGINT)),typeof s!="string"&&typeof s!="number"&&(s=s.toString()),a===void 0)switch(n.V.kind){case"scalar":a=ls(n.V.T,Jn.BIGINT);break;case"enum":a=n.V.T.values[0].no;break;case"message":a=new n.V.T;break}return[s,a]}function Ub(n,e){const t=Zo(n,e);return typeof t=="bigint"?t.toString():t}function Zo(n,e){switch(e){case K.STRING:return n.string();case K.BOOL:return n.bool();case K.DOUBLE:return n.double();case K.FLOAT:return n.float();case K.INT32:return n.int32();case K.INT64:return n.int64();case K.UINT64:return n.uint64();case K.FIXED64:return n.fixed64();case K.BYTES:return n.bytes();case K.FIXED32:return n.fixed32();case K.SFIXED32:return n.sfixed32();case K.SFIXED64:return n.sfixed64();case K.SINT64:return n.sint64();case K.UINT32:return n.uint32();case K.SINT32:return n.sint32()}}function z0(n,e,t,r){et(e!==void 0);const i=n.repeated;switch(n.kind){case"scalar":case"enum":let a=n.kind=="enum"?K.INT32:n.T;if(i)if(et(Array.isArray(e)),n.packed)Fb(t,a,n.no,e);else for(const o of e)ea(t,a,n.no,o);else ea(t,a,n.no,e);break;case"message":if(i){et(Array.isArray(e));for(const o of e)G0(t,r,n,o)}else G0(t,r,n,e);break;case"map":et(typeof e=="object"&&e!=null);for(const o of Object.entries(e)){var s=ae(o,2);const A=s[0],c=s[1];Ib(t,r,n,A,c)}break}}function Ib(n,e,t,r,i){n.tag(t.no,ot.LengthDelimited),n.fork();let s=r;switch(t.K){case K.INT32:case K.FIXED32:case K.UINT32:case K.SFIXED32:case K.SINT32:s=Number.parseInt(r);break;case K.BOOL:et(r=="true"||r=="false"),s=r=="true";break}switch(ea(n,t.K,1,s),t.V.kind){case"scalar":ea(n,t.V.T,2,i);break;case"enum":ea(n,K.INT32,2,i);break;case"message":et(i!==void 0),n.tag(2,ot.LengthDelimited).bytes(i.toBinary(e));break}n.join()}function G0(n,e,t,r){const i=Om(t.T,r);t.delimited?n.tag(t.no,ot.StartGroup).raw(i.toBinary(e)).tag(t.no,ot.EndGroup):n.tag(t.no,ot.LengthDelimited).bytes(i.toBinary(e))}function ea(n,e,t,r){et(r!==void 0);let i=Hm(e),s=ae(i,2),a=s[0],o=s[1];n.tag(t,a)[o](r)}function Fb(n,e,t,r){if(!r.length)return;n.tag(t,ot.LengthDelimited).fork();let i=Hm(e),s=ae(i,2),a=s[1];for(let o=0;o<r.length;o++)n[a](r[o]);n.join()}function Hm(n){let e=ot.Varint;switch(n){case K.BYTES:case K.STRING:e=ot.LengthDelimited;break;case K.DOUBLE:case K.FIXED64:case K.SFIXED64:e=ot.Bit64;break;case K.FIXED32:case K.SFIXED32:case K.FLOAT:e=ot.Bit32;break}const t=K[n].toLowerCase();return[e,t]}function _b(){return{setEnumType:Em,initPartial(n,e){if(n===void 0)return;const t=e.getType();for(const i of t.fields.byMember()){const s=i.localName,a=e,o=n;if(o[s]!=null)switch(i.kind){case"oneof":const A=o[s].case;if(A===void 0)continue;const c=i.findField(A);let l=o[s].value;c&&c.kind=="message"&&!yn(l,c.T)?l=new c.T(l):c&&c.kind==="scalar"&&c.T===K.BYTES&&(l=Cs(l)),a[s]={case:A,value:l};break;case"scalar":case"enum":let d=o[s];i.T===K.BYTES&&(d=i.repeated?d.map(Cs):Cs(d)),a[s]=d;break;case"map":switch(i.V.kind){case"scalar":case"enum":if(i.V.T===K.BYTES)for(const p of Object.entries(o[s])){var r=ae(p,2);const m=r[0],v=r[1];a[s][m]=Cs(v)}else Object.assign(a[s],o[s]);break;case"message":const h=i.V.T;for(const p of Object.keys(o[s])){let m=o[s][p];h.fieldWrapper||(m=new h(m)),a[s][p]=m}break}break;case"message":const u=i.T;if(i.repeated)a[s]=o[s].map(h=>yn(h,u)?h:new u(h));else{const h=o[s];u.fieldWrapper?u.typeName==="google.protobuf.BytesValue"?a[s]=Cs(h):a[s]=h:a[s]=yn(h,u)?h:new u(h)}break}}},equals(n,e,t){return e===t?!0:!e||!t?!1:n.fields.byMember().every(r=>{const i=e[r.localName],s=t[r.localName];if(r.repeated){if(i.length!==s.length)return!1;switch(r.kind){case"message":return i.every((a,o)=>r.T.equals(a,s[o]));case"scalar":return i.every((a,o)=>Mn(r.T,a,s[o]));case"enum":return i.every((a,o)=>Mn(K.INT32,a,s[o]))}throw new Error("repeated cannot contain ".concat(r.kind))}switch(r.kind){case"message":let a=i,o=s;return r.T.fieldWrapper&&(a!==void 0&&!yn(a)&&(a=r.T.fieldWrapper.wrapField(a)),o!==void 0&&!yn(o)&&(o=r.T.fieldWrapper.wrapField(o))),r.T.equals(a,o);case"enum":return Mn(K.INT32,i,s);case"scalar":return Mn(r.T,i,s);case"oneof":if(i.case!==s.case)return!1;const A=r.findField(i.case);if(A===void 0)return!0;switch(A.kind){case"message":return A.T.equals(i.value,s.value);case"enum":return Mn(K.INT32,i.value,s.value);case"scalar":return Mn(A.T,i.value,s.value)}throw new Error("oneof cannot contain ".concat(A.kind));case"map":const c=Object.keys(i).concat(Object.keys(s));switch(r.V.kind){case"message":const l=r.V.T;return c.every(u=>l.equals(i[u],s[u]));case"enum":return c.every(u=>Mn(K.INT32,i[u],s[u]));case"scalar":const d=r.V.T;return c.every(u=>Mn(d,i[u],s[u]))}break}})},clone(n){const e=n.getType(),t=new e,r=t;for(const s of e.fields.byMember()){const a=n[s.localName];let o;if(s.repeated)o=a.map(Ha);else if(s.kind=="map"){o=r[s.localName];for(const A of Object.entries(a)){var i=ae(A,2);const c=i[0],l=i[1];o[c]=Ha(l)}}else s.kind=="oneof"?o=s.findField(a.case)?{case:a.case,value:Ha(a.value)}:{case:void 0}:o=Ha(a);r[s.localName]=o}for(const s of e.runtime.bin.listUnknownFields(n))e.runtime.bin.onUnknownField(r,s.no,s.wireType,s.data);return t}}}function Ha(n){if(n===void 0)return n;if(yn(n))return n.clone();if(n instanceof Uint8Array){const e=new Uint8Array(n.byteLength);return e.set(n),e}return n}function Cs(n){return n instanceof Uint8Array?n:new Uint8Array(n)}function Mb(n,e,t){return{syntax:n,json:Bb(),bin:Tb(),util:Object.assign(Object.assign({},_b()),{newFieldList:e,initFields:t}),makeMessageType(r,i,s){return tb(this,r,i,s)},makeEnum:eb,makeEnumType:Um,getEnumType:Zw,makeExtension(r,i,s){return pb(this,r,i,s)}}}class Qb{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const t={};for(const r of this.list())t[r.jsonName]=t[r.name]=r;this.jsonNames=t}return this.jsonNames[e]}find(e){if(!this.numbers){const t={};for(const r of this.list())t[r.no]=r;this.numbers=t}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((e,t)=>e.no-t.no)),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const r of this.list())r.oneof?r.oneof!==t&&(t=r.oneof,e.push(t)):e.push(r)}return this.members}}function Nm(n,e){const t=Km(n);return e?t:Hb(Ob(t))}function Pb(n){return Nm(n,!1)}const Rb=Km;function Km(n){let e=!1;const t=[];for(let r=0;r<n.length;r++){let i=n.charAt(r);switch(i){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":t.push(i),e=!1;break;default:e&&(e=!1,i=i.toUpperCase()),t.push(i);break}}return t.join("")}const Db=new Set(["constructor","toString","toJSON","valueOf"]),Lb=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),Vm=n=>"".concat(n,"$"),Ob=n=>Lb.has(n)?Vm(n):n,Hb=n=>Db.has(n)?Vm(n):n;class Nb{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=Pb(e)}addField(e){et(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let t=0;t<this.fields.length;t++)this._lookup[this.fields[t].localName]=this.fields[t]}return this._lookup[e]}}function Kb(n,e){var t,r,i,s,a,o;const A=[];let c;for(const l of typeof n=="function"?n():n){const d=l;if(d.localName=Nm(l.name,l.oneof!==void 0),d.jsonName=(t=l.jsonName)!==null&&t!==void 0?t:Rb(l.name),d.repeated=(r=l.repeated)!==null&&r!==void 0?r:!1,l.kind=="scalar"&&(d.L=(i=l.L)!==null&&i!==void 0?i:Jn.BIGINT),d.delimited=(s=l.delimited)!==null&&s!==void 0?s:!1,d.req=(a=l.req)!==null&&a!==void 0?a:!1,d.opt=(o=l.opt)!==null&&o!==void 0?o:!1,l.packed===void 0&&(d.packed=l.kind=="enum"||l.kind=="scalar"&&l.T!=K.BYTES&&l.T!=K.STRING),l.oneof!==void 0){const u=typeof l.oneof=="string"?l.oneof:l.oneof.name;(!c||c.name!=u)&&(c=new Nb(u)),d.oneof=c,c.addField(d)}A.push(d)}return A}const M=Mb("proto3",n=>new Qb(n,e=>Kb(e)),n=>{for(const e of n.getType().fields.byMember()){if(e.opt)continue;const t=e.localName,r=n;if(e.repeated){r[t]=[];continue}switch(e.kind){case"oneof":r[t]={case:void 0};break;case"enum":r[t]=0;break;case"map":r[t]={};break;case"scalar":r[t]=ls(e.T,e.L);break}}});class jt extends hu{constructor(e){super(),this.seconds=Ge.zero,this.nanos=0,M.util.initPartial(e,this)}fromJson(e,t){if(typeof e!="string")throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(M.json.debug(e)));const r=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!r)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const i=Date.parse(r[1]+"-"+r[2]+"-"+r[3]+"T"+r[4]+":"+r[5]+":"+r[6]+(r[8]?r[8]:"Z"));if(Number.isNaN(i))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(i<Date.parse("0001-01-01T00:00:00Z")||i>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=Ge.parse(i/1e3),this.nanos=0,r[7]&&(this.nanos=parseInt("1"+r[7]+"0".repeat(9-r[7].length))-1e9),this}toJson(e){const t=Number(this.seconds)*1e3;if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let r="Z";if(this.nanos>0){const i=(this.nanos+1e9).toString().substring(1);i.substring(3)==="000000"?r="."+i.substring(0,3)+"Z":i.substring(6)==="000"?r="."+i.substring(0,6)+"Z":r="."+i+"Z"}return new Date(t).toISOString().replace(".000Z",r)}toDate(){return new Date(Number(this.seconds)*1e3+Math.ceil(this.nanos/1e6))}static now(){return jt.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new jt({seconds:Ge.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return new jt().fromBinary(e,t)}static fromJson(e,t){return new jt().fromJson(e,t)}static fromJsonString(e,t){return new jt().fromJsonString(e,t)}static equals(e,t){return M.util.equals(jt,e,t)}}jt.runtime=M;jt.typeName="google.protobuf.Timestamp";jt.fields=M.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);const Vb=M.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:jt},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:zb,repeated:!0},{no:5,name:"events",kind:"message",T:qb,repeated:!0}]),zb=M.makeMessageType("livekit.TimeSeriesMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"samples",kind:"message",T:Gb,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),Gb=M.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:jt},{no:3,name:"value",kind:"scalar",T:2}]),qb=M.makeMessageType("livekit.EventMetric",()=>[{no:1,name:"label",kind:"scalar",T:13},{no:2,name:"participant_identity",kind:"scalar",T:13},{no:3,name:"track_sid",kind:"scalar",T:13},{no:4,name:"start_timestamp_ms",kind:"scalar",T:3},{no:5,name:"end_timestamp_ms",kind:"scalar",T:3,opt:!0},{no:6,name:"normalized_start_timestamp",kind:"message",T:jt},{no:7,name:"normalized_end_timestamp",kind:"message",T:jt,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),zm=M.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),xr=M.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),dt=M.makeEnum("livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),pu=M.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),Os=M.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),pa=M.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),Fr=M.makeEnum("livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"},{no:10,name:"ROOM_CLOSED"},{no:11,name:"USER_UNAVAILABLE"},{no:12,name:"USER_REJECTED"},{no:13,name:"SIP_TRUNK_FAILURE"},{no:14,name:"CONNECTION_TIMEOUT"},{no:15,name:"MEDIA_FAILURE"},{no:16,name:"AGENT_ERROR"}]),di=M.makeEnum("livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),Wb=M.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),yt=M.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"},{no:6,name:"TF_PRECONNECT_BUFFER"}]),ds=M.makeEnum("livekit.PacketTrailerFeature",[{no:0,name:"PTF_USER_TIMESTAMP"},{no:1,name:"PTF_FRAME_ID"}]),RA=M.makeMessageType("livekit.Room",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:14,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:15,name:"creation_time_ms",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:eA,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:13,name:"version",kind:"message",T:ig}]),eA=M.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),$b=M.makeMessageType("livekit.ParticipantPermission",()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:M.getEnumType(dt),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8},{no:11,name:"agent",kind:"scalar",T:8},{no:12,name:"can_subscribe_metrics",kind:"scalar",T:8},{no:13,name:"can_manage_agent_session",kind:"scalar",T:8}]),Ei=M.makeMessageType("livekit.ParticipantInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:M.getEnumType(Yi)},{no:4,name:"tracks",kind:"message",T:ji,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:17,name:"joined_at_ms",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:$b},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:M.getEnumType(ma)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:M.getEnumType(Fr)},{no:18,name:"kind_details",kind:"enum",T:M.getEnumType(jb),repeated:!0},{no:19,name:"data_tracks",kind:"message",T:DA,repeated:!0},{no:20,name:"client_protocol",kind:"scalar",T:5}]),Yi=M.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),ma=M.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"},{no:7,name:"CONNECTOR"},{no:8,name:"BRIDGE"}]),jb=M.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"},{no:2,name:"CONNECTOR_WHATSAPP"},{no:3,name:"CONNECTOR_TWILIO"},{no:4,name:"BRIDGE_RTSP"}]),Oe=M.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),Xb=M.makeMessageType("livekit.SimulcastCodecInfo",()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:qn,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:M.getEnumType(Gm)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),ji=M.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:M.getEnumType(xr)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:M.getEnumType(dt)},{no:10,name:"layers",kind:"message",T:qn,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:Xb,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:M.getEnumType(Oe)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:ig},{no:19,name:"audio_features",kind:"enum",T:M.getEnumType(yt),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:M.getEnumType(zm)},{no:21,name:"packet_trailer_features",kind:"enum",T:M.getEnumType(ds),repeated:!0}]),DA=M.makeMessageType("livekit.DataTrackInfo",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"sid",kind:"scalar",T:9},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"encryption",kind:"enum",T:M.getEnumType(Oe)}]),Jb=M.makeMessageType("livekit.DataTrackSubscriptionOptions",()=>[{no:1,name:"target_fps",kind:"scalar",T:13,opt:!0}]),qn=M.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:M.getEnumType(pu)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13},{no:6,name:"spatial_layer",kind:"scalar",T:5},{no:7,name:"rid",kind:"scalar",T:9},{no:8,name:"repair_ssrc",kind:"scalar",T:13}]),Gm=M.makeEnum("livekit.VideoLayer.Mode",[{no:0,name:"MODE_UNUSED"},{no:1,name:"ONE_SPATIAL_LAYER_PER_STREAM"},{no:2,name:"MULTIPLE_SPATIAL_LAYERS_PER_STREAM"},{no:3,name:"ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR"}]),Ft=M.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:M.getEnumType(Wn)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:mu,oneof:"value"},{no:3,name:"speaker",kind:"message",T:Yb,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:jm,oneof:"value"},{no:7,name:"transcription",kind:"message",T:Zb,oneof:"value"},{no:8,name:"metrics",kind:"message",T:Vb,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:tA,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:gu,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:LA,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:vu,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:rA,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:nA,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:iA,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:qm,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),Wn=M.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),qm=M.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:M.getEnumType(Oe)},{no:2,name:"iv",kind:"scalar",T:12},{no:3,name:"key_index",kind:"scalar",T:13},{no:4,name:"encrypted_value",kind:"scalar",T:12}]),Wm=M.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:mu,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:tA,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:gu,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:LA,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:vu,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:rA,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:nA,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:iA,oneof:"value"}]),Yb=M.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:$m,repeated:!0}]),$m=M.makeMessageType("livekit.SpeakerInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]),mu=M.makeMessageType("livekit.UserPacket",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0},{no:11,name:"nonce",kind:"scalar",T:12}]),jm=M.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),Zb=M.makeMessageType("livekit.Transcription",()=>[{no:2,name:"transcribed_participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:e4,repeated:!0}]),e4=M.makeMessageType("livekit.TranscriptionSegment",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}]),tA=M.makeMessageType("livekit.ChatMessage",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"edit_timestamp",kind:"scalar",T:3,opt:!0},{no:4,name:"message",kind:"scalar",T:9},{no:5,name:"deleted",kind:"scalar",T:8},{no:6,name:"generated",kind:"scalar",T:8}]),gu=M.makeMessageType("livekit.RpcRequest",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"method",kind:"scalar",T:9},{no:3,name:"payload",kind:"scalar",T:9},{no:4,name:"response_timeout_ms",kind:"scalar",T:13},{no:5,name:"version",kind:"scalar",T:13},{no:6,name:"compressed_payload",kind:"scalar",T:12}]),LA=M.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),vu=M.makeMessageType("livekit.RpcResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:9,oneof:"value"},{no:3,name:"error",kind:"message",T:Xm,oneof:"value"},{no:4,name:"compressed_payload",kind:"scalar",T:12,oneof:"value"}]),Xm=M.makeMessageType("livekit.RpcError",()=>[{no:1,name:"code",kind:"scalar",T:13},{no:2,name:"message",kind:"scalar",T:9},{no:3,name:"data",kind:"scalar",T:9}]),Jm=M.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),Ym=M.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:M.getEnumType(Zm)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9},{no:7,name:"agent_protocol",kind:"scalar",T:5}]),Zm=M.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),eg=M.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:M.getEnumType(tg)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9},{no:11,name:"other_sdks",kind:"scalar",T:9},{no:12,name:"client_protocol",kind:"scalar",T:5},{no:13,name:"capabilities",kind:"enum",T:M.getEnumType(rg),repeated:!0}]),tg=M.makeEnum("livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"},{no:9,name:"PYTHON"},{no:10,name:"CPP"},{no:11,name:"UNITY_WEB"},{no:12,name:"NODE"},{no:13,name:"UNREAL"},{no:14,name:"ESP32"}]),rg=M.makeEnum("livekit.ClientInfo.Capability",[{no:0,name:"CAP_UNUSED"},{no:1,name:"CAP_PACKET_TRAILER"}]),ng=M.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:q0},{no:2,name:"screen",kind:"message",T:q0},{no:3,name:"resume_connection",kind:"enum",T:M.getEnumType(pa)},{no:4,name:"disabled_codecs",kind:"message",T:t4},{no:5,name:"force_relay",kind:"enum",T:M.getEnumType(pa)}]),q0=M.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:M.getEnumType(pa)}]),t4=M.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:eA,repeated:!0},{no:2,name:"publish",kind:"message",T:eA,repeated:!0}]),ig=M.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),jl=M.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),sg=M.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:M.getEnumType(jl)},{no:2,name:"version",kind:"scalar",T:5},{no:3,name:"reply_to_stream_id",kind:"scalar",T:9},{no:4,name:"attached_stream_ids",kind:"scalar",T:9,repeated:!0},{no:5,name:"generated",kind:"scalar",T:8}],{localName:"DataStream_TextHeader"}),ag=M.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),rA=M.makeMessageType("livekit.DataStream.Header",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"timestamp",kind:"scalar",T:3},{no:3,name:"topic",kind:"scalar",T:9},{no:4,name:"mime_type",kind:"scalar",T:9},{no:5,name:"total_length",kind:"scalar",T:4,opt:!0},{no:7,name:"encryption_type",kind:"enum",T:M.getEnumType(Oe)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:sg,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:ag,oneof:"content_header"}],{localName:"DataStream_Header"}),nA=M.makeMessageType("livekit.DataStream.Chunk",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"chunk_index",kind:"scalar",T:4},{no:3,name:"content",kind:"scalar",T:12},{no:4,name:"version",kind:"scalar",T:5},{no:5,name:"iv",kind:"scalar",T:12,opt:!0}],{localName:"DataStream_Chunk"}),iA=M.makeMessageType("livekit.DataStream.Trailer",()=>[{no:1,name:"stream_id",kind:"scalar",T:9},{no:2,name:"reason",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}}],{localName:"DataStream_Trailer"}),r4=M.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),kr=M.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),Xl=M.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),n4=M.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),i4=M.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:Yn,oneof:"message"},{no:2,name:"answer",kind:"message",T:Yn,oneof:"message"},{no:3,name:"trickle",kind:"message",T:OA,oneof:"message"},{no:4,name:"add_track",kind:"message",T:ga,oneof:"message"},{no:5,name:"mute",kind:"message",T:HA,oneof:"message"},{no:6,name:"subscription",kind:"message",T:NA,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:cg,oneof:"message"},{no:8,name:"leave",kind:"message",T:KA,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:dg,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:fg,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:ku,oneof:"message"},{no:13,name:"simulate",kind:"message",T:Kr,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:Su,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:gg,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:Cu,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:lg,oneof:"message"},{no:19,name:"publish_data_track_request",kind:"message",T:yu,oneof:"message"},{no:20,name:"unpublish_data_track_request",kind:"message",T:bu,oneof:"message"},{no:21,name:"update_data_subscription",kind:"message",T:og,oneof:"message"}]),W0=M.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:A4,oneof:"message"},{no:2,name:"answer",kind:"message",T:Yn,oneof:"message"},{no:3,name:"offer",kind:"message",T:Yn,oneof:"message"},{no:4,name:"trickle",kind:"message",T:OA,oneof:"message"},{no:5,name:"update",kind:"message",T:d4,oneof:"message"},{no:6,name:"track_published",kind:"message",T:Bu,oneof:"message"},{no:8,name:"leave",kind:"message",T:KA,oneof:"message"},{no:9,name:"mute",kind:"message",T:HA,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:u4,oneof:"message"},{no:11,name:"room_update",kind:"message",T:h4,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:p4,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:g4,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:y4,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:b4,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:l4,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:c4,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:C4,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:k4,oneof:"message"},{no:22,name:"request_response",kind:"message",T:T4,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:E4,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:B4,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:F4,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:w4,oneof:"message"},{no:27,name:"publish_data_track_response",kind:"message",T:wu,oneof:"message"},{no:28,name:"unpublish_data_track_response",kind:"message",T:s4,oneof:"message"},{no:29,name:"data_track_subscriber_handles",kind:"message",T:a4,oneof:"message"}]),Jl=M.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:qn,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:M.getEnumType(Gm)}]),ga=M.makeMessageType("livekit.AddTrackRequest",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:M.getEnumType(xr)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:M.getEnumType(dt)},{no:9,name:"layers",kind:"message",T:qn,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Jl,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:M.getEnumType(Oe)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:M.getEnumType(zm)},{no:17,name:"audio_features",kind:"enum",T:M.getEnumType(yt),repeated:!0},{no:18,name:"packet_trailer_features",kind:"enum",T:M.getEnumType(ds),repeated:!0}]),yu=M.makeMessageType("livekit.PublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"encryption",kind:"enum",T:M.getEnumType(Oe)}]),wu=M.makeMessageType("livekit.PublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:DA}]),bu=M.makeMessageType("livekit.UnpublishDataTrackRequest",()=>[{no:1,name:"pub_handle",kind:"scalar",T:13}]),s4=M.makeMessageType("livekit.UnpublishDataTrackResponse",()=>[{no:1,name:"info",kind:"message",T:DA}]),a4=M.makeMessageType("livekit.DataTrackSubscriberHandles",()=>[{no:1,name:"sub_handles",kind:"map",K:13,V:{kind:"message",T:o4}}]),o4=M.makeMessageType("livekit.DataTrackSubscriberHandles.PublishedDataTrack",()=>[{no:1,name:"publisher_identity",kind:"scalar",T:9},{no:2,name:"publisher_sid",kind:"scalar",T:9},{no:3,name:"track_sid",kind:"scalar",T:9}],{localName:"DataTrackSubscriberHandles_PublishedDataTrack"}),OA=M.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:M.getEnumType(kr)},{no:3,name:"final",kind:"scalar",T:8}]),HA=M.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),A4=M.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:RA},{no:2,name:"participant",kind:"message",T:Ei},{no:3,name:"other_participants",kind:"message",T:Ei,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:ug,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:ng},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:Ym},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:eA,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),c4=M.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:ug,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:ng},{no:3,name:"server_info",kind:"message",T:Ym},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),Bu=M.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:ji}]),l4=M.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),Yn=M.makeMessageType("livekit.SessionDescription",()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"id",kind:"scalar",T:13},{no:4,name:"mid_to_track_id",kind:"map",K:9,V:{kind:"scalar",T:9}}]),d4=M.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:Ei,repeated:!0}]),NA=M.makeMessageType("livekit.UpdateSubscription",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:Jm,repeated:!0}]),og=M.makeMessageType("livekit.UpdateDataSubscription",()=>[{no:1,name:"updates",kind:"message",T:Ag,repeated:!0}]),Ag=M.makeMessageType("livekit.UpdateDataSubscription.Update",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"options",kind:"message",T:Jb}],{localName:"UpdateDataSubscription_Update"}),cg=M.makeMessageType("livekit.UpdateTrackSettings",()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:M.getEnumType(pu)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]),Cu=M.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:M.getEnumType(yt),repeated:!0}]),lg=M.makeMessageType("livekit.UpdateLocalVideoTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}]),KA=M.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:M.getEnumType(Fr)},{no:3,name:"action",kind:"enum",T:M.getEnumType(Zi)},{no:4,name:"regions",kind:"message",T:S4}]),Zi=M.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),dg=M.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:qn,repeated:!0}]),Su=M.makeMessageType("livekit.UpdateParticipantMetadata",()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:4,name:"request_id",kind:"scalar",T:13}]),ug=M.makeMessageType("livekit.ICEServer",()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]),u4=M.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:$m,repeated:!0}]),h4=M.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:RA}]),f4=M.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:M.getEnumType(Os)},{no:3,name:"score",kind:"scalar",T:2}]),p4=M.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:f4,repeated:!0}]),m4=M.makeMessageType("livekit.StreamStateInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:M.getEnumType(Xl)}]),g4=M.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:m4,repeated:!0}]),xu=M.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:M.getEnumType(pu)},{no:2,name:"enabled",kind:"scalar",T:8}]),v4=M.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:xu,repeated:!0}]),y4=M.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:xu,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:v4,repeated:!0}]),w4=M.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:r4,repeated:!0}]),hg=M.makeMessageType("livekit.TrackPermission",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]),fg=M.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:hg,repeated:!0}]),b4=M.makeMessageType("livekit.SubscriptionPermissionUpdate",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]),B4=M.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:RA},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:Ei},{no:4,name:"other_participants",kind:"message",T:Ei,repeated:!0}]),ku=M.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:Yn},{no:2,name:"subscription",kind:"message",T:NA},{no:3,name:"publish_tracks",kind:"message",T:Bu,repeated:!0},{no:4,name:"data_channels",kind:"message",T:mg,repeated:!0},{no:5,name:"offer",kind:"message",T:Yn},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:pg,repeated:!0},{no:8,name:"publish_data_tracks",kind:"message",T:wu,repeated:!0}]),pg=M.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),mg=M.makeMessageType("livekit.DataChannelInfo",()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:M.getEnumType(kr)}]),Kr=M.makeMessageType("livekit.SimulateScenario",()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:M.getEnumType(n4),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}]),gg=M.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),C4=M.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),S4=M.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:x4,repeated:!0}]),x4=M.makeMessageType("livekit.RegionInfo",()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]),k4=M.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:M.getEnumType(Wb)}]),T4=M.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:M.getEnumType(hi)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:OA,oneof:"request"},{no:5,name:"add_track",kind:"message",T:ga,oneof:"request"},{no:6,name:"mute",kind:"message",T:HA,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:Su,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:Cu,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:lg,oneof:"request"},{no:10,name:"publish_data_track",kind:"message",T:yu,oneof:"request"},{no:11,name:"unpublish_data_track",kind:"message",T:bu,oneof:"request"}]),hi=M.makeEnum("livekit.RequestResponse.Reason",[{no:0,name:"OK"},{no:1,name:"NOT_FOUND"},{no:2,name:"NOT_ALLOWED"},{no:3,name:"LIMIT_EXCEEDED"},{no:4,name:"QUEUED"},{no:5,name:"UNSUPPORTED_TYPE"},{no:6,name:"UNCLASSIFIED_ERROR"},{no:7,name:"INVALID_HANDLE"},{no:8,name:"INVALID_NAME"},{no:9,name:"DUPLICATE_HANDLE"},{no:10,name:"DUPLICATE_NAME"}]),E4=M.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),vg=M.makeMessageType("livekit.ConnectionSettings",()=>[{no:1,name:"auto_subscribe",kind:"scalar",T:8},{no:2,name:"adaptive_stream",kind:"scalar",T:8},{no:3,name:"subscriber_allow_pause",kind:"scalar",T:8,opt:!0},{no:4,name:"disable_ice_lite",kind:"scalar",T:8},{no:5,name:"auto_subscribe_data_track",kind:"scalar",T:8,opt:!0}]),U4=M.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:eg},{no:2,name:"connection_settings",kind:"message",T:vg},{no:3,name:"metadata",kind:"scalar",T:9},{no:4,name:"participant_attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:5,name:"add_track_requests",kind:"message",T:ga,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:Yn},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:M.getEnumType(di)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:ku}]),I4=M.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:M.getEnumType(Yl)},{no:2,name:"join_request",kind:"scalar",T:12}]),Yl=M.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),F4=M.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]);function _4(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Uo={exports:{}},M4=Uo.exports,$0;function Q4(){return $0||($0=1,function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(M4,function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"],s={},a=null;function o(m,v){var y=m[v];if(typeof y.bind=="function")return y.bind(m);try{return Function.prototype.bind.call(y,m)}catch{return function(){return Function.prototype.apply.apply(y,[m,arguments])}}}function A(){console.log&&(console.log.apply||Function.prototype.apply.apply(console.log,[console,arguments]))}function c(m){return m==="debug"&&(m="log"),typeof console===t?!1:m==="trace"&&r?A:console[m]!==void 0?o(console,m):console.log!==void 0?o(console,"log"):e}function l(){for(var m=this.getLevel(),v=0;v<i.length;v++){var y=i[v];this[y]=v<m?e:this.methodFactory(y,m,this.name)}if(this.log=this.debug,typeof console===t&&m<this.levels.SILENT)return"No console available for logging"}function d(m){return function(){typeof console!==t&&(l.call(this),this[m].apply(this,arguments))}}function u(m,v,y){return c(m)||d.apply(this,arguments)}function h(m,v){var y=this,B,T,w,C="loglevel";typeof m=="string"?C+=":"+m:typeof m=="symbol"&&(C=void 0);function k(O){var H=(i[O]||"silent").toUpperCase();if(!(typeof window===t||!C)){try{window.localStorage[C]=H;return}catch{}try{window.document.cookie=encodeURIComponent(C)+"="+H+";"}catch{}}}function I(){var O;if(!(typeof window===t||!C)){try{O=window.localStorage[C]}catch{}if(typeof O===t)try{var H=window.document.cookie,te=encodeURIComponent(C),ne=H.indexOf(te+"=");ne!==-1&&(O=/^([^;]+)/.exec(H.slice(ne+te.length+1))[1])}catch{}return y.levels[O]===void 0&&(O=void 0),O}}function P(){if(!(typeof window===t||!C)){try{window.localStorage.removeItem(C)}catch{}try{window.document.cookie=encodeURIComponent(C)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function Q(O){var H=O;if(typeof H=="string"&&y.levels[H.toUpperCase()]!==void 0&&(H=y.levels[H.toUpperCase()]),typeof H=="number"&&H>=0&&H<=y.levels.SILENT)return H;throw new TypeError("log.setLevel() called with invalid level: "+O)}y.name=m,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=v||u,y.getLevel=function(){return w??T??B},y.setLevel=function(O,H){return w=Q(O),H!==!1&&k(w),l.call(y)},y.setDefaultLevel=function(O){T=Q(O),I()||y.setLevel(O,!1)},y.resetLevel=function(){w=null,P(),l.call(y)},y.enableAll=function(O){y.setLevel(y.levels.TRACE,O)},y.disableAll=function(O){y.setLevel(y.levels.SILENT,O)},y.rebuild=function(){if(a!==y&&(B=Q(a.getLevel())),l.call(y),a===y)for(var O in s)s[O].rebuild()},B=Q(a?a.getLevel():"WARN");var D=I();D!=null&&(w=Q(D)),l.call(y)}a=new h,a.getLogger=function(v){if(typeof v!="symbol"&&typeof v!="string"||v==="")throw new TypeError("You must supply a name when creating a logger.");var y=s[v];return y||(y=s[v]=new h(v,a.methodFactory)),y};var p=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=p),a},a.getLoggers=function(){return s},a.default=a,a})}(Uo)),Uo.exports}var VA=Q4(),Zl;(function(n){n[n.trace=0]="trace",n[n.debug=1]="debug",n[n.info=2]="info",n[n.warn=3]="warn",n[n.error=4]="error",n[n.silent=5]="silent"})(Zl||(Zl={}));var Bt;(function(n){n.Default="livekit",n.Room="livekit-room",n.TokenSource="livekit-token-source",n.Participant="livekit-participant",n.Track="livekit-track",n.Publication="livekit-track-publication",n.Engine="livekit-engine",n.Signal="livekit-signal",n.PCManager="livekit-pc-manager",n.PCTransport="livekit-pc-transport",n.E2EE="lk-e2ee",n.DataTracks="livekit-data-tracks"})(Bt||(Bt={}));let me=VA.getLogger(Bt.Default);Object.values(Bt).map(n=>VA.getLogger(n));me.setDefaultLevel(Zl.info);function Yt(n,e){const t=VA.getLogger(n);return t.setDefaultLevel(me.getLevel()),e?P4(t,e):t}function P4(n,e){const t=i=>(s,a)=>{const o=e(),A=o||a?Object.assign(Object.assign({},o),a):void 0;n[i](s,A)},r=Object.create(n);return r.trace=t("trace"),r.debug=t("debug"),r.info=t("info"),r.warn=t("warn"),r.error=t("error"),r}const R4=VA.getLogger(Bt.E2EE),Ss=7e3,D4=[0,300,2*2*300,3*3*300,4*4*300,Ss,Ss,Ss,Ss,Ss];class L4{constructor(e){this._retryDelays=e!==void 0?[...e]:D4}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+Math.random()*1e3}}function O4(n,e){var t={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(n);i<r.length;i++)e.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(n,r[i])&&(t[r[i]]=n[r[i]]);return t}function x(n,e,t,r){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(l){try{c(r.next(l))}catch(d){a(d)}}function A(l){try{c(r.throw(l))}catch(d){a(d)}}function c(l){l.done?s(l.value):i(l.value).then(o,A)}c((r=r.apply(n,e||[])).next())})}function j0(n){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&n[e],r=0;if(t)return t.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function us(n){return this instanceof us?(this.v=n,this):new us(n)}function H4(n,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=t.apply(n,e||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",a),i[Symbol.asyncIterator]=function(){return this},i;function a(h){return function(p){return Promise.resolve(p).then(h,d)}}function o(h,p){r[h]&&(i[h]=function(m){return new Promise(function(v,y){s.push([h,m,v,y])>1||A(h,m)})},p&&(i[h]=p(i[h])))}function A(h,p){try{c(r[h](p))}catch(m){u(s[0][3],m)}}function c(h){h.value instanceof us?Promise.resolve(h.value.v).then(l,d):u(s[0][2],h)}function l(h){A("next",h)}function d(h){A("throw",h)}function u(h,p){h(p),s.shift(),s.length&&A(s[0][0],s[0][1])}}function N4(n){var e,t;return e={},r("next"),r("throw",function(i){throw i}),r("return"),e[Symbol.iterator]=function(){return this},e;function r(i,s){e[i]=n[i]?function(a){return(t=!t)?{value:us(n[i](a)),done:!1}:s?s(a):a}:s}}function Tr(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],t;return e?e.call(n):(n=typeof j0=="function"?j0(n):n[Symbol.iterator](),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(s){t[s]=n[s]&&function(a){return new Promise(function(o,A){a=n[s](a),i(o,A,a.done,a.value)})}}function i(s,a,o,A){Promise.resolve(A).then(function(c){s({value:c,done:o})},a)}}var Na={exports:{}},X0;function K4(){if(X0)return Na.exports;X0=1;var n=typeof Reflect=="object"?Reflect:null,e=n&&typeof n.apply=="function"?n.apply:function(C,k,I){return Function.prototype.apply.call(C,k,I)},t;n&&typeof n.ownKeys=="function"?t=n.ownKeys:Object.getOwnPropertySymbols?t=function(C){return Object.getOwnPropertyNames(C).concat(Object.getOwnPropertySymbols(C))}:t=function(C){return Object.getOwnPropertyNames(C)};function r(w){}var i=Number.isNaN||function(C){return C!==C};function s(){s.init.call(this)}Na.exports=s,Na.exports.once=y,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function o(w){if(typeof w!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof w)}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(w){if(typeof w!="number"||w<0||i(w))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+w+".");a=w}}),s.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(C){if(typeof C!="number"||C<0||i(C))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+C+".");return this._maxListeners=C,this};function A(w){return w._maxListeners===void 0?s.defaultMaxListeners:w._maxListeners}s.prototype.getMaxListeners=function(){return A(this)},s.prototype.emit=function(C){for(var k=[],I=1;I<arguments.length;I++)k.push(arguments[I]);var P=C==="error",Q=this._events;if(Q!==void 0)P=P&&Q.error===void 0;else if(!P)return!1;if(P){var D;if(k.length>0&&(D=k[0]),D instanceof Error)throw D;var O=new Error("Unhandled error."+(D?" ("+D.message+")":""));throw O.context=D,O}var H=Q[C];if(H===void 0)return!1;if(typeof H=="function")e(H,this,k);else for(var te=H.length,ne=p(H,te),I=0;I<te;++I)e(ne[I],this,k);return!0};function c(w,C,k,I){var P,Q,D;if(o(k),Q=w._events,Q===void 0?(Q=w._events=Object.create(null),w._eventsCount=0):(Q.newListener!==void 0&&(w.emit("newListener",C,k.listener?k.listener:k),Q=w._events),D=Q[C]),D===void 0)D=Q[C]=k,++w._eventsCount;else if(typeof D=="function"?D=Q[C]=I?[k,D]:[D,k]:I?D.unshift(k):D.push(k),P=A(w),P>0&&D.length>P&&!D.warned){D.warned=!0;var O=new Error("Possible EventEmitter memory leak detected. "+D.length+" "+String(C)+" listeners added. Use emitter.setMaxListeners() to increase limit");O.name="MaxListenersExceededWarning",O.emitter=w,O.type=C,O.count=D.length}return w}s.prototype.addListener=function(C,k){return c(this,C,k,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(C,k){return c(this,C,k,!0)};function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(w,C,k){var I={fired:!1,wrapFn:void 0,target:w,type:C,listener:k},P=l.bind(I);return P.listener=k,I.wrapFn=P,P}s.prototype.once=function(C,k){return o(k),this.on(C,d(this,C,k)),this},s.prototype.prependOnceListener=function(C,k){return o(k),this.prependListener(C,d(this,C,k)),this},s.prototype.removeListener=function(C,k){var I,P,Q,D,O;if(o(k),P=this._events,P===void 0)return this;if(I=P[C],I===void 0)return this;if(I===k||I.listener===k)--this._eventsCount===0?this._events=Object.create(null):(delete P[C],P.removeListener&&this.emit("removeListener",C,I.listener||k));else if(typeof I!="function"){for(Q=-1,D=I.length-1;D>=0;D--)if(I[D]===k||I[D].listener===k){O=I[D].listener,Q=D;break}if(Q<0)return this;Q===0?I.shift():m(I,Q),I.length===1&&(P[C]=I[0]),P.removeListener!==void 0&&this.emit("removeListener",C,O||k)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(C){var k,I,P;if(I=this._events,I===void 0)return this;if(I.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):I[C]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete I[C]),this;if(arguments.length===0){var Q=Object.keys(I),D;for(P=0;P<Q.length;++P)D=Q[P],D!=="removeListener"&&this.removeAllListeners(D);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(k=I[C],typeof k=="function")this.removeListener(C,k);else if(k!==void 0)for(P=k.length-1;P>=0;P--)this.removeListener(C,k[P]);return this};function u(w,C,k){var I=w._events;if(I===void 0)return[];var P=I[C];return P===void 0?[]:typeof P=="function"?k?[P.listener||P]:[P]:k?v(P):p(P,P.length)}s.prototype.listeners=function(C){return u(this,C,!0)},s.prototype.rawListeners=function(C){return u(this,C,!1)},s.listenerCount=function(w,C){return typeof w.listenerCount=="function"?w.listenerCount(C):h.call(w,C)},s.prototype.listenerCount=h;function h(w){var C=this._events;if(C!==void 0){var k=C[w];if(typeof k=="function")return 1;if(k!==void 0)return k.length}return 0}s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function p(w,C){for(var k=new Array(C),I=0;I<C;++I)k[I]=w[I];return k}function m(w,C){for(;C+1<w.length;C++)w[C]=w[C+1];w.pop()}function v(w){for(var C=new Array(w.length),k=0;k<C.length;++k)C[k]=w[k].listener||w[k];return C}function y(w,C){return new Promise(function(k,I){function P(D){w.removeListener(C,Q),I(D)}function Q(){typeof w.removeListener=="function"&&w.removeListener("error",P),k([].slice.call(arguments))}T(w,C,Q,{once:!0}),C!=="error"&&B(w,P,{once:!0})})}function B(w,C,k){typeof w.on=="function"&&T(w,"error",C,k)}function T(w,C,k,I){if(typeof w.on=="function")I.once?w.once(C,k):w.on(C,k);else if(typeof w.addEventListener=="function")w.addEventListener(C,function P(Q){I.once&&w.removeEventListener(C,P),k(Q)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof w)}return Na.exports}var er=K4();let yg=!0,V4=!0;function Hs(n,e,t){const r=n.match(e);return r&&r.length>=t&&parseFloat(r[t],10)}function Fi(n,e,t){if(!n.RTCPeerConnection)return;if(!Object.getOwnPropertyDescriptor(EventTarget.prototype,"addEventListener").writable){return}const i=n.RTCPeerConnection.prototype,s=i.addEventListener;i.addEventListener=function(o,A){if(o!==e)return s.apply(this,arguments);const c=l=>{const d=t(l);d&&(A.handleEvent?A.handleEvent(d):A(d))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(A,c),s.apply(this,[o,c])};const a=i.removeEventListener;i.removeEventListener=function(o,A){if(o!==e||!this._eventMap||!this._eventMap[e])return a.apply(this,arguments);if(!this._eventMap[e].has(A))return a.apply(this,arguments);const c=this._eventMap[e].get(A);return this._eventMap[e].delete(A),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[o,c])},Object.defineProperty(i,"on"+e,{get(){return this["_on"+e]},set(o){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),o&&this.addEventListener(e,this["_on"+e]=o)},enumerable:!0,configurable:!0})}function z4(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(yg=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function G4(n){return typeof n!="boolean"?new Error("Argument type: "+typeof n+". Please use a boolean."):(V4=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function wg(){}function q4(n){const e={browser:null,version:null};if(typeof n>"u"||!n.navigator||!n.navigator.userAgent)return e.browser="Not a browser.",e;const t=n.navigator;if(t.userAgentData&&t.userAgentData.brands){const r=t.userAgentData.brands.find(i=>i.brand==="Chromium");if(r)return{browser:"chrome",version:parseInt(r.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(Hs(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Hs(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Hs(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=Hs(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function J0(n){return Object.prototype.toString.call(n)==="[object Object]"}function bg(n){return J0(n)?Object.keys(n).reduce(function(e,t){const r=J0(n[t]),i=r?bg(n[t]):n[t],s=r&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):n}function ed(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(r=>{r.endsWith("Id")?ed(n,n.get(e[r]),t):r.endsWith("Ids")&&e[r].forEach(i=>{ed(n,n.get(i),t)})}))}function Y0(n,e,t){const r=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return n.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{n.forEach(o=>{o.type===r&&o.trackId===a.id&&ed(n,o,i)})}),i}const Z0=wg;function Bg(n,e){const t=n&&n.navigator;if(!t.mediaDevices)return;const r=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const A={};return Object.keys(o).forEach(c=>{if(c==="require"||c==="advanced"||c==="mediaSource")return;const l=typeof o[c]=="object"?o[c]:{ideal:o[c]};l.exact!==void 0&&typeof l.exact=="number"&&(l.min=l.max=l.exact);const d=function(u,h){return u?u+h.charAt(0).toUpperCase()+h.slice(1):h==="deviceId"?"sourceId":h};if(l.ideal!==void 0){A.optional=A.optional||[];let u={};typeof l.ideal=="number"?(u[d("min",c)]=l.ideal,A.optional.push(u),u={},u[d("max",c)]=l.ideal,A.optional.push(u)):(u[d("",c)]=l.ideal,A.optional.push(u))}l.exact!==void 0&&typeof l.exact!="number"?(A.mandatory=A.mandatory||{},A.mandatory[d("",c)]=l.exact):["min","max"].forEach(u=>{l[u]!==void 0&&(A.mandatory=A.mandatory||{},A.mandatory[d(u,c)]=l[u])})}),o.advanced&&(A.optional=(A.optional||[]).concat(o.advanced)),A},i=function(o,A){if(e.version>=61)return A(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const c=function(l,d,u){d in l&&!(u in l)&&(l[u]=l[d],delete l[d])};o=JSON.parse(JSON.stringify(o)),c(o.audio,"autoGainControl","googAutoGainControl"),c(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=r(o.audio)}if(o&&typeof o.video=="object"){let c=o.video.facingMode;c=c&&(typeof c=="object"?c:{ideal:c});const l=e.version<66;if(c&&(c.exact==="user"||c.exact==="environment"||c.ideal==="user"||c.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!l)){delete o.video.facingMode;let d;if(c.exact==="environment"||c.ideal==="environment"?d=["back","rear"]:(c.exact==="user"||c.ideal==="user")&&(d=["front"]),d)return t.mediaDevices.enumerateDevices().then(u=>{u=u.filter(p=>p.kind==="videoinput");let h=u.find(p=>d.some(m=>p.label.toLowerCase().includes(m)));return!h&&u.length&&d.includes("back")&&(h=u[u.length-1]),h&&(o.video.deviceId=c.exact?{exact:h.deviceId}:{ideal:h.deviceId}),o.video=r(o.video),Z0("chrome: "+JSON.stringify(o)),A(o)})}o.video=r(o.video)}return Z0("chrome: "+JSON.stringify(o)),A(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,A,c){i(o,l=>{t.webkitGetUserMedia(l,A,d=>{c&&c(s(d))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(A){return i(A,c=>o(c).then(l=>{if(c.audio&&!l.getAudioTracks().length||c.video&&!l.getVideoTracks().length)throw l.getTracks().forEach(d=>{d.stop()}),new DOMException("","NotFoundError");return l},l=>Promise.reject(s(l))))}}}function Cg(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function Sg(n,e){if(!(e.version>102))if(typeof n=="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(r){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=r)},enumerable:!0,configurable:!0});const t=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=i=>{i.stream.addEventListener("addtrack",s=>{let a;n.RTCPeerConnection.prototype.getReceivers?a=this.getReceivers().find(A=>A.track&&A.track.id===s.track.id):a={track:s.track};const o=new Event("track");o.track=s.track,o.receiver=a,o.transceiver={receiver:a},o.streams=[i.stream],this.dispatchEvent(o)}),i.stream.getTracks().forEach(s=>{let a;n.RTCPeerConnection.prototype.getReceivers?a=this.getReceivers().find(A=>A.track&&A.track.id===s.id):a={track:s};const o=new Event("track");o.track=s,o.receiver=a,o.transceiver={receiver:a},o.streams=[i.stream],this.dispatchEvent(o)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Fi(n,"track",t=>(t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t))}function xg(n){if(typeof n=="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!n.RTCPeerConnection.prototype.getSenders){n.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(o,A){let c=i.apply(this,arguments);return c||(c=e(this,o),this._senders.push(c)),c};const s=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(o){s.apply(this,arguments);const A=this._senders.indexOf(o);A!==-1&&this._senders.splice(A,1)}}const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],r.apply(this,[s]),s.getTracks().forEach(a=>{const o=this._senders.find(A=>A.track===a);o&&this._senders.splice(this._senders.indexOf(o),1)})}}else if(typeof n=="object"&&n.RTCPeerConnection&&"getSenders"in n.RTCPeerConnection.prototype&&"createDTMFSender"in n.RTCPeerConnection.prototype&&n.RTCRtpSender&&!("dtmf"in n.RTCRtpSender.prototype)){const e=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){const r=e.apply(this,[]);return r.forEach(i=>i._pc=this),r},Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function kg(n,e){if(e.version>=67||!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver))return;if(!("getStats"in n.RTCRtpSender.prototype)){const r=n.RTCPeerConnection.prototype.getSenders;r&&(n.RTCPeerConnection.prototype.getSenders=function(){const a=r.apply(this,[]);return a.forEach(o=>o._pc=this),a});const i=n.RTCPeerConnection.prototype.addTrack;i&&(n.RTCPeerConnection.prototype.addTrack=function(){const a=i.apply(this,arguments);return a._pc=this,a}),n.RTCRtpSender.prototype.getStats=function(){const a=this;return this._pc.getStats().then(o=>Y0(o,a.track,!0))}}if(!("getStats"in n.RTCRtpReceiver.prototype)){const r=n.RTCPeerConnection.prototype.getReceivers;r&&(n.RTCPeerConnection.prototype.getReceivers=function(){const s=r.apply(this,[]);return s.forEach(a=>a._pc=this),s}),Fi(n,"track",i=>(i.receiver._pc=i.srcElement,i)),n.RTCRtpReceiver.prototype.getStats=function(){const s=this;return this._pc.getStats().then(a=>Y0(a,s.track,!1))}}if(!("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype))return;const t=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){const i=arguments[0];let s,a,o;return this.getSenders().forEach(A=>{A.track===i&&(s?o=!0:s=A)}),this.getReceivers().forEach(A=>(A.track===i&&(a?o=!0:a=A),A.track===i)),o||s&&a?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):s?s.getStats():a?a.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Tg(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,o){if(!o)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const A=e.apply(this,arguments);return this._shimmedLocalStreams[o.id]?this._shimmedLocalStreams[o.id].indexOf(A)===-1&&this._shimmedLocalStreams[o.id].push(A):this._shimmedLocalStreams[o.id]=[o,A],A};const t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(c=>{if(this.getSenders().find(d=>d.track===c))throw new DOMException("Track already exists.","InvalidAccessError")});const o=this.getSenders();t.apply(this,arguments);const A=this.getSenders().filter(c=>o.indexOf(c)===-1);this._shimmedLocalStreams[a.id]=[a].concat(A)};const r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],r.apply(this,arguments)};const i=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(o=>{const A=this._shimmedLocalStreams[o].indexOf(a);A!==-1&&this._shimmedLocalStreams[o].splice(A,1),this._shimmedLocalStreams[o].length===1&&delete this._shimmedLocalStreams[o]}),i.apply(this,arguments)}}function Eg(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Tg(n);const t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){const l=t.apply(this);return this._reverseStreams=this._reverseStreams||{},l.map(d=>this._reverseStreams[d.id])};const r=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(l){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},l.getTracks().forEach(d=>{if(this.getSenders().find(h=>h.track===d))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[l.id]){const d=new n.MediaStream(l.getTracks());this._streams[l.id]=d,this._reverseStreams[d.id]=l,l=d}r.apply(this,[l])};const i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(l){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[l.id]||l]),delete this._reverseStreams[this._streams[l.id]?this._streams[l.id].id:l.id],delete this._streams[l.id]},n.RTCPeerConnection.prototype.addTrack=function(l,d){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const u=[].slice.call(arguments,1);if(u.length!==1||!u[0].getTracks().find(m=>m===l))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(m=>m.track===l))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const p=this._streams[d.id];if(p)p.addTrack(l),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const m=new n.MediaStream([l]);this._streams[d.id]=m,this._reverseStreams[m.id]=d,this.addStream(m)}return this.getSenders().find(m=>m.track===l)};function s(c,l){let d=l.sdp;return Object.keys(c._reverseStreams||[]).forEach(u=>{const h=c._reverseStreams[u],p=c._streams[h.id];d=d.replace(new RegExp(p.id,"g"),h.id)}),new RTCSessionDescription({type:l.type,sdp:d})}function a(c,l){let d=l.sdp;return Object.keys(c._reverseStreams||[]).forEach(u=>{const h=c._reverseStreams[u],p=c._streams[h.id];d=d.replace(new RegExp(h.id,"g"),p.id)}),new RTCSessionDescription({type:l.type,sdp:d})}["createOffer","createAnswer"].forEach(function(c){const l=n.RTCPeerConnection.prototype[c],d={[c](){const u=arguments;return arguments.length&&typeof arguments[0]=="function"?l.apply(this,[p=>{const m=s(this,p);u[0].apply(null,[m])},p=>{u[1]&&u[1].apply(null,p)},arguments[2]]):l.apply(this,arguments).then(p=>s(this,p))}};n.RTCPeerConnection.prototype[c]=d[c]});const o=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const A=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get(){const c=A.get.apply(this);return c.type===""?c:s(this,c)}}),n.RTCPeerConnection.prototype.removeTrack=function(l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!l._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(l._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let u;Object.keys(this._streams).forEach(h=>{this._streams[h].getTracks().find(m=>l.track===m)&&(u=this._streams[h])}),u&&(u.getTracks().length===1?this.removeStream(this._reverseStreams[u.id]):u.removeTrack(l.track),this.dispatchEvent(new Event("negotiationneeded")))}}function td(n,e){!n.RTCPeerConnection&&n.webkitRTCPeerConnection&&(n.RTCPeerConnection=n.webkitRTCPeerConnection),n.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const r=n.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=i[t]})}function Ug(n,e){e.version>102||Fi(n,"negotiationneeded",t=>{const r=t.target;if(!((e.version<72||r.getConfiguration&&r.getConfiguration().sdpSemantics==="plan-b")&&r.signalingState!=="stable"))return t})}var eh=Object.freeze({__proto__:null,fixNegotiationNeeded:Ug,shimAddTrackRemoveTrack:Eg,shimAddTrackRemoveTrackWithNative:Tg,shimGetSendersWithDtmf:xg,shimGetUserMedia:Bg,shimMediaStream:Cg,shimOnTrack:Sg,shimPeerConnection:td,shimSenderReceiverGetStats:kg});function Ig(n,e){const t=n&&n.navigator,r=n&&n.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,A){o in a&&!(A in a)&&(a[A]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)},r&&r.prototype.getSettings){const a=r.prototype.getSettings;r.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(r&&r.prototype.applyConstraints){const a=r.prototype.applyConstraints;r.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function W4(n,e){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(r){if(!(r&&r.video)){const i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return r.video===!0?r.video={mediaSource:e}:r.video.mediaSource=e,n.navigator.mediaDevices.getUserMedia(r)})}function Fg(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function rd(n,e){typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection)||(!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const r=n.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};n.RTCPeerConnection.prototype[t]=i[t]}))}function _g(n,e){if(typeof n!="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection)||e.version>=151)return;const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},r=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){const s=Array.prototype.slice.call(arguments),a=s[0],o=s[1],A=s[2];return this.signalingState==="closed"?Promise.resolve(new Map):r.apply(this,[a||null]).then(c=>{if(e.version<53&&!o)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((d,u)=>{c.set(u,Object.assign({},d,{type:t[d.type]||d.type}))})}return c}).then(o,A)}}function Mg(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpSender.prototype)return;const e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){const i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i});const t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){const i=t.apply(this,arguments);return i._pc=this,i}),n.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Qg(n){if(!(typeof n=="object"&&n.RTCPeerConnection&&n.RTCRtpSender)||n.RTCRtpSender&&"getStats"in n.RTCRtpReceiver.prototype)return;const e=n.RTCPeerConnection.prototype.getReceivers;e&&(n.RTCPeerConnection.prototype.getReceivers=function(){const r=e.apply(this,[]);return r.forEach(i=>i._pc=this),r}),Fi(n,"track",t=>(t.receiver._pc=t.srcElement,t)),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Pg(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){this.getSenders().forEach(r=>{r.track&&t.getTracks().includes(r.track)&&this.removeTrack(r)})})}function Rg(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Dg(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.addTransceiver;e&&(n.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let r=arguments[1]&&arguments[1].sendEncodings;r===void 0&&(r=[]),r=[...r];const i=r.length>0;i&&r.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(i){const a=s.sender,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=r,a.sendEncodings=r,this.setParametersPromises.push(a.setParameters(o).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return s})}function Lg(n){if(!(typeof n=="object"&&n.RTCRtpSender))return;const e=n.RTCRtpSender.prototype.getParameters;e&&(n.RTCRtpSender.prototype.getParameters=function(){const r=e.apply(this,arguments);return"encodings"in r||(r.encodings=[].concat(this.sendEncodings||[{}])),r})}function Og(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function Hg(n){if(!(typeof n=="object"&&n.RTCPeerConnection))return;const e=n.RTCPeerConnection.prototype.createAnswer;n.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}var th=Object.freeze({__proto__:null,shimAddTransceiver:Dg,shimCreateAnswer:Hg,shimCreateOffer:Og,shimGetDisplayMedia:W4,shimGetParameters:Lg,shimGetStats:_g,shimGetUserMedia:Ig,shimOnTrack:Fg,shimPeerConnection:rd,shimRTCDataChannel:Rg,shimReceiverGetStats:Qg,shimRemoveStream:Pg,shimSenderGetStats:Mg});function Ng(n){if(!(typeof n!="object"||!n.RTCPeerConnection)){if("getLocalStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in n.RTCPeerConnection.prototype)){const e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addStream=function(r){this._localStreams||(this._localStreams=[]),this._localStreams.includes(r)||this._localStreams.push(r),r.getAudioTracks().forEach(i=>e.call(this,i,r)),r.getVideoTracks().forEach(i=>e.call(this,i,r))},n.RTCPeerConnection.prototype.addTrack=function(r){for(var i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];return s&&s.forEach(o=>{this._localStreams?this._localStreams.includes(o)||this._localStreams.push(o):this._localStreams=[o]}),e.apply(this,arguments)}}"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const r=this._localStreams.indexOf(t);if(r===-1)return;this._localStreams.splice(r,1);const i=t.getTracks();this.getSenders().forEach(s=>{i.includes(s.track)&&this.removeTrack(s)})})}}function Kg(n){if(!(typeof n!="object"||!n.RTCPeerConnection)&&("getRemoteStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in n.RTCPeerConnection.prototype))){Object.defineProperty(n.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=r=>{r.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){const r=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(s=>{if(r._remoteStreams||(r._remoteStreams=[]),r._remoteStreams.indexOf(s)>=0)return;r._remoteStreams.push(s);const a=new Event("addstream");a.stream=s,r.dispatchEvent(a)})}),e.apply(r,arguments)}}}function Vg(n){if(typeof n!="object"||!n.RTCPeerConnection)return;const e=n.RTCPeerConnection.prototype,t=e.createOffer,r=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(c,l){const d=arguments.length>=2?arguments[2]:arguments[0],u=t.apply(this,[d]);return l?(u.then(c,l),Promise.resolve()):u},e.createAnswer=function(c,l){const d=arguments.length>=2?arguments[2]:arguments[0],u=r.apply(this,[d]);return l?(u.then(c,l),Promise.resolve()):u};let o=function(A,c,l){const d=i.apply(this,[A]);return l?(d.then(c,l),Promise.resolve()):d};e.setLocalDescription=o,o=function(A,c,l){const d=s.apply(this,[A]);return l?(d.then(c,l),Promise.resolve()):d},e.setRemoteDescription=o,o=function(A,c,l){const d=a.apply(this,[A]);return l?(d.then(c,l),Promise.resolve()):d},e.addIceCandidate=o}function zg(n){const e=n&&n.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,r=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>r(Gg(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(r,i,s){e.mediaDevices.getUserMedia(r).then(i,s)}).bind(e))}function Gg(n){return n&&n.video!==void 0?Object.assign({},n,{video:bg(n.video)}):n}function qg(n){if(!n.RTCPeerConnection)return;const e=n.RTCPeerConnection;n.RTCPeerConnection=function(r,i){if(r&&r.iceServers){const s=[];for(let a=0;a<r.iceServers.length;a++){let o=r.iceServers[a];o.urls===void 0&&o.url?(o=JSON.parse(JSON.stringify(o)),o.urls=o.url,delete o.url,s.push(o)):s.push(r.iceServers[a])}r.iceServers=s}return new e(r,i)},n.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(n.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function Wg(n){typeof n=="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function $g(n){const e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(r){if(r){typeof r.offerToReceiveAudio<"u"&&(r.offerToReceiveAudio=!!r.offerToReceiveAudio);const i=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");r.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):r.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio",{direction:"recvonly"}),typeof r.offerToReceiveVideo<"u"&&(r.offerToReceiveVideo=!!r.offerToReceiveVideo);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="video");r.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):r.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function jg(n){typeof n!="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}var rh=Object.freeze({__proto__:null,shimAudioContext:jg,shimCallbacksAPI:Vg,shimConstraints:Gg,shimCreateOfferLegacy:$g,shimGetUserMedia:zg,shimLocalStreamsAPI:Ng,shimRTCIceServerUrls:qg,shimRemoteStreamsAPI:Kg,shimTrackEventTransceiver:Wg}),Ic={exports:{}},nh;function $4(){return nh||(nh=1,function(n){const e={};e.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
20
20
  `).map(r=>r.trim())},e.splitSections=function(t){return t.split(`