robopark 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -105
- package/bin/robopark.js +9 -2
- package/conversation/elevenlabs_agent.py +1617 -1617
- package/conversation/supervisor_store.py +189 -189
- package/dist/{kernel/config-schema.js → config-schema.js} +1 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/robopark/add-robot.js +1 -0
- package/dist/robopark/add-robot.js.map +1 -0
- package/dist/robopark/agent-ctl.js +1 -0
- package/dist/robopark/agent-ctl.js.map +1 -0
- package/dist/robopark/auto-start.js +51 -73
- package/dist/robopark/auto-start.js.map +1 -0
- package/dist/robopark/conversation.js +1 -0
- package/dist/robopark/conversation.js.map +1 -0
- package/dist/robopark/discovery.js +1 -0
- package/dist/robopark/discovery.js.map +1 -0
- package/dist/robopark/doctor.js +1 -0
- package/dist/robopark/doctor.js.map +1 -0
- package/dist/robopark/enroll.js +1 -0
- package/dist/robopark/enroll.js.map +1 -0
- package/dist/robopark/llm-set.js +1 -0
- package/dist/robopark/llm-set.js.map +1 -0
- package/dist/robopark/motor-control.js +1 -0
- package/dist/robopark/motor-control.js.map +1 -0
- package/dist/robopark/preview-agent-launcher.js +1 -0
- package/dist/robopark/preview-agent-launcher.js.map +1 -0
- package/dist/robopark/probe.js +16 -15
- package/dist/robopark/probe.js.map +1 -0
- package/dist/robopark/profile.js +1 -0
- package/dist/robopark/profile.js.map +1 -0
- package/dist/robopark/python-env.js +1 -7
- package/dist/robopark/python-env.js.map +1 -0
- package/dist/robopark/robot-runtime.js +1 -0
- package/dist/robopark/robot-runtime.js.map +1 -0
- package/dist/robopark/scan.js +1 -0
- package/dist/robopark/scan.js.map +1 -0
- package/dist/robopark/screen-control.js +1 -0
- package/dist/robopark/screen-control.js.map +1 -0
- package/dist/robopark/secrets.js +1 -0
- package/dist/robopark/secrets.js.map +1 -0
- package/dist/robopark/serve.js +6 -8
- package/dist/robopark/serve.js.map +1 -0
- package/dist/robopark/server-add.js +1 -0
- package/dist/robopark/server-add.js.map +1 -0
- package/dist/robopark/setup-livekit.js +53 -52
- package/dist/robopark/setup-livekit.js.map +1 -0
- package/dist/robopark/setup.js +1 -0
- package/dist/robopark/setup.js.map +1 -0
- package/dist/robopark/stop-all.js +1 -0
- package/dist/robopark/stop-all.js.map +1 -0
- package/dist/robopark/verify.js +1 -0
- package/dist/robopark/verify.js.map +1 -0
- package/dist/robopark/vision-agent-launcher.js +1 -0
- package/dist/robopark/vision-agent-launcher.js.map +1 -0
- package/dist/robopark/vision-control.js +1 -0
- package/dist/robopark/vision-control.js.map +1 -0
- package/dist/robopark-cli.js +7 -125
- package/dist/robopark-cli.js.map +1 -0
- package/package.json +16 -56
- package/pi-client/_install_steps.sh +29 -29
- package/pi-client/client.py +76 -76
- package/pi-client/install.sh +40 -40
- package/pi-client/join_convo.sh +54 -54
- package/pi-client/livekit_bridge.py +24 -24
- package/pi-client/motor_bridge.py +10 -10
- package/scheduler/__pycache__/main.cpython-312.pyc +0 -0
- package/scheduler/main.py +196 -17
- package/scheduler/media_lock.py +57 -57
- package/scheduler/preview_agent.py +1122 -1122
- package/scheduler/production_config.json +73 -113
- package/scheduler/scripts/install-robot-supervisor-linux.sh +33 -33
- package/{ui/standalone/public → scheduler/static}/voice-join.html +101 -13
- package/screen/screen_runtime.py +75 -75
- package/vision/app_pi_clean.py +297 -297
- package/vision/audio_server_pi.py +24 -24
- package/vision/install.sh +34 -34
- package/vision/motor_server.py +275 -275
- package/vision/requirements_camera.txt +6 -6
- package/vision/requirements_motor.txt +4 -4
- package/vision/requirements_pi_unified.txt +2 -2
- package/vision/requirements_vision_agent.txt +19 -19
- package/vision/run.sh +244 -244
- package/vision/services/services.sh +12 -12
- package/dist/kernel/types.js +0 -7
- package/dist/robopark/access.js +0 -99
- package/dist/robopark/control-center-html.js +0 -9191
- package/dist/robopark/control-server.js +0 -148
- package/dist/robopark/deployment-commands.js +0 -47
- package/dist/robopark/frontend-service.js +0 -80
- package/dist/robopark/standalone.js +0 -584
- package/dist/robopark/voice-join-html.js +0 -57
- package/scripts/windows-shim-fix.cjs +0 -58
- package/static/robopark/barracuda.png +0 -0
- package/static/robopark/bmw.png +0 -0
- package/static/robopark/jaguar.png +0 -0
- package/static/robopark/magnus.jpg +0 -0
- package/static/robopark/panda.png +0 -0
- package/static/robopark/tesla.png +0 -0
- package/static/robopark/titan.jpg +0 -0
- package/static/robopark/volt.png +0 -0
- package/static/vendor/elevenlabs-client.LICENSE +0 -21
- package/static/vendor/elevenlabs-client.iife.js +0 -24200
- package/ui/ROBOVOICE_BUILD.json +0 -9
- package/ui/standalone/.next/BUILD_ID +0 -1
- package/ui/standalone/.next/app-build-manifest.json +0 -391
- package/ui/standalone/.next/app-path-routes-manifest.json +0 -55
- package/ui/standalone/.next/build-manifest.json +0 -33
- package/ui/standalone/.next/package.json +0 -1
- package/ui/standalone/.next/prerender-manifest.json +0 -41
- package/ui/standalone/.next/react-loadable-manifest.json +0 -14
- package/ui/standalone/.next/required-server-files.json +0 -362
- package/ui/standalone/.next/routes-manifest.json +0 -246
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js +0 -1
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/(app)/page.js +0 -2
- package/ui/standalone/.next/server/app/(app)/page.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/(app)/page_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/(app)/voice/page.js +0 -12
- package/ui/standalone/.next/server/app/(app)/voice/page.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/(app)/voice/page_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/_not-found/page.js +0 -12
- package/ui/standalone/.next/server/app/_not-found/page.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/connection-details/route.js +0 -1
- package/ui/standalone/.next/server/app/api/connection-details/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/connection-details/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/device-character/route.js +0 -1
- package/ui/standalone/.next/server/app/api/device-character/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/device-character/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js +0 -1
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/download-piper-model/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/model-status/route.js +0 -1
- package/ui/standalone/.next/server/app/api/model-status/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/model-status/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/models/route.js +0 -1
- package/ui/standalone/.next/server/app/api/models/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/models/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/prewarm/route.js +0 -1
- package/ui/standalone/.next/server/app/api/prewarm/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/prewarm/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/prompt/route.js +0 -1
- package/ui/standalone/.next/server/app/api/prompt/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/prompt/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/reload-tools/route.js +0 -1
- package/ui/standalone/.next/server/app/api/reload-tools/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/reload-tools/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/device-access/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/robots/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/servers/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/sessions/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js +0 -1
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/settings/route.js +0 -1
- package/ui/standalone/.next/server/app/api/settings/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/complete/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/complete/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/complete/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/status/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/status/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-groq/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-hass/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/test-tts/route.js +0 -1
- package/ui/standalone/.next/server/app/api/test-tts/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/test-tts/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js +0 -1
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/turn-credentials/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/voices/route.js +0 -1
- package/ui/standalone/.next/server/app/api/voices/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/voices/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/wake/route.js +0 -1
- package/ui/standalone/.next/server/app/api/wake/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/wake/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/models/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/status/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/api/wake-word/upload/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/favicon.ico/route.js +0 -1
- package/ui/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/favicon.ico.body +0 -0
- package/ui/standalone/.next/server/app/favicon.ico.meta +0 -1
- package/ui/standalone/.next/server/app/fed/[...path]/route.js +0 -4
- package/ui/standalone/.next/server/app/fed/[...path]/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/fed/[...path]/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js +0 -1
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js +0 -1
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/robopark/[...path]/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js +0 -1
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js +0 -1
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/robopark/page.js +0 -2
- package/ui/standalone/.next/server/app/robopark/page.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/robopark/page_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/tailnet/route.js +0 -1
- package/ui/standalone/.next/server/app/tailnet/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/tailnet/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js +0 -1
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app/voice-tester/page.js +0 -2
- package/ui/standalone/.next/server/app/voice-tester/page.js.nft.json +0 -1
- package/ui/standalone/.next/server/app/voice-tester/page_client-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/app-paths-manifest.json +0 -55
- package/ui/standalone/.next/server/chunks/1428.js +0 -1
- package/ui/standalone/.next/server/chunks/1692.js +0 -1
- package/ui/standalone/.next/server/chunks/37.js +0 -1
- package/ui/standalone/.next/server/chunks/4876.js +0 -1
- package/ui/standalone/.next/server/chunks/5232.js +0 -9
- package/ui/standalone/.next/server/chunks/5455.js +0 -11
- package/ui/standalone/.next/server/chunks/5611.js +0 -6
- package/ui/standalone/.next/server/chunks/5873.js +0 -22
- package/ui/standalone/.next/server/chunks/6018.js +0 -1
- package/ui/standalone/.next/server/chunks/8755.js +0 -1
- package/ui/standalone/.next/server/chunks/9077.js +0 -11
- package/ui/standalone/.next/server/functions-config-manifest.json +0 -9
- package/ui/standalone/.next/server/middleware-build-manifest.js +0 -1
- package/ui/standalone/.next/server/middleware-manifest.json +0 -6
- package/ui/standalone/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/ui/standalone/.next/server/next-font-manifest.js +0 -1
- package/ui/standalone/.next/server/next-font-manifest.json +0 -1
- package/ui/standalone/.next/server/pages/500.html +0 -1
- package/ui/standalone/.next/server/pages/_app.js +0 -1
- package/ui/standalone/.next/server/pages/_app.js.nft.json +0 -1
- package/ui/standalone/.next/server/pages/_document.js +0 -1
- package/ui/standalone/.next/server/pages/_document.js.nft.json +0 -1
- package/ui/standalone/.next/server/pages/_error.js +0 -19
- package/ui/standalone/.next/server/pages/_error.js.nft.json +0 -1
- package/ui/standalone/.next/server/pages-manifest.json +0 -5
- package/ui/standalone/.next/server/server-reference-manifest.js +0 -1
- package/ui/standalone/.next/server/server-reference-manifest.json +0 -1
- package/ui/standalone/.next/server/webpack-runtime.js +0 -1
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_buildManifest.js +0 -1
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_ssgManifest.js +0 -1
- package/ui/standalone/.next/static/chunks/1255-404bb8de49c90395.js +0 -1
- package/ui/standalone/.next/static/chunks/144d3bae-bd5d150c0cab972e.js +0 -1
- package/ui/standalone/.next/static/chunks/1646.9123ee47220ed70b.js +0 -1
- package/ui/standalone/.next/static/chunks/2333-43c39acb531f7d4e.js +0 -3
- package/ui/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +0 -1
- package/ui/standalone/.next/static/chunks/5139.c5e46d26064a85db.js +0 -1
- package/ui/standalone/.next/static/chunks/76e8f37e-2ae0e3fe7b44d874.js +0 -1
- package/ui/standalone/.next/static/chunks/9880-53262785284464cc.js +0 -1
- package/ui/standalone/.next/static/chunks/adfb71a7-625c1b5ebd039b6a.js +0 -1
- package/ui/standalone/.next/static/chunks/app/(app)/layout-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/(app)/opengraph-image-xg4ifa/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/(app)/page-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/(app)/voice/page-72d72d9a70d9c1d4.js +0 -1
- package/ui/standalone/.next/static/chunks/app/_not-found/page-cfd7daa82d71540c.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/connection-details/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/device-character/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/download-piper-model/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/model-status/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/models/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/prewarm/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/prompt/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/reload-tools/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/camera-token/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/character-ai/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/device-access/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/devices/[deviceId]/control/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/live-rooms/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/monitor-token/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/operations/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/metrics/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/[sessionId]/end/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/[sessionId]/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/settings/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/complete/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/status/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/test-groq/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/test-hass/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/test-n8n/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/setup/test-ollama/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/test-tts/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/turn-credentials/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/voices/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/wake/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/wake-word/models/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/wake-word/status/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/api/wake-word/upload/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/fed/[...path]/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/fed/media/robots/[robotId]/video_feed/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/layout-fcce963da1d8220f.js +0 -1
- package/ui/standalone/.next/static/chunks/app/robopark/[...path]/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/robopark/api/[...path]/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/robopark/api/robots/[robotId]/stream/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/robopark/page-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/tailnet/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/vendor/livekit-client.umd.js/route-5f312b128a0caf75.js +0 -1
- package/ui/standalone/.next/static/chunks/app/voice-tester/page-ae699e048e0eb834.js +0 -1
- package/ui/standalone/.next/static/chunks/framework-e60c938074ff7136.js +0 -1
- package/ui/standalone/.next/static/chunks/main-9e24e8708ff075fc.js +0 -1
- package/ui/standalone/.next/static/chunks/main-app-a1f59168303c7f84.js +0 -1
- package/ui/standalone/.next/static/chunks/pages/_app-131c90850aef965b.js +0 -1
- package/ui/standalone/.next/static/chunks/pages/_error-e4ba546eb376bdf4.js +0 -1
- package/ui/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/ui/standalone/.next/static/chunks/webpack-5252e5254da079b5.js +0 -1
- package/ui/standalone/.next/static/css/3f478a573f9be82e.css +0 -1
- package/ui/standalone/.next/static/css/51560c4af1d5a21f.css +0 -1
- package/ui/standalone/.next/static/media/27fe93087559d480-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/4d3869dd8a56345a-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/63f3bb9ce29e22d5-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/79e1c5d0f2fe9f68-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/8bf7b2ceda89477b-s.p.woff2 +0 -0
- package/ui/standalone/.next/static/media/98baa4a7809fbf72-s.woff2 +0 -0
- package/ui/standalone/.next/static/media/f7650dfaa438c37c-s.woff2 +0 -0
- package/ui/standalone/package.json +0 -57
- package/ui/standalone/public/caal-logo.svg +0 -3
- package/ui/standalone/public/commit-mono-400-regular.woff +0 -0
- package/ui/standalone/public/cwl-logo-round.png +0 -0
- package/ui/standalone/public/everett-light.woff +0 -0
- package/ui/standalone/public/hey_cal.ppn +0 -0
- package/ui/standalone/public/install-robot-kiosk.sh +0 -242
- package/ui/standalone/public/lk-logo-dark.svg +0 -18
- package/ui/standalone/public/lk-logo.svg +0 -18
- package/ui/standalone/public/lk-wordmark.svg +0 -12
- package/ui/standalone/public/opengraph-image-bg.png +0 -0
- package/ui/standalone/public/porcupine_params.pv +0 -0
- package/ui/standalone/public/robopark-control.html +0 -9200
- package/ui/standalone/public/static/robopark/barracuda.png +0 -0
- package/ui/standalone/public/static/robopark/bmw.png +0 -0
- package/ui/standalone/public/static/robopark/jaguar.png +0 -0
- package/ui/standalone/public/static/robopark/magnus.jpg +0 -0
- package/ui/standalone/public/static/robopark/panda.png +0 -0
- package/ui/standalone/public/static/robopark/tesla.png +0 -0
- package/ui/standalone/public/static/robopark/titan.jpg +0 -0
- package/ui/standalone/public/static/robopark/volt.png +0 -0
- package/ui/standalone/public/tailnet/index.html +0 -8995
- package/ui/standalone/public/transcript-analytics.html +0 -72
- package/ui/standalone/public/vendor/livekit-client.umd.js +0 -2
- package/ui/standalone/server.js +0 -38
- /package/{ui/standalone/public → scheduler/static}/vendor/elevenlabs-client.iife.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=4876,exports.ids=[4876],exports.modules={11167:(a,b,c)=>{c.d(b,{QP:()=>ai});let d=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),e=[],f=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let d=a[b],e=c.nextPart.get(d);if(e){let c=f(a,b+1,e);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a<i;a++){let b=g[a];if(b.validator(h))return b.classGroupId}},g=(a,b)=>{let c=d();for(let d in a)h(a[d],c,d,b);return c},h=(a,b,c,d)=>{let e=a.length;for(let f=0;f<e;f++)i(a[f],b,c,d)},i=(a,b,c,d)=>"string"==typeof a?void j(a,b,c):"function"==typeof a?void k(a,b,c,d):void l(a,b,c,d),j=(a,b,c)=>{(""===a?b:m(b,a)).classGroupId=c},k=(a,b,c,d)=>{if(n(a))return void h(a(d),b,c,d);null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a})},l=(a,b,c,d)=>{let e=Object.entries(a),f=e.length;for(let a=0;a<f;a++){let[f,g]=e[a];h(g,m(b,f),c,d)}},m=(a,b)=>{let c=a,e=b.split("-"),f=e.length;for(let a=0;a<f;a++){let b=e[a],f=c.nextPart.get(b);f||(f=d(),c.nextPart.set(b,f)),c=f}return c},n=a=>"isThemeGetter"in a&&!0===a.isThemeGetter,o=[],p=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),q=/\s+/,r=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d<a.length;d++)a[d]&&(b=r(a[d]))&&(c&&(c+=" "),c+=b);return c},s=[],t=a=>{let b=b=>b[a]||s;return b.isThemeGetter=!0,b},u=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,v=/^\((?:(\w[\w-]*):)?(.+)\)$/i,w=/^\d+\/\d+$/,x=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,y=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,A=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,B=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,C=a=>w.test(a),D=a=>!!a&&!Number.isNaN(Number(a)),E=a=>!!a&&Number.isInteger(Number(a)),F=a=>a.endsWith("%")&&D(a.slice(0,-1)),G=a=>x.test(a),H=()=>!0,I=a=>y.test(a)&&!z.test(a),J=()=>!1,K=a=>A.test(a),L=a=>B.test(a),M=a=>!O(a)&&!U(a),N=a=>_(a,ad,J),O=a=>u.test(a),P=a=>_(a,ae,I),Q=a=>_(a,af,D),R=a=>_(a,ab,J),S=a=>_(a,ac,L),T=a=>_(a,ah,K),U=a=>v.test(a),V=a=>aa(a,ae),W=a=>aa(a,ag),X=a=>aa(a,ab),Y=a=>aa(a,ad),Z=a=>aa(a,ac),$=a=>aa(a,ah,!0),_=(a,b,c)=>{let d=u.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},aa=(a,b,c=!1)=>{let d=v.exec(a);return!!d&&(d[1]?b(d[1]):c)},ab=a=>"position"===a||"percentage"===a,ac=a=>"image"===a||"url"===a,ad=a=>"length"===a||"size"===a||"bg-size"===a,ae=a=>"length"===a,af=a=>"number"===a,ag=a=>"family-name"===a,ah=a=>"shadow"===a;Symbol.toStringTag;let ai=((a,...b)=>{let c,d,h,i,j=a=>{let b=d(a);if(b)return b;let e=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(q),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a<t.length;++a){let b=t[a];g.push(r+b)}i=b+(i.length>0?" "+i:i)}return i})(a,c);return h(a,e),e};return i=k=>(d=(c=(a=>({cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})(a.cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;h<g;h++){let g=a[h];if(0===d&&0===e){if(":"===g){c.push(a.slice(f,h)),f=h+1;continue}if("/"===g){b=h;continue}}"["===g?d++:"]"===g?d--:"("===g?e++:")"===g&&e--}let h=0===c.length?a:a.slice(f),i=h,j=!1;return h.endsWith("!")?(i=h.slice(0,-1),j=!0):h.startsWith("!")&&(i=h.slice(1),j=!0),p(c,j,i,b&&b>f?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):p(o,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(a),sortModifiers:(a=>{let b=new Map;return a.orderSensitiveModifiers.forEach((a,c)=>{b.set(a,1e6+c)}),a=>{let c=[],d=[];for(let e=0;e<a.length;e++){let f=a[e],g="["===f[0],h=b.has(f);g||h?(d.length>0&&(d.sort(),c.push(...d),d=[]),c.push(f)):d.push(f)}return d.length>0&&(d.sort(),c.push(...d)),c}})(a),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return g(c,b)})(a),{conflictingClassGroups:c,conflictingClassGroupModifiers:d}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return(a=>-1===a.slice(1,-1).indexOf(":")?void 0:(()=>{let b=a.slice(1,-1),c=b.indexOf(":"),d=b.slice(0,c);return d?"arbitrary.."+d:void 0})())(a);let c=a.split("-"),d=+(""===c[0]&&c.length>1);return f(c,d,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=d[a],f=c[a];return b?f?((a,b)=>{let c=Array(a.length+b.length);for(let b=0;b<a.length;b++)c[b]=a[b];for(let d=0;d<b.length;d++)c[a.length+d]=b[d];return c})(f,b):b:f||e}return c[a]||e}}})(a)}))(b.reduce((a,b)=>b(a),a()))).cache.get,h=c.cache.set,i=j,j(k)),(...a)=>i(((...a)=>{let b,c,d=0,e="";for(;d<a.length;)(b=a[d++])&&(c=r(b))&&(e&&(e+=" "),e+=c);return e})(...a))})(()=>{let a=t("color"),b=t("font"),c=t("text"),d=t("font-weight"),e=t("tracking"),f=t("leading"),g=t("breakpoint"),h=t("container"),i=t("spacing"),j=t("radius"),k=t("shadow"),l=t("inset-shadow"),m=t("text-shadow"),n=t("drop-shadow"),o=t("blur"),p=t("perspective"),q=t("aspect"),r=t("ease"),s=t("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),U,O],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[U,O,i],A=()=>[C,"full","auto",...z()],B=()=>[E,"none","subgrid",U,O],I=()=>["auto",{span:["full",E,U,O]},E,U,O],J=()=>[E,"auto",U,O],K=()=>["auto","min","max","fr",U,O],L=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],_=()=>["start","end","center","stretch","center-safe","end-safe"],aa=()=>["auto",...z()],ab=()=>[C,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],ac=()=>[a,U,O],ad=()=>[...v(),X,R,{position:[U,O]}],ae=()=>["no-repeat",{repeat:["","x","y","space","round"]}],af=()=>["auto","cover","contain",Y,N,{size:[U,O]}],ag=()=>[F,V,P],ah=()=>["","none","full",j,U,O],ai=()=>["",D,V,P],aj=()=>["solid","dashed","dotted","double"],ak=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],al=()=>[D,F,X,R],am=()=>["","none",o,U,O],an=()=>["none",D,U,O],ao=()=>["none",D,U,O],ap=()=>[D,U,O],aq=()=>[C,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[G],breakpoint:[G],color:[H],container:[G],"drop-shadow":[G],ease:["in","out","in-out"],font:[M],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[G],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[G],shadow:[G],spacing:["px",D],text:[G],"text-shadow":[G],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",C,O,U,q]}],container:["container"],columns:[{columns:[D,O,U,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{start:A()}],end:[{end:A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[E,"auto",U,O]}],basis:[{basis:[C,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[D,C,"auto","initial","none",O]}],grow:[{grow:["",D,U,O]}],shrink:[{shrink:["",D,U,O]}],order:[{order:[E,"first","last","none",U,O]}],"grid-cols":[{"grid-cols":B()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":B()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":K()}],"auto-rows":[{"auto-rows":K()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...L(),"normal"]}],"justify-items":[{"justify-items":[..._(),"normal"]}],"justify-self":[{"justify-self":["auto",..._()]}],"align-content":[{content:["normal",...L()]}],"align-items":[{items:[..._(),{baseline:["","last"]}]}],"align-self":[{self:["auto",..._(),{baseline:["","last"]}]}],"place-content":[{"place-content":L()}],"place-items":[{"place-items":[..._(),"baseline"]}],"place-self":[{"place-self":["auto",..._()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:aa()}],mx:[{mx:aa()}],my:[{my:aa()}],ms:[{ms:aa()}],me:[{me:aa()}],mt:[{mt:aa()}],mr:[{mr:aa()}],mb:[{mb:aa()}],ml:[{ml:aa()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ab()}],w:[{w:[h,"screen",...ab()]}],"min-w":[{"min-w":[h,"screen","none",...ab()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ab()]}],h:[{h:["screen","lh",...ab()]}],"min-h":[{"min-h":["screen","lh","none",...ab()]}],"max-h":[{"max-h":["screen","lh",...ab()]}],"font-size":[{text:["base",c,V,P]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,U,Q]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",F,O]}],"font-family":[{font:[W,O,b]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[e,U,O]}],"line-clamp":[{"line-clamp":[D,"none",U,Q]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",U,O]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,O]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ac()}],"text-color":[{text:ac()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...aj(),"wavy"]}],"text-decoration-thickness":[{decoration:[D,"from-font","auto",U,P]}],"text-decoration-color":[{decoration:ac()}],"underline-offset":[{"underline-offset":[D,"auto",U,O]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,O]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,O]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ad()}],"bg-repeat":[{bg:ae()}],"bg-size":[{bg:af()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},E,U,O],radial:["",U,O],conic:[E,U,O]},Z,S]}],"bg-color":[{bg:ac()}],"gradient-from-pos":[{from:ag()}],"gradient-via-pos":[{via:ag()}],"gradient-to-pos":[{to:ag()}],"gradient-from":[{from:ac()}],"gradient-via":[{via:ac()}],"gradient-to":[{to:ac()}],rounded:[{rounded:ah()}],"rounded-s":[{"rounded-s":ah()}],"rounded-e":[{"rounded-e":ah()}],"rounded-t":[{"rounded-t":ah()}],"rounded-r":[{"rounded-r":ah()}],"rounded-b":[{"rounded-b":ah()}],"rounded-l":[{"rounded-l":ah()}],"rounded-ss":[{"rounded-ss":ah()}],"rounded-se":[{"rounded-se":ah()}],"rounded-ee":[{"rounded-ee":ah()}],"rounded-es":[{"rounded-es":ah()}],"rounded-tl":[{"rounded-tl":ah()}],"rounded-tr":[{"rounded-tr":ah()}],"rounded-br":[{"rounded-br":ah()}],"rounded-bl":[{"rounded-bl":ah()}],"border-w":[{border:ai()}],"border-w-x":[{"border-x":ai()}],"border-w-y":[{"border-y":ai()}],"border-w-s":[{"border-s":ai()}],"border-w-e":[{"border-e":ai()}],"border-w-t":[{"border-t":ai()}],"border-w-r":[{"border-r":ai()}],"border-w-b":[{"border-b":ai()}],"border-w-l":[{"border-l":ai()}],"divide-x":[{"divide-x":ai()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ai()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...aj(),"hidden","none"]}],"divide-style":[{divide:[...aj(),"hidden","none"]}],"border-color":[{border:ac()}],"border-color-x":[{"border-x":ac()}],"border-color-y":[{"border-y":ac()}],"border-color-s":[{"border-s":ac()}],"border-color-e":[{"border-e":ac()}],"border-color-t":[{"border-t":ac()}],"border-color-r":[{"border-r":ac()}],"border-color-b":[{"border-b":ac()}],"border-color-l":[{"border-l":ac()}],"divide-color":[{divide:ac()}],"outline-style":[{outline:[...aj(),"none","hidden"]}],"outline-offset":[{"outline-offset":[D,U,O]}],"outline-w":[{outline:["",D,V,P]}],"outline-color":[{outline:ac()}],shadow:[{shadow:["","none",k,$,T]}],"shadow-color":[{shadow:ac()}],"inset-shadow":[{"inset-shadow":["none",l,$,T]}],"inset-shadow-color":[{"inset-shadow":ac()}],"ring-w":[{ring:ai()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ac()}],"ring-offset-w":[{"ring-offset":[D,P]}],"ring-offset-color":[{"ring-offset":ac()}],"inset-ring-w":[{"inset-ring":ai()}],"inset-ring-color":[{"inset-ring":ac()}],"text-shadow":[{"text-shadow":["none",m,$,T]}],"text-shadow-color":[{"text-shadow":ac()}],opacity:[{opacity:[D,U,O]}],"mix-blend":[{"mix-blend":[...ak(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ak()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[D]}],"mask-image-linear-from-pos":[{"mask-linear-from":al()}],"mask-image-linear-to-pos":[{"mask-linear-to":al()}],"mask-image-linear-from-color":[{"mask-linear-from":ac()}],"mask-image-linear-to-color":[{"mask-linear-to":ac()}],"mask-image-t-from-pos":[{"mask-t-from":al()}],"mask-image-t-to-pos":[{"mask-t-to":al()}],"mask-image-t-from-color":[{"mask-t-from":ac()}],"mask-image-t-to-color":[{"mask-t-to":ac()}],"mask-image-r-from-pos":[{"mask-r-from":al()}],"mask-image-r-to-pos":[{"mask-r-to":al()}],"mask-image-r-from-color":[{"mask-r-from":ac()}],"mask-image-r-to-color":[{"mask-r-to":ac()}],"mask-image-b-from-pos":[{"mask-b-from":al()}],"mask-image-b-to-pos":[{"mask-b-to":al()}],"mask-image-b-from-color":[{"mask-b-from":ac()}],"mask-image-b-to-color":[{"mask-b-to":ac()}],"mask-image-l-from-pos":[{"mask-l-from":al()}],"mask-image-l-to-pos":[{"mask-l-to":al()}],"mask-image-l-from-color":[{"mask-l-from":ac()}],"mask-image-l-to-color":[{"mask-l-to":ac()}],"mask-image-x-from-pos":[{"mask-x-from":al()}],"mask-image-x-to-pos":[{"mask-x-to":al()}],"mask-image-x-from-color":[{"mask-x-from":ac()}],"mask-image-x-to-color":[{"mask-x-to":ac()}],"mask-image-y-from-pos":[{"mask-y-from":al()}],"mask-image-y-to-pos":[{"mask-y-to":al()}],"mask-image-y-from-color":[{"mask-y-from":ac()}],"mask-image-y-to-color":[{"mask-y-to":ac()}],"mask-image-radial":[{"mask-radial":[U,O]}],"mask-image-radial-from-pos":[{"mask-radial-from":al()}],"mask-image-radial-to-pos":[{"mask-radial-to":al()}],"mask-image-radial-from-color":[{"mask-radial-from":ac()}],"mask-image-radial-to-color":[{"mask-radial-to":ac()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[D]}],"mask-image-conic-from-pos":[{"mask-conic-from":al()}],"mask-image-conic-to-pos":[{"mask-conic-to":al()}],"mask-image-conic-from-color":[{"mask-conic-from":ac()}],"mask-image-conic-to-color":[{"mask-conic-to":ac()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ad()}],"mask-repeat":[{mask:ae()}],"mask-size":[{mask:af()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,O]}],filter:[{filter:["","none",U,O]}],blur:[{blur:am()}],brightness:[{brightness:[D,U,O]}],contrast:[{contrast:[D,U,O]}],"drop-shadow":[{"drop-shadow":["","none",n,$,T]}],"drop-shadow-color":[{"drop-shadow":ac()}],grayscale:[{grayscale:["",D,U,O]}],"hue-rotate":[{"hue-rotate":[D,U,O]}],invert:[{invert:["",D,U,O]}],saturate:[{saturate:[D,U,O]}],sepia:[{sepia:["",D,U,O]}],"backdrop-filter":[{"backdrop-filter":["","none",U,O]}],"backdrop-blur":[{"backdrop-blur":am()}],"backdrop-brightness":[{"backdrop-brightness":[D,U,O]}],"backdrop-contrast":[{"backdrop-contrast":[D,U,O]}],"backdrop-grayscale":[{"backdrop-grayscale":["",D,U,O]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[D,U,O]}],"backdrop-invert":[{"backdrop-invert":["",D,U,O]}],"backdrop-opacity":[{"backdrop-opacity":[D,U,O]}],"backdrop-saturate":[{"backdrop-saturate":[D,U,O]}],"backdrop-sepia":[{"backdrop-sepia":["",D,U,O]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,O]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[D,"initial",U,O]}],ease:[{ease:["linear","initial",r,U,O]}],delay:[{delay:[D,U,O]}],animate:[{animate:["none",s,U,O]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,U,O]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:an()}],"rotate-x":[{"rotate-x":an()}],"rotate-y":[{"rotate-y":an()}],"rotate-z":[{"rotate-z":an()}],scale:[{scale:ao()}],"scale-x":[{"scale-x":ao()}],"scale-y":[{"scale-y":ao()}],"scale-z":[{"scale-z":ao()}],"scale-3d":["scale-3d"],skew:[{skew:ap()}],"skew-x":[{"skew-x":ap()}],"skew-y":[{"skew-y":ap()}],transform:[{transform:[U,O,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:aq()}],"translate-x":[{"translate-x":aq()}],"translate-y":[{"translate-y":aq()}],"translate-z":[{"translate-z":aq()}],"translate-none":["translate-none"],accent:[{accent:ac()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ac()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,O]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,O]}],fill:[{fill:["none",...ac()]}],"stroke-w":[{stroke:[D,V,P,Q]}],stroke:[{stroke:["none",...ac()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})},14230:(a,b,c)=>{let d=c(28706),e=c(33675),f=c(29294),g=c(63033),h=c(26906),i=c(11938),j=c(82831),k=c(30787),l=c(31716),m=c(49290);c(63036);new WeakMap;(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`cookies()\` should be awaited before using its value. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E223",enumerable:!1,configurable:!0})})},28706:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{MutableRequestCookiesAdapter:function(){return l},ReadonlyRequestCookiesError:function(){return g},RequestCookiesAdapter:function(){return h},appendMutableCookies:function(){return k},areCookiesMutableInCurrentPhase:function(){return n},createCookiesWithMutableAccessCheck:function(){return m},getModifiedCookieValues:function(){return j},responseCookiesToRequestCookies:function(){return p}});let d=c(33675),e=c(63036),f=c(29294);class g extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options")}static callable(){throw new g}}class h{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return g.callable;default:return e.ReflectAdapter.get(a,b,c)}}})}}let i=Symbol.for("next.mutated.cookies");function j(a){let b=a[i];return b&&Array.isArray(b)&&0!==b.length?b:[]}function k(a,b){let c=j(b);if(0===c.length)return!1;let e=new d.ResponseCookies(a),f=e.getAll();for(let a of c)e.set(a);for(let a of f)e.set(a);return!0}class l{static wrap(a,b){let c=new d.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let g=[],h=new Set,j=()=>{let a=f.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=!0),g=c.getAll().filter(a=>h.has(a.name)),b){let a=[];for(let b of g){let c=new d.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case i:return g;case"delete":return function(...b){h.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){h.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return e.ReflectAdapter.get(a,b,c)}}});return k}}function m(a){let b=new Proxy(a.mutableCookies,{get(c,d,f){switch(d){case"delete":return function(...d){return o(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return o(a,"cookies().set"),c.set(...d),b};default:return e.ReflectAdapter.get(c,d,f)}}});return b}function n(a){return"action"===a.phase}function o(a,b){if(!n(a))throw new g}function p(a){let b=new d.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},30787:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a,b){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=e(b);if(c&&c.has(a))return c.get(a);var d={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(d,g,h):d[g]=a[g]}return d.default=a,c&&c.set(a,d),d}(c(74515));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},34603:(a,b,c)=>{Object.defineProperty(b,"b",{enumerable:!0,get:function(){return m}});let d=c(67675),e=c(29294),f=c(63033),g=c(26906),h=c(11938),i=c(82831),j=c(30787),k=c(31716),l=c(49290);function m(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&"after"===c.phase&&!(0,k.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${b.route} used "headers" inside "after(...)". This is not supported. If you need this data inside an "after" callback, use "headers" outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E367",enumerable:!1,configurable:!0});if(b.forceStatic)return o(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=Object.defineProperty(Error(`Route ${b.route} used "headers" inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "headers" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E304",enumerable:!1,configurable:!0});throw Error.captureStackTrace(a,m),b.invalidDynamicUsageError??=a,a}case"private-cache":{let a=Object.defineProperty(Error(`Route ${b.route} used "headers" inside "use cache: private". Accessing "headers" inside a private cache scope is not supported. If you need this data inside a cached function use "headers" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E742",enumerable:!1,configurable:!0});throw Error.captureStackTrace(a,m),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used "headers" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "headers" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E127",enumerable:!1,configurable:!0})}if(b.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E525",enumerable:!1,configurable:!0});if(c)switch(c.type){case"prerender":case"prerender-runtime":var j=b,p=c;let e=n.get(p);if(e)return e;let f=(0,i.makeHangingPromise)(p.renderSignal,j.route,"`headers()`");return n.set(p,f),f;case"prerender-client":let q="`headers`";throw Object.defineProperty(new l.InvariantError(`${q} must not be used within a client component. Next.js should be preventing ${q} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E693",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,g.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"request":return(0,g.trackDynamicDataInDynamicRender)(c),o(c.headers)}}(0,f.throwForMissingRequestStore)(a)}c(63036);let n=new WeakMap;function o(a){let b=n.get(a);if(b)return b;let c=Promise.resolve(a);return n.set(a,c),Object.defineProperties(c,{append:{value:a.append.bind(a)},delete:{value:a.delete.bind(a)},get:{value:a.get.bind(a)},has:{value:a.has.bind(a)},set:{value:a.set.bind(a)},getSetCookie:{value:a.getSetCookie.bind(a)},forEach:{value:a.forEach.bind(a)},keys:{value:a.keys.bind(a)},values:{value:a.values.bind(a)},entries:{value:a.entries.bind(a)},[Symbol.iterator]:{value:a[Symbol.iterator].bind(a)}}),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`headers()\` should be awaited before using its value. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E277",enumerable:!1,configurable:!0})})},35916:(a,b,c)=>{let d=c(63033),e=c(29294),f=c(26906),g=c(30787),h=c(11938),i=c(69168),j=c(49290);c(63036);new WeakMap;(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`draftMode()\` should be awaited before using its value. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E377",enumerable:!1,configurable:!0})})},38164:(a,b,c)=>{let d,e;var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q=Object.defineProperty,R=(a,b,c)=>((a,b,c)=>b in a?Q(a,b,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[b]=c)(a,"symbol"!=typeof b?b+"":b,c);class S{constructor(){R(this,"_locking"),R(this,"_locks"),this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let a;this._locks+=1;let b=new Promise(b=>a=()=>{this._locks-=1,b()}),c=this._locking.then(()=>a);return this._locking=this._locking.then(()=>b),c}}function T(a,b){if(!a)throw Error(b)}function U(a){if("number"!=typeof a)throw Error("invalid int 32: "+typeof a);if(!Number.isInteger(a)||a>0x7fffffff||a<-0x80000000)throw Error("invalid int 32: "+a)}function V(a){if("number"!=typeof a)throw Error("invalid uint 32: "+typeof a);if(!Number.isInteger(a)||a>0xffffffff||a<0)throw Error("invalid uint 32: "+a)}function W(a){if("number"!=typeof a)throw Error("invalid float 32: "+typeof a);if(Number.isFinite(a)&&(a>34028234663852886e22||a<-34028234663852886e22))throw Error("invalid float 32: "+a)}let X=Symbol("@bufbuild/protobuf/enum-type");function Y(a,b,c,d){a[X]=Z(b,c.map(b=>({no:b.no,name:b.name,localName:a[b.no]})))}function Z(a,b,c){let d=Object.create(null),e=Object.create(null),f=[];for(let a of b){let b=$(a);f.push(b),d[a.name]=b,e[a.no]=b}return{typeName:a,values:f,findName:a=>d[a],findNumber:a=>e[a]}}function $(a){return"localName"in a?a:Object.assign(Object.assign({},a),{localName:a.name})}class _{equals(a){return this.getType().runtime.util.equals(this.getType(),this,a)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(a,b){let c=this.getType().runtime.bin,d=c.makeReadOptions(b);return c.readMessage(this,d.readerFactory(a),a.byteLength,d),this}fromJson(a,b){let c=this.getType(),d=c.runtime.json,e=d.makeReadOptions(b);return d.readMessage(c,a,e,this),this}fromJsonString(a,b){let c;try{c=JSON.parse(a)}catch(a){throw Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(a instanceof Error?a.message:String(a)))}return this.fromJson(c,b)}toBinary(a){let b=this.getType().runtime.bin,c=b.makeWriteOptions(a),d=c.writerFactory();return b.writeMessage(this,d,c),d.finish()}toJson(a){let b=this.getType().runtime.json,c=b.makeWriteOptions(a);return b.writeMessage(this,c)}toJsonString(a){var b;return JSON.stringify(this.toJson(a),null,null!=(b=null==a?void 0:a.prettySpaces)?b:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}function aa(){let a=0,b=0;for(let c=0;c<28;c+=7){let d=this.buf[this.pos++];if(a|=(127&d)<<c,(128&d)==0)return this.assertBounds(),[a,b]}let c=this.buf[this.pos++];if(a|=(15&c)<<28,b=(112&c)>>4,(128&c)==0)return this.assertBounds(),[a,b];for(let c=3;c<=31;c+=7){let d=this.buf[this.pos++];if(b|=(127&d)<<c,(128&d)==0)return this.assertBounds(),[a,b]}throw Error("invalid varint")}function ab(a,b,c){for(let d=0;d<28;d+=7){let e=a>>>d,f=e>>>7!=0||0!=b,g=(f?128|e:e)&255;if(c.push(g),!f)return}let d=a>>>28&15|(7&b)<<4,e=b>>3!=0;if(c.push((e?128|d:d)&255),e){for(let a=3;a<31;a+=7){let d=b>>>a,e=d>>>7!=0,f=(e?128|d:d)&255;if(c.push(f),!e)return}c.push(b>>>31&1)}}function ac(a){let b="-"===a[0];b&&(a=a.slice(1));let c=0,d=0;function e(b,e){let f=Number(a.slice(b,e));d*=1e6,(c=1e6*c+f)>=0x100000000&&(d+=c/0x100000000|0,c%=0x100000000)}return e(-24,-18),e(-18,-12),e(-12,-6),e(-6),b?af(c,d):ae(c,d)}function ad(a,b){if({lo:a,hi:b}={lo:a>>>0,hi:b>>>0},b<=2097151)return String(0x100000000*b+a);let c=0xffffff&a,d=(a>>>24|b<<8)&0xffffff,e=b>>16&65535,f=c+6777216*d+6710656*e,g=d+8147497*e,h=2*e;return f>=1e7&&(g+=Math.floor(f/1e7),f%=1e7),g>=1e7&&(h+=Math.floor(g/1e7),g%=1e7),h.toString()+ag(g)+ag(f)}function ae(a,b){return{lo:0|a,hi:0|b}}function af(a,b){return b=~b,a?a=~a+1:b+=1,ae(a,b)}let ag=a=>{let b=String(a);return"0000000".slice(b.length)+b};function ah(a,b){if(a>=0){for(;a>127;)b.push(127&a|128),a>>>=7;b.push(a)}else{for(let c=0;c<9;c++)b.push(127&a|128),a>>=7;b.push(1)}}function ai(){let a=this.buf[this.pos++],b=127&a;if((128&a)==0||(b|=(127&(a=this.buf[this.pos++]))<<7,(128&a)==0)||(b|=(127&(a=this.buf[this.pos++]))<<14,(128&a)==0)||(b|=(127&(a=this.buf[this.pos++]))<<21,(128&a)==0))return this.assertBounds(),b;b|=(15&(a=this.buf[this.pos++]))<<28;for(let b=5;(128&a)!=0&&b<10;b++)a=this.buf[this.pos++];if((128&a)!=0)throw Error("invalid varint");return this.assertBounds(),b>>>0}let aj=function(){let a=new DataView(new ArrayBuffer(8));if("function"==typeof BigInt&&"function"==typeof a.getBigInt64&&"function"==typeof a.getBigUint64&&"function"==typeof a.setBigInt64&&"function"==typeof a.setBigUint64&&("object"!=typeof process||"object"!=typeof process.env||"1"!==process.env.BUF_BIGINT_DISABLE)){let b=BigInt("-9223372036854775808"),c=BigInt("9223372036854775807"),d=BigInt("0"),e=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){let d="bigint"==typeof a?a:BigInt(a);if(d>c||d<b)throw Error("int64 invalid: ".concat(a));return d},uParse(a){let b="bigint"==typeof a?a:BigInt(a);if(b>e||b<d)throw Error("uint64 invalid: ".concat(a));return b},enc(b){return a.setBigInt64(0,this.parse(b),!0),{lo:a.getInt32(0,!0),hi:a.getInt32(4,!0)}},uEnc(b){return a.setBigInt64(0,this.uParse(b),!0),{lo:a.getInt32(0,!0),hi:a.getInt32(4,!0)}},dec:(b,c)=>(a.setInt32(0,b,!0),a.setInt32(4,c,!0),a.getBigInt64(0,!0)),uDec:(b,c)=>(a.setInt32(0,b,!0),a.setInt32(4,c,!0),a.getBigUint64(0,!0))}}let b=a=>T(/^-?[0-9]+$/.test(a),"int64 invalid: ".concat(a)),c=a=>T(/^[0-9]+$/.test(a),"uint64 invalid: ".concat(a));return{zero:"0",supported:!1,parse:a=>("string"!=typeof a&&(a=a.toString()),b(a),a),uParse:a=>("string"!=typeof a&&(a=a.toString()),c(a),a),enc:a=>("string"!=typeof a&&(a=a.toString()),b(a),ac(a)),uEnc:a=>("string"!=typeof a&&(a=a.toString()),c(a),ac(a)),dec:(a,b)=>(function(a,b){let c=ae(a,b),d=0x80000000&c.hi;d&&(c=af(c.lo,c.hi));let e=ad(c.lo,c.hi);return d?"-"+e:e})(a,b),uDec:(a,b)=>ad(a,b)}}();function ak(a,b,c){if(b===c)return!0;if(a==h.BYTES){if(!(b instanceof Uint8Array)||!(c instanceof Uint8Array)||b.length!==c.length)return!1;for(let a=0;a<b.length;a++)if(b[a]!==c[a])return!1;return!0}switch(a){case h.UINT64:case h.FIXED64:case h.INT64:case h.SFIXED64:case h.SINT64:return b==c}return!1}function al(a,b){switch(a){case h.BOOL:return!1;case h.UINT64:case h.FIXED64:case h.INT64:case h.SFIXED64:case h.SINT64:return 0==b?aj.zero:"0";case h.DOUBLE:case h.FLOAT:return 0;case h.BYTES:return new Uint8Array(0);case h.STRING:return"";default:return 0}}function am(a,b){switch(a){case h.BOOL:return!1===b;case h.STRING:return""===b;case h.BYTES:return b instanceof Uint8Array&&!b.byteLength;default:return 0==b}}!function(a){a[a.DOUBLE=1]="DOUBLE",a[a.FLOAT=2]="FLOAT",a[a.INT64=3]="INT64",a[a.UINT64=4]="UINT64",a[a.INT32=5]="INT32",a[a.FIXED64=6]="FIXED64",a[a.FIXED32=7]="FIXED32",a[a.BOOL=8]="BOOL",a[a.STRING=9]="STRING",a[a.BYTES=12]="BYTES",a[a.UINT32=13]="UINT32",a[a.SFIXED32=15]="SFIXED32",a[a.SFIXED64=16]="SFIXED64",a[a.SINT32=17]="SINT32",a[a.SINT64=18]="SINT64"}(h||(h={})),function(a){a[a.BIGINT=0]="BIGINT",a[a.STRING=1]="STRING"}(i||(i={})),function(a){a[a.Varint=0]="Varint",a[a.Bit64=1]="Bit64",a[a.LengthDelimited=2]="LengthDelimited",a[a.StartGroup=3]="StartGroup",a[a.EndGroup=4]="EndGroup",a[a.Bit32=5]="Bit32"}(j||(j={}));class an{constructor(a){this.stack=[],this.textEncoder=null!=a?a:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let a=0;for(let b=0;b<this.chunks.length;b++)a+=this.chunks[b].length;let b=new Uint8Array(a),c=0;for(let a=0;a<this.chunks.length;a++)b.set(this.chunks[a],c),c+=this.chunks[a].length;return this.chunks=[],b}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let a=this.finish(),b=this.stack.pop();if(!b)throw Error("invalid state, fork stack empty");return this.chunks=b.chunks,this.buf=b.buf,this.uint32(a.byteLength),this.raw(a)}tag(a,b){return this.uint32((a<<3|b)>>>0)}raw(a){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(a),this}uint32(a){for(V(a);a>127;)this.buf.push(127&a|128),a>>>=7;return this.buf.push(a),this}int32(a){return U(a),ah(a,this.buf),this}bool(a){return this.buf.push(+!!a),this}bytes(a){return this.uint32(a.byteLength),this.raw(a)}string(a){let b=this.textEncoder.encode(a);return this.uint32(b.byteLength),this.raw(b)}float(a){W(a);let b=new Uint8Array(4);return new DataView(b.buffer).setFloat32(0,a,!0),this.raw(b)}double(a){let b=new Uint8Array(8);return new DataView(b.buffer).setFloat64(0,a,!0),this.raw(b)}fixed32(a){V(a);let b=new Uint8Array(4);return new DataView(b.buffer).setUint32(0,a,!0),this.raw(b)}sfixed32(a){U(a);let b=new Uint8Array(4);return new DataView(b.buffer).setInt32(0,a,!0),this.raw(b)}sint32(a){return U(a),ah(a=(a<<1^a>>31)>>>0,this.buf),this}sfixed64(a){let b=new Uint8Array(8),c=new DataView(b.buffer),d=aj.enc(a);return c.setInt32(0,d.lo,!0),c.setInt32(4,d.hi,!0),this.raw(b)}fixed64(a){let b=new Uint8Array(8),c=new DataView(b.buffer),d=aj.uEnc(a);return c.setInt32(0,d.lo,!0),c.setInt32(4,d.hi,!0),this.raw(b)}int64(a){let b=aj.enc(a);return ab(b.lo,b.hi,this.buf),this}sint64(a){let b=aj.enc(a),c=b.hi>>31;return ab(b.lo<<1^c,(b.hi<<1|b.lo>>>31)^c,this.buf),this}uint64(a){let b=aj.uEnc(a);return ab(b.lo,b.hi,this.buf),this}}class ao{constructor(a,b){this.varint64=aa,this.uint32=ai,this.buf=a,this.len=a.length,this.pos=0,this.view=new DataView(a.buffer,a.byteOffset,a.byteLength),this.textDecoder=null!=b?b:new TextDecoder}tag(){let a=this.uint32(),b=a>>>3,c=7&a;if(b<=0||c<0||c>5)throw Error("illegal tag: field no "+b+" wire type "+c);return[b,c]}skip(a,b){let c=this.pos;switch(a){case j.Varint:for(;128&this.buf[this.pos++];);break;case j.Bit64:this.pos+=4;case j.Bit32:this.pos+=4;break;case j.LengthDelimited:let d=this.uint32();this.pos+=d;break;case j.StartGroup:for(;;){let[a,c]=this.tag();if(c===j.EndGroup){if(void 0!==b&&a!==b)throw Error("invalid end group tag");break}this.skip(c,a)}break;default:throw Error("cant skip wire type "+a)}return this.assertBounds(),this.buf.subarray(c,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let a=this.uint32();return a>>>1^-(1&a)}int64(){return aj.dec(...this.varint64())}uint64(){return aj.uDec(...this.varint64())}sint64(){let[a,b]=this.varint64(),c=-(1&a);return a=(a>>>1|(1&b)<<31)^c,b=b>>>1^c,aj.dec(a,b)}bool(){let[a,b]=this.varint64();return 0!==a||0!==b}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return aj.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return aj.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 a=this.uint32(),b=this.pos;return this.pos+=a,this.assertBounds(),this.buf.subarray(b,b+a)}string(){return this.textDecoder.decode(this.bytes())}}function ap(a){let b=a.field.localName,c=Object.create(null);return c[b]=function(a){let b=a.field;if(b.repeated)return[];if(void 0!==b.default)return b.default;switch(b.kind){case"enum":return b.T.values[0].no;case"scalar":return al(b.T,b.L);case"message":let c=b.T,d=new c;return c.fieldWrapper?c.fieldWrapper.unwrapField(d):d;case"map":throw"map fields are not allowed to be extensions"}}(a),[c,()=>c[b]]}let aq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ar=[];for(let a=0;a<aq.length;a++)ar[aq[a].charCodeAt(0)]=a;ar[45]=aq.indexOf("+"),ar[95]=aq.indexOf("/");let as={dec(a){let b=3*a.length/4;"="==a[a.length-2]?b-=2:"="==a[a.length-1]&&(b-=1);let c=new Uint8Array(b),d=0,e=0,f,g=0;for(let b=0;b<a.length;b++){if(void 0===(f=ar[a.charCodeAt(b)]))switch(a[b]){case"=":e=0;case"\n":case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(e){case 0:g=f,e=1;break;case 1:c[d++]=g<<2|(48&f)>>4,g=f,e=2;break;case 2:c[d++]=(15&g)<<4|(60&f)>>2,g=f,e=3;break;case 3:c[d++]=(3&g)<<6|f,e=0}}if(1==e)throw Error("invalid base64 string.");return c.subarray(0,d)},enc(a){let b="",c=0,d,e=0;for(let f=0;f<a.length;f++)switch(d=a[f],c){case 0:b+=aq[d>>2],e=(3&d)<<4,c=1;break;case 1:b+=aq[e|d>>4],e=(15&d)<<2,c=2;break;case 2:b+=aq[e|d>>6],b+=aq[63&d],c=0}return c&&(b+=aq[e],b+="=",1==c&&(b+="=")),b}};function at(a,b){let c=a.getType();return b.extendee.typeName===c.typeName&&!!c.runtime.bin.listUnknownFields(a).find(a=>a.no==b.field.no)}function au(a,b){T(a.extendee.typeName==b.getType().typeName,"extension ".concat(a.typeName," can only be applied to message ").concat(a.extendee.typeName))}function av(a,b){let c=a.localName;if(a.repeated)return b[c].length>0;if(a.oneof)return b[a.oneof.localName].case===c;switch(a.kind){case"enum":case"scalar":if(a.opt||a.req)return void 0!==b[c];if("enum"==a.kind)return b[c]!==a.T.values[0].no;return!am(a.T,b[c]);case"message":return void 0!==b[c];case"map":return Object.keys(b[c]).length>0}}function aw(a,b){let c=a.localName,d=!a.opt&&!a.req;if(a.repeated)b[c]=[];else if(a.oneof)b[a.oneof.localName]={case:void 0};else switch(a.kind){case"map":b[c]={};break;case"enum":b[c]=d?a.T.values[0].no:void 0;break;case"scalar":b[c]=d?al(a.T,a.L):void 0;break;case"message":b[c]=void 0}}function ax(a,b){if(null===a||"object"!=typeof a||!Object.getOwnPropertyNames(_.prototype).every(b=>b in a&&"function"==typeof a[b]))return!1;let c=a.getType();return null!==c&&"function"==typeof c&&"typeName"in c&&"string"==typeof c.typeName&&(void 0===b||c.typeName==b.typeName)}function ay(a,b){return ax(b)||!a.fieldWrapper?b:a.fieldWrapper.wrapField(b)}h.DOUBLE,h.FLOAT,h.INT64,h.UINT64,h.INT32,h.UINT32,h.BOOL,h.STRING,h.BYTES;let az={ignoreUnknownFields:!1},aA={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},aB=Symbol(),aC=Symbol();function aD(a){if(null===a)return"null";switch(typeof a){case"object":return Array.isArray(a)?"array":"object";case"string":return a.length>100?"string":'"'.concat(a.split('"').join('\\"'),'"');default:return String(a)}}function aE(a,b,c,d,e){let f=c.localName;if(c.repeated){if(T("map"!=c.kind),null===b)return;if(!Array.isArray(b))throw Error("cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(b)));let g=a[f];for(let a of b){if(null===a)throw Error("cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(a)));switch(c.kind){case"message":g.push(c.T.fromJson(a,d));break;case"enum":let b=aG(c.T,a,d.ignoreUnknownFields,!0);b!==aC&&g.push(b);break;case"scalar":try{g.push(aF(c.T,a,c.L,!0))}catch(d){let b="cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(a));throw d instanceof Error&&d.message.length>0&&(b+=": ".concat(d.message)),Error(b)}}}}else if("map"==c.kind){if(null===b)return;if("object"!=typeof b||Array.isArray(b))throw Error("cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(b)));let g=a[f];for(let[a,f]of Object.entries(b)){let j;if(null===f)throw Error("cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: map value null"));try{j=function(a,b){if(a===h.BOOL)switch(b){case"true":b=!0;break;case"false":b=!1}return aF(a,b,i.BIGINT,!0).toString()}(c.K,a)}catch(d){let a="cannot decode map key for field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(b));throw d instanceof Error&&d.message.length>0&&(a+=": ".concat(d.message)),Error(a)}switch(c.V.kind){case"message":g[j]=c.V.T.fromJson(f,d);break;case"enum":let k=aG(c.V.T,f,d.ignoreUnknownFields,!0);k!==aC&&(g[j]=k);break;case"scalar":try{g[j]=aF(c.V.T,f,i.BIGINT,!0)}catch(d){let a="cannot decode map value for field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(b));throw d instanceof Error&&d.message.length>0&&(a+=": ".concat(d.message)),Error(a)}}}}else switch(c.oneof&&(a=a[c.oneof.localName]={case:f},f="value"),c.kind){case"message":let g=c.T;if(null===b&&"google.protobuf.Value"!=g.typeName)return;let j=a[f];ax(j)?j.fromJson(b,d):(a[f]=j=g.fromJson(b,d),g.fieldWrapper&&!c.oneof&&(a[f]=g.fieldWrapper.unwrapField(j)));break;case"enum":let k=aG(c.T,b,d.ignoreUnknownFields,!1);switch(k){case aB:aw(c,a);break;case aC:break;default:a[f]=k}break;case"scalar":try{let d=aF(c.T,b,c.L,!1);d===aB?aw(c,a):a[f]=d}catch(d){let a="cannot decode field ".concat(e.typeName,".").concat(c.name," from JSON: ").concat(aD(b));throw d instanceof Error&&d.message.length>0&&(a+=": ".concat(d.message)),Error(a)}}}function aF(a,b,c,d){if(null===b)return d?al(a,c):aB;switch(a){case h.DOUBLE:case h.FLOAT:if("NaN"===b)return NaN;if("Infinity"===b)return 1/0;if("-Infinity"===b)return-1/0;if(""===b||"string"==typeof b&&b.trim().length!==b.length||"string"!=typeof b&&"number"!=typeof b)break;let e=Number(b);if(Number.isNaN(e)||!Number.isFinite(e))break;return a==h.FLOAT&&W(e),e;case h.INT32:case h.FIXED32:case h.SFIXED32:case h.SINT32:case h.UINT32:let f;if("number"==typeof b?f=b:"string"==typeof b&&b.length>0&&b.trim().length===b.length&&(f=Number(b)),void 0===f)break;return a==h.UINT32||a==h.FIXED32?V(f):U(f),f;case h.INT64:case h.SFIXED64:case h.SINT64:if("number"!=typeof b&&"string"!=typeof b)break;let g=aj.parse(b);return c?g.toString():g;case h.FIXED64:case h.UINT64:if("number"!=typeof b&&"string"!=typeof b)break;let i=aj.uParse(b);return c?i.toString():i;case h.BOOL:if("boolean"!=typeof b)break;return b;case h.STRING:if("string"!=typeof b)break;try{encodeURIComponent(b)}catch(a){throw Error("invalid UTF8")}return b;case h.BYTES:if(""===b)return new Uint8Array(0);if("string"!=typeof b)break;return as.dec(b)}throw Error()}function aG(a,b,c,d){if(null===b)return"google.protobuf.NullValue"==a.typeName?0:d?a.values[0].no:aB;switch(typeof b){case"number":if(Number.isInteger(b))return b;break;case"string":let e=a.findName(b);if(void 0!==e)return e.no;if(c)return aC}throw Error("cannot decode enum ".concat(a.typeName," from JSON: ").concat(aD(b)))}function aH(a,b,c){if("map"==a.kind){T("object"==typeof b&&null!=b);let d={},e=Object.entries(b);switch(a.V.kind){case"scalar":for(let[b,c]of e)d[b.toString()]=aJ(a.V.T,c);break;case"message":for(let[a,b]of e)d[a.toString()]=b.toJson(c);break;case"enum":let f=a.V.T;for(let[a,b]of e)d[a.toString()]=aI(f,b,c.enumAsInteger)}return c.emitDefaultValues||e.length>0?d:void 0}if(a.repeated){T(Array.isArray(b));let d=[];switch(a.kind){case"scalar":for(let c=0;c<b.length;c++)d.push(aJ(a.T,b[c]));break;case"enum":for(let e=0;e<b.length;e++)d.push(aI(a.T,b[e],c.enumAsInteger));break;case"message":for(let a=0;a<b.length;a++)d.push(b[a].toJson(c))}return c.emitDefaultValues||d.length>0?d:void 0}switch(a.kind){case"scalar":return aJ(a.T,b);case"enum":return aI(a.T,b,c.enumAsInteger);case"message":return ay(a.T,b).toJson(c)}}function aI(a,b,c){var d;if(T("number"==typeof b),"google.protobuf.NullValue"==a.typeName)return null;if(c)return b;let e=a.findNumber(b);return null!=(d=null==e?void 0:e.name)?d:b}function aJ(a,b){switch(a){case h.INT32:case h.SFIXED32:case h.SINT32:case h.FIXED32:case h.UINT32:return T("number"==typeof b),b;case h.FLOAT:case h.DOUBLE:if(T("number"==typeof b),Number.isNaN(b))return"NaN";if(b===1/0)return"Infinity";if(b===-1/0)return"-Infinity";return b;case h.STRING:return T("string"==typeof b),b;case h.BOOL:return T("boolean"==typeof b),b;case h.UINT64:case h.FIXED64:case h.INT64:case h.SFIXED64:case h.SINT64:return T("bigint"==typeof b||"string"==typeof b||"number"==typeof b),b.toString();case h.BYTES:return T(b instanceof Uint8Array),as.enc(b)}}let aK=Symbol("@bufbuild/protobuf/unknown-fields"),aL={readUnknownFields:!0,readerFactory:a=>new ao(a)},aM={writeUnknownFields:!0,writerFactory:()=>new an};function aN(a,b,c,d,e){let{repeated:f,localName:g}=c;switch(c.oneof&&((a=a[c.oneof.localName]).case!=g&&delete a.value,a.case=g,g="value"),c.kind){case"scalar":case"enum":let k="enum"==c.kind?h.INT32:c.T,l=aQ;if("scalar"==c.kind&&c.L>0&&(l=aP),f){let c=a[g];if(d==j.LengthDelimited&&k!=h.STRING&&k!=h.BYTES){let a=b.uint32()+b.pos;for(;b.pos<a;)c.push(l(b,k))}else c.push(l(b,k))}else a[g]=l(b,k);break;case"message":let m=c.T;f?a[g].push(aO(b,new m,e,c)):ax(a[g])?aO(b,a[g],e,c):(a[g]=aO(b,new m,e,c),!m.fieldWrapper||c.oneof||c.repeated||(a[g]=m.fieldWrapper.unwrapField(a[g])));break;case"map":let[n,o]=function(a,b,c){let d,e,f=b.uint32(),g=b.pos+f;for(;b.pos<g;){let[f]=b.tag();switch(f){case 1:d=aQ(b,a.K);break;case 2:switch(a.V.kind){case"scalar":e=aQ(b,a.V.T);break;case"enum":e=b.int32();break;case"message":e=aO(b,new a.V.T,c,void 0)}}}if(void 0===d&&(d=al(a.K,i.BIGINT)),"string"!=typeof d&&"number"!=typeof d&&(d=d.toString()),void 0===e)switch(a.V.kind){case"scalar":e=al(a.V.T,i.BIGINT);break;case"enum":e=a.V.T.values[0].no;break;case"message":e=new a.V.T}return[d,e]}(c,b,e);a[g][n]=o}}function aO(a,b,c,d){let e=b.getType().runtime.bin,f=null==d?void 0:d.delimited;return e.readMessage(b,a,f?d.no:a.uint32(),c,f),b}function aP(a,b){let c=aQ(a,b);return"bigint"==typeof c?c.toString():c}function aQ(a,b){switch(b){case h.STRING:return a.string();case h.BOOL:return a.bool();case h.DOUBLE:return a.double();case h.FLOAT:return a.float();case h.INT32:return a.int32();case h.INT64:return a.int64();case h.UINT64:return a.uint64();case h.FIXED64:return a.fixed64();case h.BYTES:return a.bytes();case h.FIXED32:return a.fixed32();case h.SFIXED32:return a.sfixed32();case h.SFIXED64:return a.sfixed64();case h.SINT64:return a.sint64();case h.UINT32:return a.uint32();case h.SINT32:return a.sint32()}}function aR(a,b,c,d){T(void 0!==b);let e=a.repeated;switch(a.kind){case"scalar":case"enum":let f="enum"==a.kind?h.INT32:a.T;if(e)if(T(Array.isArray(b)),a.packed)!function(a,b,c,d){if(!d.length)return;a.tag(c,j.LengthDelimited).fork();let[,e]=aU(b);for(let b=0;b<d.length;b++)a[e](d[b]);a.join()}(c,f,a.no,b);else for(let d of b)aT(c,f,a.no,d);else aT(c,f,a.no,b);break;case"message":if(e)for(let e of(T(Array.isArray(b)),b))aS(c,d,a,e);else aS(c,d,a,b);break;case"map":for(let[e,f]of(T("object"==typeof b&&null!=b),Object.entries(b)))!function(a,b,c,d,e){a.tag(c.no,j.LengthDelimited),a.fork();let f=d;switch(c.K){case h.INT32:case h.FIXED32:case h.UINT32:case h.SFIXED32:case h.SINT32:f=Number.parseInt(d);break;case h.BOOL:T("true"==d||"false"==d),f="true"==d}switch(aT(a,c.K,1,f),c.V.kind){case"scalar":aT(a,c.V.T,2,e);break;case"enum":aT(a,h.INT32,2,e);break;case"message":T(void 0!==e),a.tag(2,j.LengthDelimited).bytes(e.toBinary(b))}a.join()}(c,d,a,e,f)}}function aS(a,b,c,d){let e=ay(c.T,d);c.delimited?a.tag(c.no,j.StartGroup).raw(e.toBinary(b)).tag(c.no,j.EndGroup):a.tag(c.no,j.LengthDelimited).bytes(e.toBinary(b))}function aT(a,b,c,d){T(void 0!==d);let[e,f]=aU(b);a.tag(c,e)[f](d)}function aU(a){let b=j.Varint;switch(a){case h.BYTES:case h.STRING:b=j.LengthDelimited;break;case h.DOUBLE:case h.FIXED64:case h.SFIXED64:b=j.Bit64;break;case h.FIXED32:case h.SFIXED32:case h.FLOAT:b=j.Bit32}return[b,h[a].toLowerCase()]}function aV(a){if(void 0===a)return a;if(ax(a))return a.clone();if(a instanceof Uint8Array){let b=new Uint8Array(a.byteLength);return b.set(a),b}return a}function aW(a){return a instanceof Uint8Array?a:new Uint8Array(a)}class aX{constructor(a,b){this._fields=a,this._normalizer=b}findJsonName(a){if(!this.jsonNames){let a={};for(let b of this.list())a[b.jsonName]=a[b.name]=b;this.jsonNames=a}return this.jsonNames[a]}find(a){if(!this.numbers){let a={};for(let b of this.list())a[b.no]=b;this.numbers=a}return this.numbers[a]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort((a,b)=>a.no-b.no)),this.numbersAsc}byMember(){if(!this.members){let a;this.members=[];let b=this.members;for(let c of this.list())c.oneof?c.oneof!==a&&(a=c.oneof,b.push(a)):b.push(c)}return this.members}}function aY(a,b){let c=a$(a);return b?c:a3(a2(c))}let aZ=a$;function a$(a){let b=!1,c=[];for(let d=0;d<a.length;d++){let e=a.charAt(d);switch(e){case"_":b=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":c.push(e),b=!1;break;default:b&&(b=!1,e=e.toUpperCase()),c.push(e)}}return c.join("")}let a_=new Set(["constructor","toString","toJSON","valueOf"]),a0=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),a1=a=>"".concat(a,"$"),a2=a=>a0.has(a)?a1(a):a,a3=a=>a_.has(a)?a1(a):a;class a4{constructor(a){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=a,this.localName=aY(a,!1)}addField(a){T(a.oneof===this,"field ".concat(a.name," not one of ").concat(this.name)),this.fields.push(a)}findField(a){if(!this._lookup){this._lookup=Object.create(null);for(let a=0;a<this.fields.length;a++)this._lookup[this.fields[a].localName]=this.fields[a]}return this._lookup[a]}}let a5=(f=a=>new aX(a,a=>(function(a,b){var c,d,e,f,g,j;let k,l=[];for(let b of"function"==typeof a?a():a){if(b.localName=aY(b.name,void 0!==b.oneof),b.jsonName=null!=(c=b.jsonName)?c:aZ(b.name),b.repeated=null!=(d=b.repeated)&&d,"scalar"==b.kind&&(b.L=null!=(e=b.L)?e:i.BIGINT),b.delimited=null!=(f=b.delimited)&&f,b.req=null!=(g=b.req)&&g,b.opt=null!=(j=b.opt)&&j,void 0===b.packed&&(b.packed="enum"==b.kind||"scalar"==b.kind&&b.T!=h.BYTES&&b.T!=h.STRING),void 0!==b.oneof){let a="string"==typeof b.oneof?b.oneof:b.oneof.name;k&&k.name==a||(k=new a4(a)),b.oneof=k,k.addField(b)}l.push(b)}return l})(a)),g=a=>{for(let b of a.getType().fields.byMember()){if(b.opt)continue;let c=b.localName;if(b.repeated){a[c]=[];continue}switch(b.kind){case"oneof":a[c]={case:void 0};break;case"enum":a[c]=0;break;case"map":a[c]={};break;case"scalar":a[c]=al(b.T,b.L)}}},{syntax:"proto3",json:{makeReadOptions:function(a){return a?Object.assign(Object.assign({},az),a):az},makeWriteOptions:function(a){return a?Object.assign(Object.assign({},aA),a):aA},readMessage(a,b,c,d){if(null==b||Array.isArray(b)||"object"!=typeof b)throw Error("cannot decode message ".concat(a.typeName," from JSON: ").concat(aD(b)));d=null!=d?d:new a;let e=new Map,f=c.typeRegistry;for(let[g,h]of Object.entries(b)){let b=a.fields.findJsonName(g);if(b){if(b.oneof){if(null===h&&"scalar"==b.kind)continue;let c=e.get(b.oneof);if(void 0!==c)throw Error("cannot decode message ".concat(a.typeName,' from JSON: multiple keys for oneof "').concat(b.oneof.name,'" present: "').concat(c,'", "').concat(g,'"'));e.set(b.oneof,g)}aE(d,h,b,c,a)}else{let b=!1;if((null==f?void 0:f.findExtension)&&g.startsWith("[")&&g.endsWith("]")){let e=f.findExtension(g.substring(1,g.length-1));if(e&&e.extendee.typeName==a.typeName){b=!0;let[a,f]=ap(e);aE(a,h,e.field,c,e),function(a,b,c,d){au(b,a);let e=b.runtime.bin.makeReadOptions(d),f=b.runtime.bin.makeWriteOptions(d);if(at(a,b)){let c=a.getType().runtime.bin.listUnknownFields(a).filter(a=>a.no!=b.field.no);for(let b of(a.getType().runtime.bin.discardUnknownFields(a),c))a.getType().runtime.bin.onUnknownField(a,b.no,b.wireType,b.data)}let g=f.writerFactory(),h=b.field;h.opt||h.repeated||"enum"!=h.kind&&"scalar"!=h.kind||(h=Object.assign(Object.assign({},b.field),{opt:!0})),b.runtime.bin.writeField(h,c,g,f);let i=e.readerFactory(g.finish());for(;i.pos<i.len;){let[b,c]=i.tag(),d=i.skip(c,b);a.getType().runtime.bin.onUnknownField(a,b,c,d)}}(d,e,f(),c)}}if(!b&&!c.ignoreUnknownFields)throw Error("cannot decode message ".concat(a.typeName,' from JSON: key "').concat(g,'" is unknown'))}}return d},writeMessage(a,b){let c,d=a.getType(),e={};try{for(c of d.fields.byNumber()){if(!av(c,a)){var f;if(c.req)throw"required field not set";if(!b.emitDefaultValues||!((f=c).repeated||"map"==f.kind||!f.oneof&&"message"!=f.kind&&!f.opt&&!f.req))continue}let d=c.oneof?a[c.oneof.localName].value:a[c.localName],g=aH(c,d,b);void 0!==g&&(e[b.useProtoFieldName?c.name:c.jsonName]=g)}let g=b.typeRegistry;if(null==g?void 0:g.findExtensionFor)for(let c of d.runtime.bin.listUnknownFields(a)){let f=g.findExtensionFor(d.typeName,c.no);if(f&&at(a,f)){let c=function(a,b,c){au(b,a);let d=b.runtime.bin.makeReadOptions(c),e=function(a,b){if(!b.repeated&&("enum"==b.kind||"scalar"==b.kind)){for(let c=a.length-1;c>=0;--c)if(a[c].no==b.no)return[a[c]];return[]}return a.filter(a=>a.no===b.no)}(a.getType().runtime.bin.listUnknownFields(a),b.field),[f,g]=ap(b);for(let a of e)b.runtime.bin.readField(f,d.readerFactory(a.data),b.field,a.wireType,d);return g()}(a,f,b),d=aH(f.field,c,b);void 0!==d&&(e[f.field.jsonName]=d)}}}catch(e){let a=c?"cannot encode field ".concat(d.typeName,".").concat(c.name," to JSON"):"cannot encode message ".concat(d.typeName," to JSON"),b=e instanceof Error?e.message:String(e);throw Error(a+(b.length>0?": ".concat(b):""))}return e},readScalar:(a,b,c)=>aF(a,b,null!=c?c:i.BIGINT,!0),writeScalar(a,b,c){if(void 0!==b&&(c||am(a,b)))return aJ(a,b)},debug:aD},bin:{makeReadOptions:function(a){return a?Object.assign(Object.assign({},aL),a):aL},makeWriteOptions:function(a){return a?Object.assign(Object.assign({},aM),a):aM},listUnknownFields(a){var b;return null!=(b=a[aK])?b:[]},discardUnknownFields(a){delete a[aK]},writeUnknownFields(a,b){let c=a[aK];if(c)for(let a of c)b.tag(a.no,a.wireType).raw(a.data)},onUnknownField(a,b,c,d){Array.isArray(a[aK])||(a[aK]=[]),a[aK].push({no:b,wireType:c,data:d})},readMessage(a,b,c,d,e){let f,g,h=a.getType(),i=e?b.len:b.pos+c;for(;b.pos<i&&([f,g]=b.tag(),!0!==e||g!=j.EndGroup);){let c=h.fields.find(f);if(!c){let c=b.skip(g,f);d.readUnknownFields&&this.onUnknownField(a,f,g,c);continue}aN(a,b,c,g,d)}if(e&&(g!=j.EndGroup||f!==c))throw Error("invalid end group tag")},readField:aN,writeMessage(a,b,c){let d=a.getType();for(let e of d.fields.byNumber()){if(!av(e,a)){if(e.req)throw Error("cannot encode field ".concat(d.typeName,".").concat(e.name," to binary: required field not set"));continue}let f=e.oneof?a[e.oneof.localName].value:a[e.localName];aR(e,f,b,c)}return c.writeUnknownFields&&this.writeUnknownFields(a,b),b},writeField(a,b,c,d){void 0!==b&&aR(a,b,c,d)}},util:Object.assign(Object.assign({},{setEnumType:Y,initPartial(a,b){if(void 0!==a)for(let c of b.getType().fields.byMember()){let d=c.localName;if(null!=a[d])switch(c.kind){case"oneof":let e=a[d].case;if(void 0===e)continue;let f=c.findField(e),g=a[d].value;f&&"message"==f.kind&&!ax(g,f.T)?g=new f.T(g):f&&"scalar"===f.kind&&f.T===h.BYTES&&(g=aW(g)),b[d]={case:e,value:g};break;case"scalar":case"enum":let i=a[d];c.T===h.BYTES&&(i=c.repeated?i.map(aW):aW(i)),b[d]=i;break;case"map":switch(c.V.kind){case"scalar":case"enum":if(c.V.T===h.BYTES)for(let[c,e]of Object.entries(a[d]))b[d][c]=aW(e);else Object.assign(b[d],a[d]);break;case"message":let j=c.V.T;for(let c of Object.keys(a[d])){let e=a[d][c];j.fieldWrapper||(e=new j(e)),b[d][c]=e}}break;case"message":let k=c.T;if(c.repeated)b[d]=a[d].map(a=>ax(a,k)?a:new k(a));else{let c=a[d];k.fieldWrapper?"google.protobuf.BytesValue"===k.typeName?b[d]=aW(c):b[d]=c:b[d]=ax(c,k)?c:new k(c)}}}},equals:(a,b,c)=>b===c||!!b&&!!c&&a.fields.byMember().every(a=>{let d=b[a.localName],e=c[a.localName];if(a.repeated){if(d.length!==e.length)return!1;switch(a.kind){case"message":return d.every((b,c)=>a.T.equals(b,e[c]));case"scalar":return d.every((b,c)=>ak(a.T,b,e[c]));case"enum":return d.every((a,b)=>ak(h.INT32,a,e[b]))}throw Error("repeated cannot contain ".concat(a.kind))}switch(a.kind){case"message":let f=d,g=e;return a.T.fieldWrapper&&(void 0===f||ax(f)||(f=a.T.fieldWrapper.wrapField(f)),void 0===g||ax(g)||(g=a.T.fieldWrapper.wrapField(g))),a.T.equals(f,g);case"enum":return ak(h.INT32,d,e);case"scalar":return ak(a.T,d,e);case"oneof":if(d.case!==e.case)return!1;let i=a.findField(d.case);if(void 0===i)return!0;switch(i.kind){case"message":return i.T.equals(d.value,e.value);case"enum":return ak(h.INT32,d.value,e.value);case"scalar":return ak(i.T,d.value,e.value)}throw Error("oneof cannot contain ".concat(i.kind));case"map":let j=Object.keys(d).concat(Object.keys(e));switch(a.V.kind){case"message":let k=a.V.T;return j.every(a=>k.equals(d[a],e[a]));case"enum":return j.every(a=>ak(h.INT32,d[a],e[a]));case"scalar":let l=a.V.T;return j.every(a=>ak(l,d[a],e[a]))}}}),clone(a){let b=a.getType(),c=new b;for(let d of b.fields.byMember()){let b,e=a[d.localName];if(d.repeated)b=e.map(aV);else if("map"==d.kind)for(let[a,f]of(b=c[d.localName],Object.entries(e)))b[a]=aV(f);else b="oneof"==d.kind?d.findField(e.case)?{case:e.case,value:aV(e.value)}:{case:void 0}:aV(e);c[d.localName]=b}for(let d of b.runtime.bin.listUnknownFields(a))b.runtime.bin.onUnknownField(c,d.no,d.wireType,d.data);return c}}),{newFieldList:f,initFields:g}),makeMessageType(a,b,c){return function(a,b,c,d){var e;let f=null!=(e=null==d?void 0:d.localName)?e:b.substring(b.lastIndexOf(".")+1),g={[f]:function(b){a.util.initFields(this),a.util.initPartial(b,this)}}[f];return Object.setPrototypeOf(g.prototype,new _),Object.assign(g,{runtime:a,typeName:b,fields:a.util.newFieldList(c),fromBinary:(a,b)=>new g().fromBinary(a,b),fromJson:(a,b)=>new g().fromJson(a,b),fromJsonString:(a,b)=>new g().fromJsonString(a,b),equals:(b,c)=>a.util.equals(g,b,c)}),g}(this,a,b,c)},makeEnum:function(a,b,c){let d={};for(let a of b){let b=$(a);d[b.localName]=b.no,d[b.no]=b.localName}return Y(d,a,b),d},makeEnumType:Z,getEnumType:function(a){let b=a[X];return T(b,"missing enum type on enum object"),b},makeExtension(a,b,c){var d;let e;return d=this,{typeName:a,extendee:b,get field(){if(!e){let b="function"==typeof c?c():c;b.name=a.split(".").pop(),b.jsonName="[".concat(a,"]"),e=d.util.newFieldList([b]).list()[0]}return e},runtime:d}}});class a6 extends _{constructor(a){super(),this.seconds=aj.zero,this.nanos=0,a5.util.initPartial(a,this)}fromJson(a,b){if("string"!=typeof a)throw Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(a5.json.debug(a)));let c=a.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(!c)throw Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");let d=Date.parse(c[1]+"-"+c[2]+"-"+c[3]+"T"+c[4]+":"+c[5]+":"+c[6]+(c[8]?c[8]:"Z"));if(Number.isNaN(d))throw Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(d<Date.parse("0001-01-01T00:00:00Z")||d>Date.parse("9999-12-31T23:59:59Z"))throw 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=aj.parse(d/1e3),this.nanos=0,c[7]&&(this.nanos=parseInt("1"+c[7]+"0".repeat(9-c[7].length))-1e9),this}toJson(a){let b=1e3*Number(this.seconds);if(b<Date.parse("0001-01-01T00:00:00Z")||b>Date.parse("9999-12-31T23:59:59Z"))throw 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 Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let c="Z";if(this.nanos>0){let a=(this.nanos+1e9).toString().substring(1);c="000000"===a.substring(3)?"."+a.substring(0,3)+"Z":"000"===a.substring(6)?"."+a.substring(0,6)+"Z":"."+a+"Z"}return new Date(b).toISOString().replace(".000Z",c)}toDate(){return new Date(1e3*Number(this.seconds)+Math.ceil(this.nanos/1e6))}static now(){return a6.fromDate(new Date)}static fromDate(a){let b=a.getTime();return new a6({seconds:aj.parse(Math.floor(b/1e3)),nanos:b%1e3*1e6})}static fromBinary(a,b){return new a6().fromBinary(a,b)}static fromJson(a,b){return new a6().fromJson(a,b)}static fromJsonString(a,b){return new a6().fromJsonString(a,b)}static equals(a,b){return a5.util.equals(a6,a,b)}}a6.runtime=a5,a6.typeName="google.protobuf.Timestamp",a6.fields=a5.util.newFieldList(()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}]);let a7=a5.makeMessageType("livekit.MetricsBatch",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:a6},{no:3,name:"str_data",kind:"scalar",T:9,repeated:!0},{no:4,name:"time_series",kind:"message",T:a8,repeated:!0},{no:5,name:"events",kind:"message",T:ba,repeated:!0}]),a8=a5.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:a9,repeated:!0},{no:5,name:"rid",kind:"scalar",T:13}]),a9=a5.makeMessageType("livekit.MetricSample",()=>[{no:1,name:"timestamp_ms",kind:"scalar",T:3},{no:2,name:"normalized_timestamp",kind:"message",T:a6},{no:3,name:"value",kind:"scalar",T:2}]),ba=a5.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:a6},{no:7,name:"normalized_end_timestamp",kind:"message",T:a6,opt:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"rid",kind:"scalar",T:13}]),bb=a5.makeEnum("livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"},{no:3,name:"AC_MP3"}]),bc=a5.makeEnum("livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),bd=a5.makeEnum("livekit.ImageCodec",[{no:0,name:"IC_DEFAULT"},{no:1,name:"IC_JPEG"}]),be=a5.makeEnum("livekit.BackupCodecPolicy",[{no:0,name:"PREFER_REGRESSION"},{no:1,name:"SIMULCAST"},{no:2,name:"REGRESSION"}]),bf=a5.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),bg=a5.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"}]),bh=a5.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),bi=a5.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),bj=a5.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),bk=a5.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"}]),bl=a5.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"}]),bm=a5.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),bn=a5.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"}]),bo=a5.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:bp,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:bX}]),bp=a5.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),bq=a5.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:a5.getEnumType(bg),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}]),br=a5.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:a5.getEnumType(bs)},{no:4,name:"tracks",kind:"message",T:bx,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:bq},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:a5.getEnumType(bt)},{no:15,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:16,name:"disconnect_reason",kind:"enum",T:a5.getEnumType(bk)},{no:18,name:"kind_details",kind:"enum",T:a5.getEnumType(bu),repeated:!0}]),bs=a5.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),bt=a5.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"}]),bu=a5.makeEnum("livekit.ParticipantInfo.KindDetail",[{no:0,name:"CLOUD_AGENT"},{no:1,name:"FORWARDED"}]),bv=a5.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),bw=a5.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:by,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:a5.getEnumType(bz)},{no:6,name:"sdp_cid",kind:"scalar",T:9}]),bx=a5.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:a5.getEnumType(bf)},{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:a5.getEnumType(bg)},{no:10,name:"layers",kind:"message",T:by,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:bw,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:a5.getEnumType(bv)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:bX},{no:19,name:"audio_features",kind:"enum",T:a5.getEnumType(bn),repeated:!0},{no:20,name:"backup_codec_policy",kind:"enum",T:a5.getEnumType(be)}]),by=a5.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:a5.getEnumType(bh)},{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}]),bz=a5.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"}]),bA=a5.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:a5.getEnumType(bB)},{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:bG,oneof:"value"},{no:3,name:"speaker",kind:"message",T:bE,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:bH,oneof:"value"},{no:7,name:"transcription",kind:"message",T:bI,oneof:"value"},{no:8,name:"metrics",kind:"message",T:a7,oneof:"value"},{no:9,name:"chat_message",kind:"message",T:bK,oneof:"value"},{no:10,name:"rpc_request",kind:"message",T:bL,oneof:"value"},{no:11,name:"rpc_ack",kind:"message",T:bM,oneof:"value"},{no:12,name:"rpc_response",kind:"message",T:bN,oneof:"value"},{no:13,name:"stream_header",kind:"message",T:b_,oneof:"value"},{no:14,name:"stream_chunk",kind:"message",T:b0,oneof:"value"},{no:15,name:"stream_trailer",kind:"message",T:b1,oneof:"value"},{no:18,name:"encrypted_packet",kind:"message",T:bC,oneof:"value"},{no:16,name:"sequence",kind:"scalar",T:13},{no:17,name:"participant_sid",kind:"scalar",T:9}]),bB=a5.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),bC=a5.makeMessageType("livekit.EncryptedPacket",()=>[{no:1,name:"encryption_type",kind:"enum",T:a5.getEnumType(bv)},{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}]),bD=a5.makeMessageType("livekit.EncryptedPacketPayload",()=>[{no:1,name:"user",kind:"message",T:bG,oneof:"value"},{no:3,name:"chat_message",kind:"message",T:bK,oneof:"value"},{no:4,name:"rpc_request",kind:"message",T:bL,oneof:"value"},{no:5,name:"rpc_ack",kind:"message",T:bM,oneof:"value"},{no:6,name:"rpc_response",kind:"message",T:bN,oneof:"value"},{no:7,name:"stream_header",kind:"message",T:b_,oneof:"value"},{no:8,name:"stream_chunk",kind:"message",T:b0,oneof:"value"},{no:9,name:"stream_trailer",kind:"message",T:b1,oneof:"value"}]),bE=a5.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:bF,repeated:!0}]),bF=a5.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}]),bG=a5.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}]),bH=a5.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),bI=a5.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:bJ,repeated:!0}]),bJ=a5.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}]),bK=a5.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}]),bL=a5.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}]),bM=a5.makeMessageType("livekit.RpcAck",()=>[{no:1,name:"request_id",kind:"scalar",T:9}]),bN=a5.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:bO,oneof:"value"}]),bO=a5.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}]),bP=a5.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),bQ=a5.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:a5.getEnumType(bR)},{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}]),bR=a5.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),bS=a5.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:a5.getEnumType(bT)},{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}]),bT=a5.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"}]),bU=a5.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:bV},{no:2,name:"screen",kind:"message",T:bV},{no:3,name:"resume_connection",kind:"enum",T:a5.getEnumType(bj)},{no:4,name:"disabled_codecs",kind:"message",T:bW},{no:5,name:"force_relay",kind:"enum",T:a5.getEnumType(bj)}]),bV=a5.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:a5.getEnumType(bj)}]),bW=a5.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:bp,repeated:!0},{no:2,name:"publish",kind:"message",T:bp,repeated:!0}]),bX=a5.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),bY=a5.makeEnum("livekit.DataStream.OperationType",[{no:0,name:"CREATE"},{no:1,name:"UPDATE"},{no:2,name:"DELETE"},{no:3,name:"REACTION"}]),bZ=a5.makeMessageType("livekit.DataStream.TextHeader",()=>[{no:1,name:"operation_type",kind:"enum",T:a5.getEnumType(bY)},{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"}),b$=a5.makeMessageType("livekit.DataStream.ByteHeader",()=>[{no:1,name:"name",kind:"scalar",T:9}],{localName:"DataStream_ByteHeader"}),b_=a5.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:a5.getEnumType(bv)},{no:8,name:"attributes",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:9,name:"text_header",kind:"message",T:bZ,oneof:"content_header"},{no:10,name:"byte_header",kind:"message",T:b$,oneof:"content_header"}],{localName:"DataStream_Header"}),b0=a5.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"}),b1=a5.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"}),b2=a5.makeMessageType("livekit.FilterParams",()=>[{no:1,name:"include_events",kind:"scalar",T:9,repeated:!0},{no:2,name:"exclude_events",kind:"scalar",T:9,repeated:!0}]),b3=a5.makeMessageType("livekit.WebhookConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"signing_key",kind:"scalar",T:9},{no:3,name:"filter_params",kind:"message",T:b2}]),b4=a5.makeMessageType("livekit.SubscribedAudioCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"enabled",kind:"scalar",T:8}]),b5=a5.makeMessageType("livekit.RoomAgentDispatch",()=>[{no:1,name:"agent_name",kind:"scalar",T:9},{no:2,name:"metadata",kind:"scalar",T:9}]),b6=a5.makeEnum("livekit.EncodedFileType",[{no:0,name:"DEFAULT_FILETYPE"},{no:1,name:"MP4"},{no:2,name:"OGG"},{no:3,name:"MP3"}]),b7=a5.makeEnum("livekit.SegmentedFileProtocol",[{no:0,name:"DEFAULT_SEGMENTED_FILE_PROTOCOL"},{no:1,name:"HLS_PROTOCOL"}]),b8=a5.makeEnum("livekit.SegmentedFileSuffix",[{no:0,name:"INDEX"},{no:1,name:"TIMESTAMP"}]),b9=a5.makeEnum("livekit.ImageFileSuffix",[{no:0,name:"IMAGE_SUFFIX_INDEX"},{no:1,name:"IMAGE_SUFFIX_TIMESTAMP"},{no:2,name:"IMAGE_SUFFIX_NONE_OVERWRITE"}]),ca=a5.makeEnum("livekit.StreamProtocol",[{no:0,name:"DEFAULT_PROTOCOL"},{no:1,name:"RTMP"},{no:2,name:"SRT"}]),cb=a5.makeEnum("livekit.AudioMixing",[{no:0,name:"DEFAULT_MIXING"},{no:1,name:"DUAL_CHANNEL_AGENT"},{no:2,name:"DUAL_CHANNEL_ALTERNATE"}]),cc=a5.makeEnum("livekit.EncodingOptionsPreset",[{no:0,name:"H264_720P_30"},{no:1,name:"H264_720P_60"},{no:2,name:"H264_1080P_30"},{no:3,name:"H264_1080P_60"},{no:4,name:"PORTRAIT_H264_720P_30"},{no:5,name:"PORTRAIT_H264_720P_60"},{no:6,name:"PORTRAIT_H264_1080P_30"},{no:7,name:"PORTRAIT_H264_1080P_60"}]),cd=a5.makeMessageType("livekit.RoomCompositeEgressRequest",()=>[{no:1,name:"room_name",kind:"scalar",T:9},{no:2,name:"layout",kind:"scalar",T:9},{no:3,name:"audio_only",kind:"scalar",T:8},{no:15,name:"audio_mixing",kind:"enum",T:a5.getEnumType(cb)},{no:4,name:"video_only",kind:"scalar",T:8},{no:5,name:"custom_base_url",kind:"scalar",T:9},{no:6,name:"file",kind:"message",T:ce,oneof:"output"},{no:7,name:"stream",kind:"message",T:cm,oneof:"output"},{no:10,name:"segments",kind:"message",T:cf,oneof:"output"},{no:8,name:"preset",kind:"enum",T:a5.getEnumType(cc),oneof:"options"},{no:9,name:"advanced",kind:"message",T:cn,oneof:"options"},{no:11,name:"file_outputs",kind:"message",T:ce,repeated:!0},{no:12,name:"stream_outputs",kind:"message",T:cm,repeated:!0},{no:13,name:"segment_outputs",kind:"message",T:cf,repeated:!0},{no:14,name:"image_outputs",kind:"message",T:cg,repeated:!0},{no:16,name:"webhooks",kind:"message",T:b3,repeated:!0}]),ce=a5.makeMessageType("livekit.EncodedFileOutput",()=>[{no:1,name:"file_type",kind:"enum",T:a5.getEnumType(b6)},{no:2,name:"filepath",kind:"scalar",T:9},{no:6,name:"disable_manifest",kind:"scalar",T:8},{no:3,name:"s3",kind:"message",T:ch,oneof:"output"},{no:4,name:"gcp",kind:"message",T:ci,oneof:"output"},{no:5,name:"azure",kind:"message",T:cj,oneof:"output"},{no:7,name:"aliOSS",kind:"message",T:ck,oneof:"output"}]),cf=a5.makeMessageType("livekit.SegmentedFileOutput",()=>[{no:1,name:"protocol",kind:"enum",T:a5.getEnumType(b7)},{no:2,name:"filename_prefix",kind:"scalar",T:9},{no:3,name:"playlist_name",kind:"scalar",T:9},{no:11,name:"live_playlist_name",kind:"scalar",T:9},{no:4,name:"segment_duration",kind:"scalar",T:13},{no:10,name:"filename_suffix",kind:"enum",T:a5.getEnumType(b8)},{no:8,name:"disable_manifest",kind:"scalar",T:8},{no:5,name:"s3",kind:"message",T:ch,oneof:"output"},{no:6,name:"gcp",kind:"message",T:ci,oneof:"output"},{no:7,name:"azure",kind:"message",T:cj,oneof:"output"},{no:9,name:"aliOSS",kind:"message",T:ck,oneof:"output"}]),cg=a5.makeMessageType("livekit.ImageOutput",()=>[{no:1,name:"capture_interval",kind:"scalar",T:13},{no:2,name:"width",kind:"scalar",T:5},{no:3,name:"height",kind:"scalar",T:5},{no:4,name:"filename_prefix",kind:"scalar",T:9},{no:5,name:"filename_suffix",kind:"enum",T:a5.getEnumType(b9)},{no:6,name:"image_codec",kind:"enum",T:a5.getEnumType(bd)},{no:7,name:"disable_manifest",kind:"scalar",T:8},{no:8,name:"s3",kind:"message",T:ch,oneof:"output"},{no:9,name:"gcp",kind:"message",T:ci,oneof:"output"},{no:10,name:"azure",kind:"message",T:cj,oneof:"output"},{no:11,name:"aliOSS",kind:"message",T:ck,oneof:"output"}]),ch=a5.makeMessageType("livekit.S3Upload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:11,name:"session_token",kind:"scalar",T:9},{no:12,name:"assume_role_arn",kind:"scalar",T:9},{no:13,name:"assume_role_external_id",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9},{no:6,name:"force_path_style",kind:"scalar",T:8},{no:7,name:"metadata",kind:"map",K:9,V:{kind:"scalar",T:9}},{no:8,name:"tagging",kind:"scalar",T:9},{no:9,name:"content_disposition",kind:"scalar",T:9},{no:10,name:"proxy",kind:"message",T:cl}]),ci=a5.makeMessageType("livekit.GCPUpload",()=>[{no:1,name:"credentials",kind:"scalar",T:9},{no:2,name:"bucket",kind:"scalar",T:9},{no:3,name:"proxy",kind:"message",T:cl}]),cj=a5.makeMessageType("livekit.AzureBlobUpload",()=>[{no:1,name:"account_name",kind:"scalar",T:9},{no:2,name:"account_key",kind:"scalar",T:9},{no:3,name:"container_name",kind:"scalar",T:9}]),ck=a5.makeMessageType("livekit.AliOSSUpload",()=>[{no:1,name:"access_key",kind:"scalar",T:9},{no:2,name:"secret",kind:"scalar",T:9},{no:3,name:"region",kind:"scalar",T:9},{no:4,name:"endpoint",kind:"scalar",T:9},{no:5,name:"bucket",kind:"scalar",T:9}]),cl=a5.makeMessageType("livekit.ProxyConfig",()=>[{no:1,name:"url",kind:"scalar",T:9},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"password",kind:"scalar",T:9}]),cm=a5.makeMessageType("livekit.StreamOutput",()=>[{no:1,name:"protocol",kind:"enum",T:a5.getEnumType(ca)},{no:2,name:"urls",kind:"scalar",T:9,repeated:!0}]),cn=a5.makeMessageType("livekit.EncodingOptions",()=>[{no:1,name:"width",kind:"scalar",T:5},{no:2,name:"height",kind:"scalar",T:5},{no:3,name:"depth",kind:"scalar",T:5},{no:4,name:"framerate",kind:"scalar",T:5},{no:5,name:"audio_codec",kind:"enum",T:a5.getEnumType(bb)},{no:6,name:"audio_bitrate",kind:"scalar",T:5},{no:11,name:"audio_quality",kind:"scalar",T:5},{no:7,name:"audio_frequency",kind:"scalar",T:5},{no:8,name:"video_codec",kind:"enum",T:a5.getEnumType(bc)},{no:9,name:"video_bitrate",kind:"scalar",T:5},{no:12,name:"video_quality",kind:"scalar",T:5},{no:10,name:"key_frame_interval",kind:"scalar",T:1}]),co=a5.makeMessageType("livekit.AutoParticipantEgress",()=>[{no:1,name:"preset",kind:"enum",T:a5.getEnumType(cc),oneof:"options"},{no:2,name:"advanced",kind:"message",T:cn,oneof:"options"},{no:3,name:"file_outputs",kind:"message",T:ce,repeated:!0},{no:4,name:"segment_outputs",kind:"message",T:cf,repeated:!0}]),cp=a5.makeMessageType("livekit.AutoTrackEgress",()=>[{no:1,name:"filepath",kind:"scalar",T:9},{no:5,name:"disable_manifest",kind:"scalar",T:8},{no:2,name:"s3",kind:"message",T:ch,oneof:"output"},{no:3,name:"gcp",kind:"message",T:ci,oneof:"output"},{no:4,name:"azure",kind:"message",T:cj,oneof:"output"},{no:6,name:"aliOSS",kind:"message",T:ck,oneof:"output"}]),cq=a5.makeMessageType("livekit.RoomEgress",()=>[{no:1,name:"room",kind:"message",T:cd},{no:3,name:"participant",kind:"message",T:co},{no:2,name:"tracks",kind:"message",T:cp}]),cr=(()=>[{no:1,name:"name",kind:"scalar",T:9},{no:2,name:"empty_timeout",kind:"scalar",T:13},{no:3,name:"departure_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:11,name:"metadata",kind:"scalar",T:9},{no:5,name:"egress",kind:"message",T:cq},{no:7,name:"min_playout_delay",kind:"scalar",T:13},{no:8,name:"max_playout_delay",kind:"scalar",T:13},{no:9,name:"sync_streams",kind:"scalar",T:8},{no:10,name:"agents",kind:"message",T:b5,repeated:!0}],a5.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}])),cs=a5.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),ct=a5.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),cu=a5.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:cE,oneof:"message"},{no:2,name:"answer",kind:"message",T:cE,oneof:"message"},{no:3,name:"trickle",kind:"message",T:cy,oneof:"message"},{no:4,name:"add_track",kind:"message",T:cx,oneof:"message"},{no:5,name:"mute",kind:"message",T:cz,oneof:"message"},{no:6,name:"subscription",kind:"message",T:cG,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:cH,oneof:"message"},{no:8,name:"leave",kind:"message",T:cK,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:cM,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:c$,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:c1,oneof:"message"},{no:13,name:"simulate",kind:"message",T:c4,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:cN,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:c5,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:cI,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:cJ,oneof:"message"}]),cv=a5.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:cA,oneof:"message"},{no:2,name:"answer",kind:"message",T:cE,oneof:"message"},{no:3,name:"offer",kind:"message",T:cE,oneof:"message"},{no:4,name:"trickle",kind:"message",T:cy,oneof:"message"},{no:5,name:"update",kind:"message",T:cF,oneof:"message"},{no:6,name:"track_published",kind:"message",T:cC,oneof:"message"},{no:8,name:"leave",kind:"message",T:cK,oneof:"message"},{no:9,name:"mute",kind:"message",T:cz,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:cP,oneof:"message"},{no:11,name:"room_update",kind:"message",T:cQ,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:cS,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:cU,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:cX,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:c_,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:cD,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:cB,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:c6,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:c9,oneof:"message"},{no:22,name:"request_response",kind:"message",T:da,oneof:"message"},{no:23,name:"track_subscribed",kind:"message",T:dc,oneof:"message"},{no:24,name:"room_moved",kind:"message",T:c0,oneof:"message"},{no:25,name:"media_sections_requirement",kind:"message",T:dh,oneof:"message"},{no:26,name:"subscribed_audio_codec_update",kind:"message",T:cY,oneof:"message"}]),cw=a5.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:by,repeated:!0},{no:5,name:"video_layer_mode",kind:"enum",T:a5.getEnumType(bz)}]),cx=a5.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:a5.getEnumType(bf)},{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:a5.getEnumType(bg)},{no:9,name:"layers",kind:"message",T:by,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:cw,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:a5.getEnumType(bv)},{no:15,name:"stream",kind:"scalar",T:9},{no:16,name:"backup_codec_policy",kind:"enum",T:a5.getEnumType(be)},{no:17,name:"audio_features",kind:"enum",T:a5.getEnumType(bn),repeated:!0}]),cy=a5.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:a5.getEnumType(cr)},{no:3,name:"final",kind:"scalar",T:8}]),cz=a5.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),cA=a5.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:bo},{no:2,name:"participant",kind:"message",T:br},{no:3,name:"other_participants",kind:"message",T:br,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:cO,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:bU},{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:bQ},{no:13,name:"sif_trailer",kind:"scalar",T:12},{no:14,name:"enabled_publish_codecs",kind:"message",T:bp,repeated:!0},{no:15,name:"fast_publish",kind:"scalar",T:8}]),cB=a5.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:cO,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:bU},{no:3,name:"server_info",kind:"message",T:bQ},{no:4,name:"last_message_seq",kind:"scalar",T:13}]),cC=a5.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:bx}]),cD=a5.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),cE=a5.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}}]),cF=a5.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:br,repeated:!0}]),cG=a5.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:bP,repeated:!0}]),cH=a5.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:a5.getEnumType(bh)},{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}]),cI=a5.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:a5.getEnumType(bn),repeated:!0}]),cJ=a5.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}]),cK=a5.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:a5.getEnumType(bk)},{no:3,name:"action",kind:"enum",T:a5.getEnumType(cL)},{no:4,name:"regions",kind:"message",T:c7}]),cL=a5.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),cM=a5.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:by,repeated:!0}]),cN=a5.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}]),cO=a5.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}]),cP=a5.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:bF,repeated:!0}]),cQ=a5.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:bo}]),cR=a5.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:a5.getEnumType(bi)},{no:3,name:"score",kind:"scalar",T:2}]),cS=a5.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:cR,repeated:!0}]),cT=a5.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:a5.getEnumType(cs)}]),cU=a5.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:cT,repeated:!0}]),cV=a5.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:a5.getEnumType(bh)},{no:2,name:"enabled",kind:"scalar",T:8}]),cW=a5.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:cV,repeated:!0}]),cX=a5.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:cV,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:cW,repeated:!0}]),cY=a5.makeMessageType("livekit.SubscribedAudioCodecUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_audio_codecs",kind:"message",T:b4,repeated:!0}]),cZ=a5.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}]),c$=a5.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:cZ,repeated:!0}]),c_=a5.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}]),c0=a5.makeMessageType("livekit.RoomMovedResponse",()=>[{no:1,name:"room",kind:"message",T:bo},{no:2,name:"token",kind:"scalar",T:9},{no:3,name:"participant",kind:"message",T:br},{no:4,name:"other_participants",kind:"message",T:br,repeated:!0}]),c1=a5.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:cE},{no:2,name:"subscription",kind:"message",T:cG},{no:3,name:"publish_tracks",kind:"message",T:cC,repeated:!0},{no:4,name:"data_channels",kind:"message",T:c3,repeated:!0},{no:5,name:"offer",kind:"message",T:cE},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0},{no:7,name:"datachannel_receive_states",kind:"message",T:c2,repeated:!0}]),c2=a5.makeMessageType("livekit.DataChannelReceiveState",()=>[{no:1,name:"publisher_sid",kind:"scalar",T:9},{no:2,name:"last_seq",kind:"scalar",T:13}]),c3=a5.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:a5.getEnumType(cr)}]),c4=a5.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:a5.getEnumType(ct),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"}]),c5=a5.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),c6=a5.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),c7=a5.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:c8,repeated:!0}]),c8=a5.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}]),c9=a5.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:a5.getEnumType(bm)}]),da=a5.makeMessageType("livekit.RequestResponse",()=>[{no:1,name:"request_id",kind:"scalar",T:13},{no:2,name:"reason",kind:"enum",T:a5.getEnumType(db)},{no:3,name:"message",kind:"scalar",T:9},{no:4,name:"trickle",kind:"message",T:cy,oneof:"request"},{no:5,name:"add_track",kind:"message",T:cx,oneof:"request"},{no:6,name:"mute",kind:"message",T:cz,oneof:"request"},{no:7,name:"update_metadata",kind:"message",T:cN,oneof:"request"},{no:8,name:"update_audio_track",kind:"message",T:cI,oneof:"request"},{no:9,name:"update_video_track",kind:"message",T:cJ,oneof:"request"}]),db=a5.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"}]),dc=a5.makeMessageType("livekit.TrackSubscribed",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),dd=a5.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}]),de=a5.makeMessageType("livekit.JoinRequest",()=>[{no:1,name:"client_info",kind:"message",T:bS},{no:2,name:"connection_settings",kind:"message",T:dd},{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:cx,repeated:!0},{no:6,name:"publisher_offer",kind:"message",T:cE},{no:7,name:"reconnect",kind:"scalar",T:8},{no:8,name:"reconnect_reason",kind:"enum",T:a5.getEnumType(bl)},{no:9,name:"participant_sid",kind:"scalar",T:9},{no:10,name:"sync_state",kind:"message",T:c1}]),df=a5.makeMessageType("livekit.WrappedJoinRequest",()=>[{no:1,name:"compression",kind:"enum",T:a5.getEnumType(dg)},{no:2,name:"join_request",kind:"scalar",T:12}]),dg=a5.makeEnum("livekit.WrappedJoinRequest.Compression",[{no:0,name:"NONE"},{no:1,name:"GZIP"}]),dh=a5.makeMessageType("livekit.MediaSectionsRequirement",()=>[{no:1,name:"num_audios",kind:"scalar",T:13},{no:2,name:"num_videos",kind:"scalar",T:13}]);var di={exports:{}},dj=di.exports,dk=function(){var a;return k?di.exports:(k=1,a=function(){var a=function(){},b="undefined",c=typeof window!==b&&typeof window.navigator!==b&&/Trident\/|MSIE /.test(window.navigator.userAgent),d=["trace","debug","info","warn","error"],e={},f=null;function g(a,b){var c=a[b];if("function"==typeof c.bind)return c.bind(a);try{return Function.prototype.bind.call(c,a)}catch(b){return function(){return Function.prototype.apply.apply(c,[a,arguments])}}}function h(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(){for(var c=this.getLevel(),e=0;e<d.length;e++){var f=d[e];this[f]=e<c?a:this.methodFactory(f,c,this.name)}if(this.log=this.debug,typeof console===b&&c<this.levels.SILENT)return"No console available for logging"}function j(a){return function(){typeof console!==b&&(i.call(this),this[a].apply(this,arguments))}}function k(d,e,f){var i;return"debug"===(i=d)&&(i="log"),typeof console!==b&&("trace"===i&&c?h:void 0!==console[i]?g(console,i):void 0!==console.log?g(console,"log"):a)||j.apply(this,arguments)}function l(a,c){var g,h,j,l=this,m="loglevel";function n(){var a;if(typeof window!==b&&m){try{a=window.localStorage[m]}catch(a){}if(typeof a===b)try{var c=window.document.cookie,d=encodeURIComponent(m),e=c.indexOf(d+"=");-1!==e&&(a=/^([^;]+)/.exec(c.slice(e+d.length+1))[1])}catch(a){}return void 0===l.levels[a]&&(a=void 0),a}}function o(a){var b=a;if("string"==typeof b&&void 0!==l.levels[b.toUpperCase()]&&(b=l.levels[b.toUpperCase()]),"number"==typeof b&&b>=0&&b<=l.levels.SILENT)return b;throw TypeError("log.setLevel() called with invalid level: "+a)}"string"==typeof a?m+=":"+a:"symbol"==typeof a&&(m=void 0),l.name=a,l.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},l.methodFactory=c||k,l.getLevel=function(){return null!=j?j:null!=h?h:g},l.setLevel=function(a,c){return j=o(a),!1!==c&&function(a){var c=(d[a]||"silent").toUpperCase();if(typeof window!==b&&m){try{window.localStorage[m]=c;return}catch(a){}try{window.document.cookie=encodeURIComponent(m)+"="+c+";"}catch(a){}}}(j),i.call(l)},l.setDefaultLevel=function(a){h=o(a),n()||l.setLevel(a,!1)},l.resetLevel=function(){if(j=null,typeof window!==b&&m){try{window.localStorage.removeItem(m)}catch(a){}try{window.document.cookie=encodeURIComponent(m)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(a){}}i.call(l)},l.enableAll=function(a){l.setLevel(l.levels.TRACE,a)},l.disableAll=function(a){l.setLevel(l.levels.SILENT,a)},l.rebuild=function(){if(f!==l&&(g=o(f.getLevel())),i.call(l),f===l)for(var a in e)e[a].rebuild()},g=o(f?f.getLevel():"WARN");var p=n();null!=p&&(j=o(p)),i.call(l)}(f=new l).getLogger=function(a){if("symbol"!=typeof a&&"string"!=typeof a||""===a)throw TypeError("You must supply a name when creating a logger.");var b=e[a];return b||(b=e[a]=new l(a,f.methodFactory)),b};var m=typeof window!==b?window.log:void 0;return f.noConflict=function(){return typeof window!==b&&window.log===f&&(window.log=m),f},f.getLoggers=function(){return e},f.default=f,f},di.exports?di.exports=a():dj.log=a(),di.exports)}();!function(a){a[a.trace=0]="trace",a[a.debug=1]="debug",a[a.info=2]="info",a[a.warn=3]="warn",a[a.error=4]="error",a[a.silent=5]="silent"}(l||(l={})),function(a){a.Default="livekit",a.Room="livekit-room",a.TokenSource="livekit-token-source",a.Participant="livekit-participant",a.Track="livekit-track",a.Publication="livekit-track-publication",a.Engine="livekit-engine",a.Signal="livekit-signal",a.PCManager="livekit-pc-manager",a.PCTransport="livekit-pc-transport",a.E2EE="lk-e2ee"}(m||(m={}));let dl=dk.getLogger("livekit");function dm(a){let b=dk.getLogger(a);return b.setDefaultLevel(dl.getLevel()),b}Object.values(m).map(a=>dk.getLogger(a)),dl.setDefaultLevel(l.info);let dn=dk.getLogger("lk-e2ee"),dp=[0,300,1200,2700,4800,7e3,7e3,7e3,7e3,7e3];class dq{constructor(a){this._retryDelays=void 0!==a?[...a]:dp}nextRetryDelayInMs(a){if(a.retryCount>=this._retryDelays.length)return null;let b=this._retryDelays[a.retryCount];return a.retryCount<=1?b:b+1e3*Math.random()}}function dr(a,b,c,d){return new(c||(c=Promise))(function(e,f){function g(a){try{i(d.next(a))}catch(a){f(a)}}function h(a){try{i(d.throw(a))}catch(a){f(a)}}function i(a){var b;a.done?e(a.value):((b=a.value)instanceof c?b:new c(function(a){a(b)})).then(g,h)}i((d=d.apply(a,b||[])).next())})}function ds(a){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var b,c=a[Symbol.asyncIterator];return c?c.call(a):(a=function(a){var b="function"==typeof Symbol&&Symbol.iterator,c=b&&a[b],d=0;if(c)return c.call(a);if(a&&"number"==typeof a.length)return{next:function(){return a&&d>=a.length&&(a=void 0),{value:a&&a[d++],done:!a}}};throw TypeError(b?"Object is not iterable.":"Symbol.iterator is not defined.")}(a),b={},d("next"),d("throw"),d("return"),b[Symbol.asyncIterator]=function(){return this},b);function d(c){b[c]=a[c]&&function(b){return new Promise(function(d,e){var f,g,h;f=d,g=e,h=(b=a[c](b)).done,Promise.resolve(b.value).then(function(a){f({value:a,done:h})},g)})}}}"function"==typeof SuppressedError&&SuppressedError;var dt={exports:{}},du=function(){if(n)return dt.exports;n=1;var a,b="object"==typeof Reflect?Reflect:null,c=b&&"function"==typeof b.apply?b.apply:function(a,b,c){return Function.prototype.apply.call(a,b,c)};a=b&&"function"==typeof b.ownKeys?b.ownKeys:Object.getOwnPropertySymbols?function(a){return Object.getOwnPropertyNames(a).concat(Object.getOwnPropertySymbols(a))}:function(a){return Object.getOwnPropertyNames(a)};var d=Number.isNaN||function(a){return a!=a};function e(){e.init.call(this)}dt.exports=e,dt.exports.once=function(a,b){return new Promise(function(c,d){var e,f,g;function h(c){a.removeListener(b,i),d(c)}function i(){"function"==typeof a.removeListener&&a.removeListener("error",h),c([].slice.call(arguments))}p(a,b,i,{once:!0}),"error"!==b&&(e=a,f=h,g={once:!0},"function"==typeof e.on&&p(e,"error",f,g))})},e.EventEmitter=e,e.prototype._events=void 0,e.prototype._eventsCount=0,e.prototype._maxListeners=void 0;var f=10;function g(a){if("function"!=typeof a)throw TypeError('The "listener" argument must be of type Function. Received type '+typeof a)}function h(a){return void 0===a._maxListeners?e.defaultMaxListeners:a._maxListeners}function i(a,b,c,d){if(g(c),void 0===(f=a._events)?(f=a._events=Object.create(null),a._eventsCount=0):(void 0!==f.newListener&&(a.emit("newListener",b,c.listener?c.listener:c),f=a._events),i=f[b]),void 0===i)i=f[b]=c,++a._eventsCount;else if("function"==typeof i?i=f[b]=d?[c,i]:[i,c]:d?i.unshift(c):i.push(c),(e=h(a))>0&&i.length>e&&!i.warned){i.warned=!0;var e,f,i,j=Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");j.name="MaxListenersExceededWarning",j.emitter=a,j.type=b,j.count=i.length,console&&console.warn&&console.warn(j)}return a}function j(){if(!this.fired)return(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0==arguments.length)?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function k(a,b,c){var d={fired:!1,wrapFn:void 0,target:a,type:b,listener:c},e=j.bind(d);return e.listener=c,d.wrapFn=e,e}function l(a,b,c){var d=a._events;if(void 0===d)return[];var e=d[b];return void 0===e?[]:"function"==typeof e?c?[e.listener||e]:[e]:c?function(a){for(var b=Array(a.length),c=0;c<b.length;++c)b[c]=a[c].listener||a[c];return b}(e):o(e,e.length)}function m(a){var b=this._events;if(void 0!==b){var c=b[a];if("function"==typeof c)return 1;if(void 0!==c)return c.length}return 0}function o(a,b){for(var c=Array(b),d=0;d<b;++d)c[d]=a[d];return c}function p(a,b,c,d){if("function"==typeof a.on)d.once?a.once(b,c):a.on(b,c);else if("function"==typeof a.addEventListener)a.addEventListener(b,function e(f){d.once&&a.removeEventListener(b,e),c(f)});else throw TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof a)}return Object.defineProperty(e,"defaultMaxListeners",{enumerable:!0,get:function(){return f},set:function(a){if("number"!=typeof a||a<0||d(a))throw RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+a+".");f=a}}),e.init=function(){(void 0===this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},e.prototype.setMaxListeners=function(a){if("number"!=typeof a||a<0||d(a))throw RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+a+".");return this._maxListeners=a,this},e.prototype.getMaxListeners=function(){return h(this)},e.prototype.emit=function(a){for(var b=[],d=1;d<arguments.length;d++)b.push(arguments[d]);var e="error"===a,f=this._events;if(void 0!==f)e=e&&void 0===f.error;else if(!e)return!1;if(e){if(b.length>0&&(g=b[0]),g instanceof Error)throw g;var g,h=Error("Unhandled error."+(g?" ("+g.message+")":""));throw h.context=g,h}var i=f[a];if(void 0===i)return!1;if("function"==typeof i)c(i,this,b);else for(var j=i.length,k=o(i,j),d=0;d<j;++d)c(k[d],this,b);return!0},e.prototype.addListener=function(a,b){return i(this,a,b,!1)},e.prototype.on=e.prototype.addListener,e.prototype.prependListener=function(a,b){return i(this,a,b,!0)},e.prototype.once=function(a,b){return g(b),this.on(a,k(this,a,b)),this},e.prototype.prependOnceListener=function(a,b){return g(b),this.prependListener(a,k(this,a,b)),this},e.prototype.removeListener=function(a,b){var c,d,e,f,h;if(g(b),void 0===(d=this._events)||void 0===(c=d[a]))return this;if(c===b||c.listener===b)0==--this._eventsCount?this._events=Object.create(null):(delete d[a],d.removeListener&&this.emit("removeListener",a,c.listener||b));else if("function"!=typeof c){for(e=-1,f=c.length-1;f>=0;f--)if(c[f]===b||c[f].listener===b){h=c[f].listener,e=f;break}if(e<0)return this;0===e?c.shift():function(a,b){for(;b+1<a.length;b++)a[b]=a[b+1];a.pop()}(c,e),1===c.length&&(d[a]=c[0]),void 0!==d.removeListener&&this.emit("removeListener",a,h||b)}return this},e.prototype.off=e.prototype.removeListener,e.prototype.removeAllListeners=function(a){var b,c,d;if(void 0===(c=this._events))return this;if(void 0===c.removeListener)return 0==arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==c[a]&&(0==--this._eventsCount?this._events=Object.create(null):delete c[a]),this;if(0==arguments.length){var e,f=Object.keys(c);for(d=0;d<f.length;++d)"removeListener"!==(e=f[d])&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(b=c[a]))this.removeListener(a,b);else if(void 0!==b)for(d=b.length-1;d>=0;d--)this.removeListener(a,b[d]);return this},e.prototype.listeners=function(a){return l(this,a,!0)},e.prototype.rawListeners=function(a){return l(this,a,!1)},e.listenerCount=function(a,b){return"function"==typeof a.listenerCount?a.listenerCount(b):m.call(a,b)},e.prototype.listenerCount=m,e.prototype.eventNames=function(){return this._eventsCount>0?a(this._events):[]},dt.exports}();let dv=!0,dw=!0;function dx(a,b,c){let d=a.match(b);return d&&d.length>=c&&parseFloat(d[c],10)}function dy(a,b,c){if(!a.RTCPeerConnection)return;let d=a.RTCPeerConnection.prototype,e=d.addEventListener;d.addEventListener=function(a,d){if(a!==b)return e.apply(this,arguments);let f=a=>{let b=c(a);b&&(d.handleEvent?d.handleEvent(b):d(b))};return this._eventMap=this._eventMap||{},this._eventMap[b]||(this._eventMap[b]=new Map),this._eventMap[b].set(d,f),e.apply(this,[a,f])};let f=d.removeEventListener;d.removeEventListener=function(a,c){if(a!==b||!this._eventMap||!this._eventMap[b]||!this._eventMap[b].has(c))return f.apply(this,arguments);let d=this._eventMap[b].get(c);return this._eventMap[b].delete(c),0===this._eventMap[b].size&&delete this._eventMap[b],0===Object.keys(this._eventMap).length&&delete this._eventMap,f.apply(this,[a,d])},Object.defineProperty(d,"on"+b,{get(){return this["_on"+b]},set(a){this["_on"+b]&&(this.removeEventListener(b,this["_on"+b]),delete this["_on"+b]),a&&this.addEventListener(b,this["_on"+b]=a)},enumerable:!0,configurable:!0})}function dz(a){return"boolean"!=typeof a?Error("Argument type: "+typeof a+". Please use a boolean."):(dv=a,a?"adapter.js logging disabled":"adapter.js logging enabled")}function dA(a){return"boolean"!=typeof a?Error("Argument type: "+typeof a+". Please use a boolean."):(dw=!a,"adapter.js deprecation warnings "+(a?"disabled":"enabled"))}function dB(){"object"==typeof window&&(dv||"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments))}function dC(a,b){dw&&console.warn(a+" is deprecated, please use "+b+" instead.")}function dD(a){return"[object Object]"===Object.prototype.toString.call(a)}function dE(a,b,c){let d=c?"outbound-rtp":"inbound-rtp",e=new Map;if(null===b)return e;let f=[];return a.forEach(a=>{"track"===a.type&&a.trackIdentifier===b.id&&f.push(a)}),f.forEach(b=>{a.forEach(c=>{c.type===d&&c.trackId===b.id&&function a(b,c,d){!c||d.has(c.id)||(d.set(c.id,c),Object.keys(c).forEach(e=>{e.endsWith("Id")?a(b,b.get(c[e]),d):e.endsWith("Ids")&&c[e].forEach(c=>{a(b,b.get(c),d)})}))}(a,c,e)})}),e}function dF(a,b){let c=a&&a.navigator;if(!c.mediaDevices)return;let d=function(a){if("object"!=typeof a||a.mandatory||a.optional)return a;let b={};return Object.keys(a).forEach(c=>{if("require"===c||"advanced"===c||"mediaSource"===c)return;let d="object"==typeof a[c]?a[c]:{ideal:a[c]};void 0!==d.exact&&"number"==typeof d.exact&&(d.min=d.max=d.exact);let e=function(a,b){return a?a+b.charAt(0).toUpperCase()+b.slice(1):"deviceId"===b?"sourceId":b};if(void 0!==d.ideal){b.optional=b.optional||[];let a={};"number"==typeof d.ideal?(a[e("min",c)]=d.ideal,b.optional.push(a),(a={})[e("max",c)]=d.ideal):a[e("",c)]=d.ideal,b.optional.push(a)}void 0!==d.exact&&"number"!=typeof d.exact?(b.mandatory=b.mandatory||{},b.mandatory[e("",c)]=d.exact):["min","max"].forEach(a=>{void 0!==d[a]&&(b.mandatory=b.mandatory||{},b.mandatory[e(a,c)]=d[a])})}),a.advanced&&(b.optional=(b.optional||[]).concat(a.advanced)),b},e=function(a,e){if(b.version>=61)return e(a);if((a=JSON.parse(JSON.stringify(a)))&&"object"==typeof a.audio){let b=function(a,b,c){b in a&&!(c in a)&&(a[c]=a[b],delete a[b])};b((a=JSON.parse(JSON.stringify(a))).audio,"autoGainControl","googAutoGainControl"),b(a.audio,"noiseSuppression","googNoiseSuppression"),a.audio=d(a.audio)}if(a&&"object"==typeof a.video){let f=a.video.facingMode;f=f&&("object"==typeof f?f:{ideal:f});let g=b.version<66;if(f&&("user"===f.exact||"environment"===f.exact||"user"===f.ideal||"environment"===f.ideal)&&!(c.mediaDevices.getSupportedConstraints&&c.mediaDevices.getSupportedConstraints().facingMode&&!g)){let b;if(delete a.video.facingMode,"environment"===f.exact||"environment"===f.ideal?b=["back","rear"]:("user"===f.exact||"user"===f.ideal)&&(b=["front"]),b)return c.mediaDevices.enumerateDevices().then(c=>{let g=(c=c.filter(a=>"videoinput"===a.kind)).find(a=>b.some(b=>a.label.toLowerCase().includes(b)));return!g&&c.length&&b.includes("back")&&(g=c[c.length-1]),g&&(a.video.deviceId=f.exact?{exact:g.deviceId}:{ideal:g.deviceId}),a.video=d(a.video),dB("chrome: "+JSON.stringify(a)),e(a)})}a.video=d(a.video)}return dB("chrome: "+JSON.stringify(a)),e(a)},f=function(a){return b.version>=64?a:{name:({PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"})[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(c.getUserMedia=(function(a,b,d){e(a,a=>{c.webkitGetUserMedia(a,b,a=>{d&&d(f(a))})})}).bind(c),c.mediaDevices.getUserMedia){let a=c.mediaDevices.getUserMedia.bind(c.mediaDevices);c.mediaDevices.getUserMedia=function(b){return e(b,b=>a(b).then(a=>{if(b.audio&&!a.getAudioTracks().length||b.video&&!a.getVideoTracks().length)throw a.getTracks().forEach(a=>{a.stop()}),new DOMException("","NotFoundError");return a},a=>Promise.reject(f(a))))}}}function dG(a){a.MediaStream=a.MediaStream||a.webkitMediaStream}function dH(a){if("object"!=typeof a||!a.RTCPeerConnection||"ontrack"in a.RTCPeerConnection.prototype)dy(a,"track",a=>(a.transceiver||Object.defineProperty(a,"transceiver",{value:{receiver:a.receiver}}),a));else{Object.defineProperty(a.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(a){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=a)},enumerable:!0,configurable:!0});let b=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=b=>{b.stream.addEventListener("addtrack",c=>{let d;d=a.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(a=>a.track&&a.track.id===c.track.id):{track:c.track};let e=new Event("track");e.track=c.track,e.receiver=d,e.transceiver={receiver:d},e.streams=[b.stream],this.dispatchEvent(e)}),b.stream.getTracks().forEach(c=>{let d;d=a.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(a=>a.track&&a.track.id===c.id):{track:c};let e=new Event("track");e.track=c,e.receiver=d,e.transceiver={receiver:d},e.streams=[b.stream],this.dispatchEvent(e)})},this.addEventListener("addstream",this._ontrackpoly)),b.apply(this,arguments)}}}function dI(a){if("object"==typeof a&&a.RTCPeerConnection&&!("getSenders"in a.RTCPeerConnection.prototype)&&"createDTMFSender"in a.RTCPeerConnection.prototype){let b=function(a,b){return{track:b,get dtmf(){return void 0===this._dtmf&&("audio"===b.kind?this._dtmf=a.createDTMFSender(b):this._dtmf=null),this._dtmf},_pc:a}};if(!a.RTCPeerConnection.prototype.getSenders){a.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};let c=a.RTCPeerConnection.prototype.addTrack;a.RTCPeerConnection.prototype.addTrack=function(a,d){let e=c.apply(this,arguments);return e||(e=b(this,a),this._senders.push(e)),e};let d=a.RTCPeerConnection.prototype.removeTrack;a.RTCPeerConnection.prototype.removeTrack=function(a){d.apply(this,arguments);let b=this._senders.indexOf(a);-1!==b&&this._senders.splice(b,1)}}let c=a.RTCPeerConnection.prototype.addStream;a.RTCPeerConnection.prototype.addStream=function(a){this._senders=this._senders||[],c.apply(this,[a]),a.getTracks().forEach(a=>{this._senders.push(b(this,a))})};let d=a.RTCPeerConnection.prototype.removeStream;a.RTCPeerConnection.prototype.removeStream=function(a){this._senders=this._senders||[],d.apply(this,[a]),a.getTracks().forEach(a=>{let b=this._senders.find(b=>b.track===a);b&&this._senders.splice(this._senders.indexOf(b),1)})}}else if("object"==typeof a&&a.RTCPeerConnection&&"getSenders"in a.RTCPeerConnection.prototype&&"createDTMFSender"in a.RTCPeerConnection.prototype&&a.RTCRtpSender&&!("dtmf"in a.RTCRtpSender.prototype)){let b=a.RTCPeerConnection.prototype.getSenders;a.RTCPeerConnection.prototype.getSenders=function(){let a=b.apply(this,[]);return a.forEach(a=>a._pc=this),a},Object.defineProperty(a.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function dJ(a){if(!("object"==typeof a&&a.RTCPeerConnection&&a.RTCRtpSender&&a.RTCRtpReceiver))return;if(!("getStats"in a.RTCRtpSender.prototype)){let b=a.RTCPeerConnection.prototype.getSenders;b&&(a.RTCPeerConnection.prototype.getSenders=function(){let a=b.apply(this,[]);return a.forEach(a=>a._pc=this),a});let c=a.RTCPeerConnection.prototype.addTrack;c&&(a.RTCPeerConnection.prototype.addTrack=function(){let a=c.apply(this,arguments);return a._pc=this,a}),a.RTCRtpSender.prototype.getStats=function(){let a=this;return this._pc.getStats().then(b=>dE(b,a.track,!0))}}if(!("getStats"in a.RTCRtpReceiver.prototype)){let b=a.RTCPeerConnection.prototype.getReceivers;b&&(a.RTCPeerConnection.prototype.getReceivers=function(){let a=b.apply(this,[]);return a.forEach(a=>a._pc=this),a}),dy(a,"track",a=>(a.receiver._pc=a.srcElement,a)),a.RTCRtpReceiver.prototype.getStats=function(){let a=this;return this._pc.getStats().then(b=>dE(b,a.track,!1))}}if(!("getStats"in a.RTCRtpSender.prototype&&"getStats"in a.RTCRtpReceiver.prototype))return;let b=a.RTCPeerConnection.prototype.getStats;a.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof a.MediaStreamTrack){let a,b,c,d=arguments[0];return(this.getSenders().forEach(b=>{b.track===d&&(a?c=!0:a=b)}),this.getReceivers().forEach(a=>(a.track===d&&(b?c=!0:b=a),a.track===d)),c||a&&b)?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):a?a.getStats():b?b.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return b.apply(this,arguments)}}function dK(a){a.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};let b=a.RTCPeerConnection.prototype.addTrack;a.RTCPeerConnection.prototype.addTrack=function(a,c){if(!c)return b.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let d=b.apply(this,arguments);return this._shimmedLocalStreams[c.id]?-1===this._shimmedLocalStreams[c.id].indexOf(d)&&this._shimmedLocalStreams[c.id].push(d):this._shimmedLocalStreams[c.id]=[c,d],d};let c=a.RTCPeerConnection.prototype.addStream;a.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(a=>{if(this.getSenders().find(b=>b.track===a))throw new DOMException("Track already exists.","InvalidAccessError")});let b=this.getSenders();c.apply(this,arguments);let d=this.getSenders().filter(a=>-1===b.indexOf(a));this._shimmedLocalStreams[a.id]=[a].concat(d)};let d=a.RTCPeerConnection.prototype.removeStream;a.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],d.apply(this,arguments)};let e=a.RTCPeerConnection.prototype.removeTrack;a.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(b=>{let c=this._shimmedLocalStreams[b].indexOf(a);-1!==c&&this._shimmedLocalStreams[b].splice(c,1),1===this._shimmedLocalStreams[b].length&&delete this._shimmedLocalStreams[b]}),e.apply(this,arguments)}}function dL(a,b){if(!a.RTCPeerConnection)return;if(a.RTCPeerConnection.prototype.addTrack&&b.version>=65)return dK(a);let c=a.RTCPeerConnection.prototype.getLocalStreams;a.RTCPeerConnection.prototype.getLocalStreams=function(){let a=c.apply(this);return this._reverseStreams=this._reverseStreams||{},a.map(a=>this._reverseStreams[a.id])};let d=a.RTCPeerConnection.prototype.addStream;a.RTCPeerConnection.prototype.addStream=function(b){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},b.getTracks().forEach(a=>{if(this.getSenders().find(b=>b.track===a))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[b.id]){let c=new a.MediaStream(b.getTracks());this._streams[b.id]=c,this._reverseStreams[c.id]=b,b=c}d.apply(this,[b])};let e=a.RTCPeerConnection.prototype.removeStream;function f(a,b){let c=b.sdp;return Object.keys(a._reverseStreams||[]).forEach(b=>{let d=a._reverseStreams[b],e=a._streams[d.id];c=c.replace(RegExp(e.id,"g"),d.id)}),new RTCSessionDescription({type:b.type,sdp:c})}a.RTCPeerConnection.prototype.removeStream=function(a){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},e.apply(this,[this._streams[a.id]||a]),delete this._reverseStreams[this._streams[a.id]?this._streams[a.id].id:a.id],delete this._streams[a.id]},a.RTCPeerConnection.prototype.addTrack=function(b,c){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");let d=[].slice.call(arguments,1);if(1!==d.length||!d[0].getTracks().find(a=>a===b))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(a=>a.track===b))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};let e=this._streams[c.id];if(e)e.addTrack(b),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let d=new a.MediaStream([b]);this._streams[c.id]=d,this._reverseStreams[d.id]=c,this.addStream(d)}return this.getSenders().find(a=>a.track===b)},["createOffer","createAnswer"].forEach(function(b){let c=a.RTCPeerConnection.prototype[b];a.RTCPeerConnection.prototype[b]=({[b](){let a=arguments,b=arguments.length&&"function"==typeof arguments[0];return b?c.apply(this,[b=>{let c=f(this,b);a[0].apply(null,[c])},b=>{a[1]&&a[1].apply(null,b)},arguments[2]]):c.apply(this,arguments).then(a=>f(this,a))}})[b]});let g=a.RTCPeerConnection.prototype.setLocalDescription;a.RTCPeerConnection.prototype.setLocalDescription=function(){var a,b;let c;return arguments.length&&arguments[0].type?(arguments[0]=(a=this,b=arguments[0],c=b.sdp,Object.keys(a._reverseStreams||[]).forEach(b=>{let d=a._reverseStreams[b],e=a._streams[d.id];c=c.replace(RegExp(d.id,"g"),e.id)}),new RTCSessionDescription({type:b.type,sdp:c})),g.apply(this,arguments)):g.apply(this,arguments)};let h=Object.getOwnPropertyDescriptor(a.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(a.RTCPeerConnection.prototype,"localDescription",{get(){let a=h.get.apply(this);return""===a.type?a:f(this,a)}}),a.RTCPeerConnection.prototype.removeTrack=function(a){let b;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!a._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(a._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{},Object.keys(this._streams).forEach(c=>{this._streams[c].getTracks().find(b=>a.track===b)&&(b=this._streams[c])}),b&&(1===b.getTracks().length?this.removeStream(this._reverseStreams[b.id]):b.removeTrack(a.track),this.dispatchEvent(new Event("negotiationneeded")))}}function dM(a,b){!a.RTCPeerConnection&&a.webkitRTCPeerConnection&&(a.RTCPeerConnection=a.webkitRTCPeerConnection),a.RTCPeerConnection&&b.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(b){let c=a.RTCPeerConnection.prototype[b];a.RTCPeerConnection.prototype[b]=({[b](){return arguments[0]=new("addIceCandidate"===b?a.RTCIceCandidate:a.RTCSessionDescription)(arguments[0]),c.apply(this,arguments)}})[b]})}function dN(a,b){dy(a,"negotiationneeded",a=>{let c=a.target;if(!(b.version<72)&&(!c.getConfiguration||"plan-b"!==c.getConfiguration().sdpSemantics)||"stable"===c.signalingState)return a})}var dO=Object.freeze({__proto__:null,fixNegotiationNeeded:dN,shimAddTrackRemoveTrack:dL,shimAddTrackRemoveTrackWithNative:dK,shimGetSendersWithDtmf:dI,shimGetUserMedia:dF,shimMediaStream:dG,shimOnTrack:dH,shimPeerConnection:dM,shimSenderReceiverGetStats:dJ});function dP(a,b){let c=a&&a.navigator,d=a&&a.MediaStreamTrack;if(c.getUserMedia=function(a,b,d){dC("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),c.mediaDevices.getUserMedia(a).then(b,d)},!(b.version>55&&"autoGainControl"in c.mediaDevices.getSupportedConstraints())){let a=function(a,b,c){b in a&&!(c in a)&&(a[c]=a[b],delete a[b])},b=c.mediaDevices.getUserMedia.bind(c.mediaDevices);if(c.mediaDevices.getUserMedia=function(c){return"object"==typeof c&&"object"==typeof c.audio&&(a((c=JSON.parse(JSON.stringify(c))).audio,"autoGainControl","mozAutoGainControl"),a(c.audio,"noiseSuppression","mozNoiseSuppression")),b(c)},d&&d.prototype.getSettings){let b=d.prototype.getSettings;d.prototype.getSettings=function(){let c=b.apply(this,arguments);return a(c,"mozAutoGainControl","autoGainControl"),a(c,"mozNoiseSuppression","noiseSuppression"),c}}if(d&&d.prototype.applyConstraints){let b=d.prototype.applyConstraints;d.prototype.applyConstraints=function(c){return"audio"===this.kind&&"object"==typeof c&&(a(c=JSON.parse(JSON.stringify(c)),"autoGainControl","mozAutoGainControl"),a(c,"noiseSuppression","mozNoiseSuppression")),b.apply(this,[c])}}}}function dQ(a){"object"==typeof a&&a.RTCTrackEvent&&"receiver"in a.RTCTrackEvent.prototype&&!("transceiver"in a.RTCTrackEvent.prototype)&&Object.defineProperty(a.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function dR(a,b){if("object"!=typeof a||!(a.RTCPeerConnection||a.mozRTCPeerConnection))return;!a.RTCPeerConnection&&a.mozRTCPeerConnection&&(a.RTCPeerConnection=a.mozRTCPeerConnection),b.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(b){let c=a.RTCPeerConnection.prototype[b];a.RTCPeerConnection.prototype[b]=({[b](){return arguments[0]=new("addIceCandidate"===b?a.RTCIceCandidate:a.RTCSessionDescription)(arguments[0]),c.apply(this,arguments)}})[b]});let c={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},d=a.RTCPeerConnection.prototype.getStats;a.RTCPeerConnection.prototype.getStats=function(){let[a,e,f]=arguments;return d.apply(this,[a||null]).then(a=>{if(b.version<53&&!e)try{a.forEach(a=>{a.type=c[a.type]||a.type})}catch(b){if("TypeError"!==b.name)throw b;a.forEach((b,d)=>{a.set(d,Object.assign({},b,{type:c[b.type]||b.type}))})}return a}).then(e,f)}}function dS(a){if(!("object"==typeof a&&a.RTCPeerConnection&&a.RTCRtpSender)||a.RTCRtpSender&&"getStats"in a.RTCRtpSender.prototype)return;let b=a.RTCPeerConnection.prototype.getSenders;b&&(a.RTCPeerConnection.prototype.getSenders=function(){let a=b.apply(this,[]);return a.forEach(a=>a._pc=this),a});let c=a.RTCPeerConnection.prototype.addTrack;c&&(a.RTCPeerConnection.prototype.addTrack=function(){let a=c.apply(this,arguments);return a._pc=this,a}),a.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function dT(a){if(!("object"==typeof a&&a.RTCPeerConnection&&a.RTCRtpSender)||a.RTCRtpSender&&"getStats"in a.RTCRtpReceiver.prototype)return;let b=a.RTCPeerConnection.prototype.getReceivers;b&&(a.RTCPeerConnection.prototype.getReceivers=function(){let a=b.apply(this,[]);return a.forEach(a=>a._pc=this),a}),dy(a,"track",a=>(a.receiver._pc=a.srcElement,a)),a.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function dU(a){!a.RTCPeerConnection||"removeStream"in a.RTCPeerConnection.prototype||(a.RTCPeerConnection.prototype.removeStream=function(a){dC("removeStream","removeTrack"),this.getSenders().forEach(b=>{b.track&&a.getTracks().includes(b.track)&&this.removeTrack(b)})})}function dV(a){a.DataChannel&&!a.RTCDataChannel&&(a.RTCDataChannel=a.DataChannel)}function dW(a){if(!("object"==typeof a&&a.RTCPeerConnection))return;let b=a.RTCPeerConnection.prototype.addTransceiver;b&&(a.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let a=arguments[1]&&arguments[1].sendEncodings;void 0===a&&(a=[]);let c=(a=[...a]).length>0;c&&a.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw RangeError("max_framerate must be >= 0.0")});let d=b.apply(this,arguments);if(c){let{sender:b}=d,c=b.getParameters();"encodings"in c&&(1!==c.encodings.length||0!==Object.keys(c.encodings[0]).length)||(c.encodings=a,b.sendEncodings=a,this.setParametersPromises.push(b.setParameters(c).then(()=>{delete b.sendEncodings}).catch(()=>{delete b.sendEncodings})))}return d})}function dX(a){if(!("object"==typeof a&&a.RTCRtpSender))return;let b=a.RTCRtpSender.prototype.getParameters;b&&(a.RTCRtpSender.prototype.getParameters=function(){let a=b.apply(this,arguments);return"encodings"in a||(a.encodings=[].concat(this.sendEncodings||[{}])),a})}function dY(a){if(!("object"==typeof a&&a.RTCPeerConnection))return;let b=a.RTCPeerConnection.prototype.createOffer;a.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>b.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):b.apply(this,arguments)}}function dZ(a){if(!("object"==typeof a&&a.RTCPeerConnection))return;let b=a.RTCPeerConnection.prototype.createAnswer;a.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>b.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):b.apply(this,arguments)}}var d$=Object.freeze({__proto__:null,shimAddTransceiver:dW,shimCreateAnswer:dZ,shimCreateOffer:dY,shimGetDisplayMedia:function(a,b){a.navigator.mediaDevices&&"getDisplayMedia"in a.navigator.mediaDevices||a.navigator.mediaDevices&&(a.navigator.mediaDevices.getDisplayMedia=function(c){if(!(c&&c.video)){let a=new DOMException("getDisplayMedia without video constraints is undefined");return a.name="NotFoundError",a.code=8,Promise.reject(a)}return!0===c.video?c.video={mediaSource:b}:c.video.mediaSource=b,a.navigator.mediaDevices.getUserMedia(c)})},shimGetParameters:dX,shimGetUserMedia:dP,shimOnTrack:dQ,shimPeerConnection:dR,shimRTCDataChannel:dV,shimReceiverGetStats:dT,shimRemoveStream:dU,shimSenderGetStats:dS});function d_(a){if("object"==typeof a&&a.RTCPeerConnection){if("getLocalStreams"in a.RTCPeerConnection.prototype||(a.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in a.RTCPeerConnection.prototype)){let b=a.RTCPeerConnection.prototype.addTrack;a.RTCPeerConnection.prototype.addStream=function(a){this._localStreams||(this._localStreams=[]),this._localStreams.includes(a)||this._localStreams.push(a),a.getAudioTracks().forEach(c=>b.call(this,c,a)),a.getVideoTracks().forEach(c=>b.call(this,c,a))},a.RTCPeerConnection.prototype.addTrack=function(a){for(var c=arguments.length,d=Array(c>1?c-1:0),e=1;e<c;e++)d[e-1]=arguments[e];return d&&d.forEach(a=>{this._localStreams?this._localStreams.includes(a)||this._localStreams.push(a):this._localStreams=[a]}),b.apply(this,arguments)}}"removeStream"in a.RTCPeerConnection.prototype||(a.RTCPeerConnection.prototype.removeStream=function(a){this._localStreams||(this._localStreams=[]);let b=this._localStreams.indexOf(a);if(-1===b)return;this._localStreams.splice(b,1);let c=a.getTracks();this.getSenders().forEach(a=>{c.includes(a.track)&&this.removeTrack(a)})})}}function d0(a){if("object"==typeof a&&a.RTCPeerConnection&&("getRemoteStreams"in a.RTCPeerConnection.prototype||(a.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in a.RTCPeerConnection.prototype))){Object.defineProperty(a.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(a){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=a),this.addEventListener("track",this._onaddstreampoly=a=>{a.streams.forEach(a=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(a))return;this._remoteStreams.push(a);let b=new Event("addstream");b.stream=a,this.dispatchEvent(b)})})}});let b=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(){let a=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(b){b.streams.forEach(b=>{if(a._remoteStreams||(a._remoteStreams=[]),a._remoteStreams.indexOf(b)>=0)return;a._remoteStreams.push(b);let c=new Event("addstream");c.stream=b,a.dispatchEvent(c)})}),b.apply(a,arguments)}}}function d1(a){if("object"!=typeof a||!a.RTCPeerConnection)return;let b=a.RTCPeerConnection.prototype,c=b.createOffer,d=b.createAnswer,e=b.setLocalDescription,f=b.setRemoteDescription,g=b.addIceCandidate;b.createOffer=function(a,b){let d=arguments.length>=2?arguments[2]:arguments[0],e=c.apply(this,[d]);return b?(e.then(a,b),Promise.resolve()):e},b.createAnswer=function(a,b){let c=arguments.length>=2?arguments[2]:arguments[0],e=d.apply(this,[c]);return b?(e.then(a,b),Promise.resolve()):e};let h=function(a,b,c){let d=e.apply(this,[a]);return c?(d.then(b,c),Promise.resolve()):d};b.setLocalDescription=h,b.setRemoteDescription=h=function(a,b,c){let d=f.apply(this,[a]);return c?(d.then(b,c),Promise.resolve()):d},b.addIceCandidate=function(a,b,c){let d=g.apply(this,[a]);return c?(d.then(b,c),Promise.resolve()):d}}function d2(a){let b=a&&a.navigator;if(b.mediaDevices&&b.mediaDevices.getUserMedia){let a=b.mediaDevices,c=a.getUserMedia.bind(a);b.mediaDevices.getUserMedia=a=>c(d3(a))}!b.getUserMedia&&b.mediaDevices&&b.mediaDevices.getUserMedia&&(b.getUserMedia=(function(a,c,d){b.mediaDevices.getUserMedia(a).then(c,d)}).bind(b))}function d3(a){return a&&void 0!==a.video?Object.assign({},a,{video:function a(b){return dD(b)?Object.keys(b).reduce(function(c,d){let e=dD(b[d]),f=e?a(b[d]):b[d],g=e&&!Object.keys(f).length;return void 0===f||g?c:Object.assign(c,{[d]:f})},{}):b}(a.video)}):a}function d4(a){if(!a.RTCPeerConnection)return;let b=a.RTCPeerConnection;a.RTCPeerConnection=function(a,c){if(a&&a.iceServers){let b=[];for(let c=0;c<a.iceServers.length;c++){let d=a.iceServers[c];void 0===d.urls&&d.url?(dC("RTCIceServer.url","RTCIceServer.urls"),(d=JSON.parse(JSON.stringify(d))).urls=d.url,delete d.url,b.push(d)):b.push(a.iceServers[c])}a.iceServers=b}return new b(a,c)},a.RTCPeerConnection.prototype=b.prototype,"generateCertificate"in b&&Object.defineProperty(a.RTCPeerConnection,"generateCertificate",{get:()=>b.generateCertificate})}function d5(a){"object"==typeof a&&a.RTCTrackEvent&&"receiver"in a.RTCTrackEvent.prototype&&!("transceiver"in a.RTCTrackEvent.prototype)&&Object.defineProperty(a.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function d6(a){let b=a.RTCPeerConnection.prototype.createOffer;a.RTCPeerConnection.prototype.createOffer=function(a){if(a){void 0!==a.offerToReceiveAudio&&(a.offerToReceiveAudio=!!a.offerToReceiveAudio);let b=this.getTransceivers().find(a=>"audio"===a.receiver.track.kind);!1===a.offerToReceiveAudio&&b?"sendrecv"===b.direction?b.setDirection?b.setDirection("sendonly"):b.direction="sendonly":"recvonly"===b.direction&&(b.setDirection?b.setDirection("inactive"):b.direction="inactive"):!0!==a.offerToReceiveAudio||b||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==a.offerToReceiveVideo&&(a.offerToReceiveVideo=!!a.offerToReceiveVideo);let c=this.getTransceivers().find(a=>"video"===a.receiver.track.kind);!1===a.offerToReceiveVideo&&c?"sendrecv"===c.direction?c.setDirection?c.setDirection("sendonly"):c.direction="sendonly":"recvonly"===c.direction&&(c.setDirection?c.setDirection("inactive"):c.direction="inactive"):!0!==a.offerToReceiveVideo||c||this.addTransceiver("video",{direction:"recvonly"})}return b.apply(this,arguments)}}function d7(a){"object"!=typeof a||a.AudioContext||(a.AudioContext=a.webkitAudioContext)}var d8=Object.freeze({__proto__:null,shimAudioContext:d7,shimCallbacksAPI:d1,shimConstraints:d3,shimCreateOfferLegacy:d6,shimGetUserMedia:d2,shimLocalStreamsAPI:d_,shimRTCIceServerUrls:d4,shimRemoteStreamsAPI:d0,shimTrackEventTransceiver:d5}),d9={exports:{}},ea=function(){if(o)return d9.exports;o=1;let a={};return a.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},a.localCName=a.generateIdentifier(),a.splitLines=function(a){return a.trim().split("\n").map(a=>a.trim())},a.splitSections=function(a){return a.split("\nm=").map((a,b)=>(b>0?"m="+a:a).trim()+"\r\n")},a.getDescription=function(b){let c=a.splitSections(b);return c&&c[0]},a.getMediaSections=function(b){let c=a.splitSections(b);return c.shift(),c},a.matchPrefix=function(b,c){return a.splitLines(b).filter(a=>0===a.indexOf(c))},a.parseCandidate=function(a){let b,c={foundation:(b=0===a.indexOf("a=candidate:")?a.substring(12).split(" "):a.substring(10).split(" "))[0],component:{1:"rtp",2:"rtcp"}[b[1]]||b[1],protocol:b[2].toLowerCase(),priority:parseInt(b[3],10),ip:b[4],address:b[4],port:parseInt(b[5],10),type:b[7]};for(let a=8;a<b.length;a+=2)switch(b[a]){case"raddr":c.relatedAddress=b[a+1];break;case"rport":c.relatedPort=parseInt(b[a+1],10);break;case"tcptype":c.tcpType=b[a+1];break;case"ufrag":c.ufrag=b[a+1],c.usernameFragment=b[a+1];break;default:void 0===c[b[a]]&&(c[b[a]]=b[a+1])}return c},a.writeCandidate=function(a){let b=[];b.push(a.foundation);let c=a.component;"rtp"===c?b.push(1):"rtcp"===c?b.push(2):b.push(c),b.push(a.protocol.toUpperCase()),b.push(a.priority),b.push(a.address||a.ip),b.push(a.port);let d=a.type;return b.push("typ"),b.push(d),"host"!==d&&a.relatedAddress&&a.relatedPort&&(b.push("raddr"),b.push(a.relatedAddress),b.push("rport"),b.push(a.relatedPort)),a.tcpType&&"tcp"===a.protocol.toLowerCase()&&(b.push("tcptype"),b.push(a.tcpType)),(a.usernameFragment||a.ufrag)&&(b.push("ufrag"),b.push(a.usernameFragment||a.ufrag)),"candidate:"+b.join(" ")},a.parseIceOptions=function(a){return a.substring(14).split(" ")},a.parseRtpMap=function(a){let b=a.substring(9).split(" "),c={payloadType:parseInt(b.shift(),10)};return c.name=(b=b[0].split("/"))[0],c.clockRate=parseInt(b[1],10),c.channels=3===b.length?parseInt(b[2],10):1,c.numChannels=c.channels,c},a.writeRtpMap=function(a){let b=a.payloadType;void 0!==a.preferredPayloadType&&(b=a.preferredPayloadType);let c=a.channels||a.numChannels||1;return"a=rtpmap:"+b+" "+a.name+"/"+a.clockRate+(1!==c?"/"+c:"")+"\r\n"},a.parseExtmap=function(a){let b=a.substring(9).split(" ");return{id:parseInt(b[0],10),direction:b[0].indexOf("/")>0?b[0].split("/")[1]:"sendrecv",uri:b[1],attributes:b.slice(2).join(" ")}},a.writeExtmap=function(a){return"a=extmap:"+(a.id||a.preferredId)+(a.direction&&"sendrecv"!==a.direction?"/"+a.direction:"")+" "+a.uri+(a.attributes?" "+a.attributes:"")+"\r\n"},a.parseFmtp=function(a){let b,c={},d=a.substring(a.indexOf(" ")+1).split(";");for(let a=0;a<d.length;a++)c[(b=d[a].trim().split("="))[0].trim()]=b[1];return c},a.writeFmtp=function(a){let b="",c=a.payloadType;if(void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType),a.parameters&&Object.keys(a.parameters).length){let d=[];Object.keys(a.parameters).forEach(b=>{void 0!==a.parameters[b]?d.push(b+"="+a.parameters[b]):d.push(b)}),b+="a=fmtp:"+c+" "+d.join(";")+"\r\n"}return b},a.parseRtcpFb=function(a){let b=a.substring(a.indexOf(" ")+1).split(" ");return{type:b.shift(),parameter:b.join(" ")}},a.writeRtcpFb=function(a){let b="",c=a.payloadType;return void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType),a.rtcpFeedback&&a.rtcpFeedback.length&&a.rtcpFeedback.forEach(a=>{b+="a=rtcp-fb:"+c+" "+a.type+(a.parameter&&a.parameter.length?" "+a.parameter:"")+"\r\n"}),b},a.parseSsrcMedia=function(a){let b=a.indexOf(" "),c={ssrc:parseInt(a.substring(7,b),10)},d=a.indexOf(":",b);return d>-1?(c.attribute=a.substring(b+1,d),c.value=a.substring(d+1)):c.attribute=a.substring(b+1),c},a.parseSsrcGroup=function(a){let b=a.substring(13).split(" ");return{semantics:b.shift(),ssrcs:b.map(a=>parseInt(a,10))}},a.getMid=function(b){let c=a.matchPrefix(b,"a=mid:")[0];if(c)return c.substring(6)},a.parseFingerprint=function(a){let b=a.substring(14).split(" ");return{algorithm:b[0].toLowerCase(),value:b[1].toUpperCase()}},a.getDtlsParameters=function(b,c){return{role:"auto",fingerprints:a.matchPrefix(b+c,"a=fingerprint:").map(a.parseFingerprint)}},a.writeDtlsParameters=function(a,b){let c="a=setup:"+b+"\r\n";return a.fingerprints.forEach(a=>{c+="a=fingerprint:"+a.algorithm+" "+a.value+"\r\n"}),c},a.parseCryptoLine=function(a){let b=a.substring(9).split(" ");return{tag:parseInt(b[0],10),cryptoSuite:b[1],keyParams:b[2],sessionParams:b.slice(3)}},a.writeCryptoLine=function(b){return"a=crypto:"+b.tag+" "+b.cryptoSuite+" "+("object"==typeof b.keyParams?a.writeCryptoKeyParams(b.keyParams):b.keyParams)+(b.sessionParams?" "+b.sessionParams.join(" "):"")+"\r\n"},a.parseCryptoKeyParams=function(a){if(0!==a.indexOf("inline:"))return null;let b=a.substring(7).split("|");return{keyMethod:"inline",keySalt:b[0],lifeTime:b[1],mkiValue:b[2]?b[2].split(":")[0]:void 0,mkiLength:b[2]?b[2].split(":")[1]:void 0}},a.writeCryptoKeyParams=function(a){return a.keyMethod+":"+a.keySalt+(a.lifeTime?"|"+a.lifeTime:"")+(a.mkiValue&&a.mkiLength?"|"+a.mkiValue+":"+a.mkiLength:"")},a.getCryptoParameters=function(b,c){return a.matchPrefix(b+c,"a=crypto:").map(a.parseCryptoLine)},a.getIceParameters=function(b,c){let d=a.matchPrefix(b+c,"a=ice-ufrag:")[0],e=a.matchPrefix(b+c,"a=ice-pwd:")[0];return d&&e?{usernameFragment:d.substring(12),password:e.substring(10)}:null},a.writeIceParameters=function(a){let b="a=ice-ufrag:"+a.usernameFragment+"\r\na=ice-pwd:"+a.password+"\r\n";return a.iceLite&&(b+="a=ice-lite\r\n"),b},a.parseRtpParameters=function(b){let c={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},d=a.splitLines(b)[0].split(" ");c.profile=d[2];for(let e=3;e<d.length;e++){let f=d[e],g=a.matchPrefix(b,"a=rtpmap:"+f+" ")[0];if(g){let d=a.parseRtpMap(g),e=a.matchPrefix(b,"a=fmtp:"+f+" ");switch(d.parameters=e.length?a.parseFmtp(e[0]):{},d.rtcpFeedback=a.matchPrefix(b,"a=rtcp-fb:"+f+" ").map(a.parseRtcpFb),c.codecs.push(d),d.name.toUpperCase()){case"RED":case"ULPFEC":c.fecMechanisms.push(d.name.toUpperCase())}}}a.matchPrefix(b,"a=extmap:").forEach(b=>{c.headerExtensions.push(a.parseExtmap(b))});let e=a.matchPrefix(b,"a=rtcp-fb:* ").map(a.parseRtcpFb);return c.codecs.forEach(a=>{e.forEach(b=>{a.rtcpFeedback.find(a=>a.type===b.type&&a.parameter===b.parameter)||a.rtcpFeedback.push(b)})}),c},a.writeRtpDescription=function(b,c){let d="";d+="m="+b+" ",d+=c.codecs.length>0?"9":"0",d+=" "+(c.profile||"UDP/TLS/RTP/SAVPF")+" ",d+=c.codecs.map(a=>void 0!==a.preferredPayloadType?a.preferredPayloadType:a.payloadType).join(" ")+"\r\n",d+="c=IN IP4 0.0.0.0\r\n",d+="a=rtcp:9 IN IP4 0.0.0.0\r\n",c.codecs.forEach(b=>{d+=a.writeRtpMap(b),d+=a.writeFmtp(b),d+=a.writeRtcpFb(b)});let e=0;return c.codecs.forEach(a=>{a.maxptime>e&&(e=a.maxptime)}),e>0&&(d+="a=maxptime:"+e+"\r\n"),c.headerExtensions&&c.headerExtensions.forEach(b=>{d+=a.writeExtmap(b)}),d},a.parseRtpEncodingParameters=function(b){let c,d=[],e=a.parseRtpParameters(b),f=-1!==e.fecMechanisms.indexOf("RED"),g=-1!==e.fecMechanisms.indexOf("ULPFEC"),h=a.matchPrefix(b,"a=ssrc:").map(b=>a.parseSsrcMedia(b)).filter(a=>"cname"===a.attribute),i=h.length>0&&h[0].ssrc,j=a.matchPrefix(b,"a=ssrc-group:FID").map(a=>a.substring(17).split(" ").map(a=>parseInt(a,10)));j.length>0&&j[0].length>1&&j[0][0]===i&&(c=j[0][1]),e.codecs.forEach(a=>{if("RTX"===a.name.toUpperCase()&&a.parameters.apt){let b={ssrc:i,codecPayloadType:parseInt(a.parameters.apt,10)};i&&c&&(b.rtx={ssrc:c}),d.push(b),f&&((b=JSON.parse(JSON.stringify(b))).fec={ssrc:i,mechanism:g?"red+ulpfec":"red"},d.push(b))}}),0===d.length&&i&&d.push({ssrc:i});let k=a.matchPrefix(b,"b=");return k.length&&(k=0===k[0].indexOf("b=TIAS:")?parseInt(k[0].substring(7),10):0===k[0].indexOf("b=AS:")?1e3*parseInt(k[0].substring(5),10)*.95-16e3:void 0,d.forEach(a=>{a.maxBitrate=k})),d},a.parseRtcpParameters=function(b){let c={},d=a.matchPrefix(b,"a=ssrc:").map(b=>a.parseSsrcMedia(b)).filter(a=>"cname"===a.attribute)[0];d&&(c.cname=d.value,c.ssrc=d.ssrc);let e=a.matchPrefix(b,"a=rtcp-rsize");return c.reducedSize=e.length>0,c.compound=0===e.length,c.mux=a.matchPrefix(b,"a=rtcp-mux").length>0,c},a.writeRtcpParameters=function(a){let b="";return a.reducedSize&&(b+="a=rtcp-rsize\r\n"),a.mux&&(b+="a=rtcp-mux\r\n"),void 0!==a.ssrc&&a.cname&&(b+="a=ssrc:"+a.ssrc+" cname:"+a.cname+"\r\n"),b},a.parseMsid=function(b){let c,d=a.matchPrefix(b,"a=msid:");if(1===d.length)return{stream:(c=d[0].substring(7).split(" "))[0],track:c[1]};let e=a.matchPrefix(b,"a=ssrc:").map(b=>a.parseSsrcMedia(b)).filter(a=>"msid"===a.attribute);if(e.length>0)return{stream:(c=e[0].value.split(" "))[0],track:c[1]}},a.parseSctpDescription=function(b){let c,d=a.parseMLine(b),e=a.matchPrefix(b,"a=max-message-size:");e.length>0&&(c=parseInt(e[0].substring(19),10)),isNaN(c)&&(c=65536);let f=a.matchPrefix(b,"a=sctp-port:");if(f.length>0)return{port:parseInt(f[0].substring(12),10),protocol:d.fmt,maxMessageSize:c};let g=a.matchPrefix(b,"a=sctpmap:");if(g.length>0){let a=g[0].substring(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:c}}},a.writeSctpDescription=function(a,b){let c=[];return c="DTLS/SCTP"!==a.protocol?["m="+a.kind+" 9 "+a.protocol+" "+b.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+b.port+"\r\n"]:["m="+a.kind+" 9 "+a.protocol+" "+b.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+b.port+" "+b.protocol+" 65535\r\n"],void 0!==b.maxMessageSize&&c.push("a=max-message-size:"+b.maxMessageSize+"\r\n"),c.join("")},a.generateSessionId=function(){return Math.random().toString().substr(2,22)},a.writeSessionBoilerplate=function(b,c,d){return"v=0\r\no="+(d||"thisisadapterortc")+" "+(b||a.generateSessionId())+" "+(void 0!==c?c:2)+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},a.getDirection=function(b,c){let d=a.splitLines(b);for(let a=0;a<d.length;a++)switch(d[a]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return d[a].substring(2)}return c?a.getDirection(c):"sendrecv"},a.getKind=function(b){return a.splitLines(b)[0].split(" ")[0].substring(2)},a.isRejected=function(a){return"0"===a.split(" ",2)[1]},a.parseMLine=function(b){let c=a.splitLines(b)[0].substring(2).split(" ");return{kind:c[0],port:parseInt(c[1],10),protocol:c[2],fmt:c.slice(3).join(" ")}},a.parseOLine=function(b){let c=a.matchPrefix(b,"o=")[0].substring(2).split(" ");return{username:c[0],sessionId:c[1],sessionVersion:parseInt(c[2],10),netType:c[3],addressType:c[4],address:c[5]}},a.isValidSDP=function(b){if("string"!=typeof b||0===b.length)return!1;let c=a.splitLines(b);for(let a=0;a<c.length;a++)if(c[a].length<2||"="!==c[a].charAt(1))return!1;return!0},d9.exports=a,d9.exports}(),eb=function(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}(ea),ec=function(a,b){return b.forEach(function(b){b&&"string"!=typeof b&&!Array.isArray(b)&&Object.keys(b).forEach(function(c){if("default"!==c&&!(c in a)){var d=Object.getOwnPropertyDescriptor(b,c);Object.defineProperty(a,c,d.get?d:{enumerable:!0,get:function(){return b[c]}})}})}),Object.freeze(a)}({__proto__:null,default:eb},[ea]);function ed(a){if(!a.RTCIceCandidate||a.RTCIceCandidate&&"foundation"in a.RTCIceCandidate.prototype)return;let b=a.RTCIceCandidate;a.RTCIceCandidate=function(a){if("object"==typeof a&&a.candidate&&0===a.candidate.indexOf("a=")&&((a=JSON.parse(JSON.stringify(a))).candidate=a.candidate.substring(2)),a.candidate&&a.candidate.length){let c=new b(a),d=eb.parseCandidate(a.candidate);for(let a in d)a in c||Object.defineProperty(c,a,{value:d[a]});return c.toJSON=function(){return{candidate:c.candidate,sdpMid:c.sdpMid,sdpMLineIndex:c.sdpMLineIndex,usernameFragment:c.usernameFragment}},c}return new b(a)},a.RTCIceCandidate.prototype=b.prototype,dy(a,"icecandidate",b=>(b.candidate&&Object.defineProperty(b,"candidate",{value:new a.RTCIceCandidate(b.candidate),writable:"false"}),b))}function ee(a){!a.RTCIceCandidate||a.RTCIceCandidate&&"relayProtocol"in a.RTCIceCandidate.prototype||dy(a,"icecandidate",a=>{if(a.candidate){let b=eb.parseCandidate(a.candidate.candidate);"relay"===b.type&&(a.candidate.relayProtocol=({0:"tls",1:"tcp",2:"udp"})[b.priority>>24])}return a})}function ef(a,b){if(!a.RTCPeerConnection)return;"sctp"in a.RTCPeerConnection.prototype||Object.defineProperty(a.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});let c=function(a){if(!a||!a.sdp)return!1;let b=eb.splitSections(a.sdp);return b.shift(),b.some(a=>{let b=eb.parseMLine(a);return b&&"application"===b.kind&&-1!==b.protocol.indexOf("SCTP")})},d=function(a){let b=a.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===b||b.length<2)return -1;let c=parseInt(b[1],10);return c!=c?-1:c},e=function(a){let c=65536;return"firefox"===b.browser&&(c=b.version<57?-1===a?16384:0x7ffffff5:b.version<60?57===b.version?65535:65536:0x7ffffff5),c},f=function(a,c){let d=65536;"firefox"===b.browser&&57===b.version&&(d=65535);let e=eb.matchPrefix(a.sdp,"a=max-message-size:");return e.length>0?d=parseInt(e[0].substring(19),10):"firefox"===b.browser&&-1!==c&&(d=0x7ffffff5),d},g=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===b.browser&&b.version>=76){let{sdpSemantics:a}=this.getConfiguration();"plan-b"===a&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(c(arguments[0])){let a,b=d(arguments[0]),c=e(b),g=f(arguments[0],b);a=0===c&&0===g?1/0:0===c||0===g?Math.max(c,g):Math.min(c,g);let h={};Object.defineProperty(h,"maxMessageSize",{get:()=>a}),this._sctp=h}return g.apply(this,arguments)}}function eg(a){if(!(a.RTCPeerConnection&&"createDataChannel"in a.RTCPeerConnection.prototype))return;function b(a,b){let c=a.send;a.send=function(){let d=arguments[0],e=d.length||d.size||d.byteLength;if("open"===a.readyState&&b.sctp&&e>b.sctp.maxMessageSize)throw TypeError("Message too large (can send a maximum of "+b.sctp.maxMessageSize+" bytes)");return c.apply(a,arguments)}}let c=a.RTCPeerConnection.prototype.createDataChannel;a.RTCPeerConnection.prototype.createDataChannel=function(){let a=c.apply(this,arguments);return b(a,this),a},dy(a,"datachannel",a=>(b(a.channel,a.target),a))}function eh(a){if(!a.RTCPeerConnection||"connectionState"in a.RTCPeerConnection.prototype)return;let b=a.RTCPeerConnection.prototype;Object.defineProperty(b,"connectionState",{get(){return({completed:"connected",checking:"connecting"})[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(b,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(a){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),a&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=a)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(a=>{let c=b[a];b[a]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=a=>{let b=a.target;if(b._lastConnectionState!==b.connectionState){b._lastConnectionState=b.connectionState;let c=new Event("connectionstatechange",a);b.dispatchEvent(c)}return a},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),c.apply(this,arguments)}})}function ei(a,b){if(!a.RTCPeerConnection||"chrome"===b.browser&&b.version>=71||"safari"===b.browser&&b._safariVersion>=13.1)return;let c=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(b){if(b&&b.sdp&&-1!==b.sdp.indexOf("\na=extmap-allow-mixed")){let c=b.sdp.split("\n").filter(a=>"a=extmap-allow-mixed"!==a.trim()).join("\n");a.RTCSessionDescription&&b instanceof a.RTCSessionDescription?arguments[0]=new a.RTCSessionDescription({type:b.type,sdp:c}):b.sdp=c}return c.apply(this,arguments)}}function ej(a,b){if(!(a.RTCPeerConnection&&a.RTCPeerConnection.prototype))return;let c=a.RTCPeerConnection.prototype.addIceCandidate;c&&0!==c.length&&(a.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===b.browser&&b.version<78||"firefox"===b.browser&&b.version<68||"safari"===b.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():c.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function ek(a,b){if(!(a.RTCPeerConnection&&a.RTCPeerConnection.prototype))return;let c=a.RTCPeerConnection.prototype.setLocalDescription;c&&0!==c.length&&(a.RTCPeerConnection.prototype.setLocalDescription=function(){let a=arguments[0]||{};if("object"!=typeof a||a.type&&a.sdp)return c.apply(this,arguments);if(!(a={type:a.type,sdp:a.sdp}).type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":a.type="offer";break;default:a.type="answer"}return a.sdp||"offer"!==a.type&&"answer"!==a.type?c.apply(this,[a]):("offer"===a.type?this.createOffer:this.createAnswer).apply(this).then(a=>c.apply(this,[a]))})}var el=Object.freeze({__proto__:null,removeExtmapAllowMixed:ei,shimAddIceCandidateNullOrEmpty:ej,shimConnectionState:eh,shimMaxMessageSize:ef,shimParameterlessSetLocalDescription:ek,shimRTCIceCandidate:ed,shimRTCIceCandidateRelayProtocol:ee,shimSendThrowTypeError:eg});!function(){let{window:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},c=function(a){let b={browser:null,version:null};if(void 0===a||!a.navigator||!a.navigator.userAgent)return b.browser="Not a browser.",b;let{navigator:c}=a;if(c.userAgentData&&c.userAgentData.brands){let a=c.userAgentData.brands.find(a=>"Chromium"===a.brand);if(a)return{browser:"chrome",version:parseInt(a.version,10)}}return c.mozGetUserMedia?(b.browser="firefox",b.version=parseInt(dx(c.userAgent,/Firefox\/(\d+)\./,1))):c.webkitGetUserMedia||!1===a.isSecureContext&&a.webkitRTCPeerConnection?(b.browser="chrome",b.version=parseInt(dx(c.userAgent,/Chrom(e|ium)\/(\d+)\./,2))):a.RTCPeerConnection&&c.userAgent.match(/AppleWebKit\/(\d+)\./)?(b.browser="safari",b.version=parseInt(dx(c.userAgent,/AppleWebKit\/(\d+)\./,1)),b.supportsUnifiedPlan=a.RTCRtpTransceiver&&"currentDirection"in a.RTCRtpTransceiver.prototype,b._safariVersion=dx(c.userAgent,/Version\/(\d+(\.?\d+))/,1)):b.browser="Not a supported browser.",b}(a),d={browserDetails:c,commonShim:el,extractVersion:dx,disableLog:dz,disableWarnings:dA,sdp:ec};switch(c.browser){case"chrome":if(!dO||!dM||!b.shimChrome){dB("Chrome shim is not included in this adapter release.");break}if(null===c.version){dB("Chrome shim can not determine version, not shimming.");break}dB("adapter.js shimming chrome."),d.browserShim=dO,ej(a,c),ek(a),dF(a,c),dG(a),dM(a,c),dH(a),dL(a,c),dI(a),dJ(a),dN(a,c),ed(a),ee(a),eh(a),ef(a,c),eg(a),ei(a,c);break;case"firefox":if(!d$||!dR||!b.shimFirefox){dB("Firefox shim is not included in this adapter release.");break}dB("adapter.js shimming firefox."),d.browserShim=d$,ej(a,c),ek(a),dP(a,c),dR(a,c),dQ(a),dU(a),dS(a),dT(a),dV(a),dW(a),dX(a),dY(a),dZ(a),ed(a),eh(a),ef(a,c),eg(a);break;case"safari":if(!d8||!b.shimSafari){dB("Safari shim is not included in this adapter release.");break}dB("adapter.js shimming safari."),d.browserShim=d8,ej(a,c),ek(a),d4(a),d6(a),d1(a),d_(a),d0(a),d5(a),d2(a),d7(a),ed(a),ee(a),ef(a,c),eg(a),ei(a,c);break;default:dB("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window});class em extends Promise{constructor(a){super(a)}catch(a){return super.catch(a)}static reject(a){return super.reject(a)}static all(a){return super.all(a)}static race(a){return super.race(a)}}let en=/version\/(\d+(\.?_?\d+)+)/i;function eo(a){let b=!(arguments.length>1)||void 0===arguments[1]||arguments[1];if(void 0===a&&"undefined"==typeof navigator)return;let c=(null!=a?a:navigator.userAgent).toLowerCase();if(void 0===d||b){let a=ep.find(a=>{let{test:b}=a;return b.test(c)});d=null==a?void 0:a.describe(c)}return d}let ep=[{test:/firefox|iceweasel|fxios/i,describe:a=>({name:"Firefox",version:eq(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,a),os:a.toLowerCase().includes("fxios")?"iOS":void 0,osVersion:er(a)})},{test:/chrom|crios|crmo/i,describe:a=>({name:"Chrome",version:eq(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,a),os:a.toLowerCase().includes("crios")?"iOS":void 0,osVersion:er(a)})},{test:/safari|applewebkit/i,describe:a=>({name:"Safari",version:eq(en,a),os:a.includes("mobile/")?"iOS":"macOS",osVersion:er(a)})}];function eq(a,b){let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,d=b.match(a);return d&&d.length>=c&&d[c]||""}function er(a){return a.includes("mac os")?eq(/\(.+?(\d+_\d+(:?_\d+)?)/,a,1).replace(/_/g,"."):void 0}class es extends Error{constructor(a,b){super(b||"an error has occured"),this.name="LiveKitError",this.code=a}}!function(a){a[a.NotAllowed=0]="NotAllowed",a[a.ServerUnreachable=1]="ServerUnreachable",a[a.InternalError=2]="InternalError",a[a.Cancelled=3]="Cancelled",a[a.LeaveRequest=4]="LeaveRequest",a[a.Timeout=5]="Timeout",a[a.WebSocket=6]="WebSocket",a[a.ServiceNotFound=7]="ServiceNotFound"}(p||(p={}));class et extends es{constructor(a,b,c,d){super(1,a),this.name="ConnectionError",this.status=c,this.reason=b,this.context=d,this.reasonName=p[b]}static notAllowed(a,b,c){return new et(a,p.NotAllowed,b,c)}static timeout(a){return new et(a,p.Timeout)}static leaveRequest(a,b){return new et(a,p.LeaveRequest,void 0,b)}static internal(a,b){return new et(a,p.InternalError,void 0,b)}static cancelled(a){return new et(a,p.Cancelled)}static serverUnreachable(a,b){return new et(a,p.ServerUnreachable,b)}static websocket(a,b,c){return new et(a,p.WebSocket,b,c)}static serviceNotFound(a,b){return new et(a,p.ServiceNotFound,void 0,b)}}class eu extends es{constructor(a){super(21,null!=a?a:"device is unsupported"),this.name="DeviceUnsupportedError"}}class ev extends es{constructor(a){super(20,null!=a?a:"track is invalid"),this.name="TrackInvalidError"}}class ew extends es{constructor(a){super(10,null!=a?a:"unsupported server"),this.name="UnsupportedServer"}}class ex extends es{constructor(a){super(12,null!=a?a:"unexpected connection state"),this.name="UnexpectedConnectionState"}}class ey extends es{constructor(a){super(13,null!=a?a:"unable to negotiate"),this.name="NegotiationError"}}class ez extends es{constructor(a,b){super(15,a),this.name="PublishTrackError",this.status=b}}class eA extends es{constructor(a,b){super(15,a),this.name="SignalRequestError",this.reason=b,this.reasonName="string"==typeof b?b:db[b]}}!function(a){a[a.AlreadyOpened=0]="AlreadyOpened",a[a.AbnormalEnd=1]="AbnormalEnd",a[a.DecodeFailed=2]="DecodeFailed",a[a.LengthExceeded=3]="LengthExceeded",a[a.Incomplete=4]="Incomplete",a[a.HandlerAlreadyRegistered=7]="HandlerAlreadyRegistered",a[a.EncryptionTypeMismatch=8]="EncryptionTypeMismatch"}(q||(q={}));class eB extends es{constructor(a,b){super(16,a),this.name="DataStreamError",this.reason=b,this.reasonName=q[b]}}class eC extends es{constructor(a){super(18,a),this.name="SignalReconnectError"}}!function(a){a.PermissionDenied="PermissionDenied",a.NotFound="NotFound",a.DeviceInUse="DeviceInUse",a.Other="Other"}(r||(r={})),function(a){a.getFailure=function(b){if(b&&"name"in b)return"NotFoundError"===b.name||"DevicesNotFoundError"===b.name?a.NotFound:"NotAllowedError"===b.name||"PermissionDeniedError"===b.name?a.PermissionDenied:"NotReadableError"===b.name||"TrackStartError"===b.name?a.DeviceInUse:a.Other}}(r||(r={}));class eD{}eD.setTimeout=function(){return setTimeout(...arguments)},eD.setInterval=function(){return setInterval(...arguments)},eD.clearTimeout=function(){return clearTimeout(...arguments)},eD.clearInterval=function(){return clearInterval(...arguments)},function(a){a.Connected="connected",a.Reconnecting="reconnecting",a.SignalReconnecting="signalReconnecting",a.Reconnected="reconnected",a.Disconnected="disconnected",a.ConnectionStateChanged="connectionStateChanged",a.Moved="moved",a.MediaDevicesChanged="mediaDevicesChanged",a.ParticipantConnected="participantConnected",a.ParticipantDisconnected="participantDisconnected",a.TrackPublished="trackPublished",a.TrackSubscribed="trackSubscribed",a.TrackSubscriptionFailed="trackSubscriptionFailed",a.TrackUnpublished="trackUnpublished",a.TrackUnsubscribed="trackUnsubscribed",a.TrackMuted="trackMuted",a.TrackUnmuted="trackUnmuted",a.LocalTrackPublished="localTrackPublished",a.LocalTrackUnpublished="localTrackUnpublished",a.LocalAudioSilenceDetected="localAudioSilenceDetected",a.ActiveSpeakersChanged="activeSpeakersChanged",a.ParticipantMetadataChanged="participantMetadataChanged",a.ParticipantNameChanged="participantNameChanged",a.ParticipantAttributesChanged="participantAttributesChanged",a.ParticipantActive="participantActive",a.RoomMetadataChanged="roomMetadataChanged",a.DataReceived="dataReceived",a.SipDTMFReceived="sipDTMFReceived",a.TranscriptionReceived="transcriptionReceived",a.ConnectionQualityChanged="connectionQualityChanged",a.TrackStreamStateChanged="trackStreamStateChanged",a.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",a.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",a.AudioPlaybackStatusChanged="audioPlaybackChanged",a.VideoPlaybackStatusChanged="videoPlaybackChanged",a.MediaDevicesError="mediaDevicesError",a.ParticipantPermissionsChanged="participantPermissionsChanged",a.SignalConnected="signalConnected",a.RecordingStatusChanged="recordingStatusChanged",a.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",a.EncryptionError="encryptionError",a.DCBufferStatusChanged="dcBufferStatusChanged",a.ActiveDeviceChanged="activeDeviceChanged",a.ChatMessage="chatMessage",a.LocalTrackSubscribed="localTrackSubscribed",a.MetricsReceived="metricsReceived"}(s||(s={})),function(a){a.TrackPublished="trackPublished",a.TrackSubscribed="trackSubscribed",a.TrackSubscriptionFailed="trackSubscriptionFailed",a.TrackUnpublished="trackUnpublished",a.TrackUnsubscribed="trackUnsubscribed",a.TrackMuted="trackMuted",a.TrackUnmuted="trackUnmuted",a.LocalTrackPublished="localTrackPublished",a.LocalTrackUnpublished="localTrackUnpublished",a.LocalTrackCpuConstrained="localTrackCpuConstrained",a.LocalSenderCreated="localSenderCreated",a.ParticipantMetadataChanged="participantMetadataChanged",a.ParticipantNameChanged="participantNameChanged",a.DataReceived="dataReceived",a.SipDTMFReceived="sipDTMFReceived",a.TranscriptionReceived="transcriptionReceived",a.IsSpeakingChanged="isSpeakingChanged",a.ConnectionQualityChanged="connectionQualityChanged",a.TrackStreamStateChanged="trackStreamStateChanged",a.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",a.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",a.TrackCpuConstrained="trackCpuConstrained",a.MediaDevicesError="mediaDevicesError",a.AudioStreamAcquired="audioStreamAcquired",a.ParticipantPermissionsChanged="participantPermissionsChanged",a.PCTrackAdded="pcTrackAdded",a.AttributesChanged="attributesChanged",a.LocalTrackSubscribed="localTrackSubscribed",a.ChatMessage="chatMessage",a.Active="active"}(t||(t={})),function(a){a.TransportsCreated="transportsCreated",a.Connected="connected",a.Disconnected="disconnected",a.Resuming="resuming",a.Resumed="resumed",a.Restarting="restarting",a.Restarted="restarted",a.SignalResumed="signalResumed",a.SignalRestarted="signalRestarted",a.Closing="closing",a.MediaTrackAdded="mediaTrackAdded",a.ActiveSpeakersUpdate="activeSpeakersUpdate",a.DataPacketReceived="dataPacketReceived",a.RTPVideoMapUpdate="rtpVideoMapUpdate",a.DCBufferStatusChanged="dcBufferStatusChanged",a.ParticipantUpdate="participantUpdate",a.RoomUpdate="roomUpdate",a.SpeakersChanged="speakersChanged",a.StreamStateChanged="streamStateChanged",a.ConnectionQualityUpdate="connectionQualityUpdate",a.SubscriptionError="subscriptionError",a.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",a.RemoteMute="remoteMute",a.SubscribedQualityUpdate="subscribedQualityUpdate",a.LocalTrackUnpublished="localTrackUnpublished",a.LocalTrackSubscribed="localTrackSubscribed",a.Offline="offline",a.SignalRequestResponse="signalRequestResponse",a.SignalConnected="signalConnected",a.RoomMoved="roomMoved"}(u||(u={})),function(a){a.Message="message",a.Muted="muted",a.Unmuted="unmuted",a.Restarted="restarted",a.Ended="ended",a.Subscribed="subscribed",a.Unsubscribed="unsubscribed",a.CpuConstrained="cpuConstrained",a.UpdateSettings="updateSettings",a.UpdateSubscription="updateSubscription",a.AudioPlaybackStarted="audioPlaybackStarted",a.AudioPlaybackFailed="audioPlaybackFailed",a.AudioSilenceDetected="audioSilenceDetected",a.VisibilityChanged="visibilityChanged",a.VideoDimensionsChanged="videoDimensionsChanged",a.VideoPlaybackStarted="videoPlaybackStarted",a.VideoPlaybackFailed="videoPlaybackFailed",a.ElementAttached="elementAttached",a.ElementDetached="elementDetached",a.UpstreamPaused="upstreamPaused",a.UpstreamResumed="upstreamResumed",a.SubscriptionPermissionChanged="subscriptionPermissionChanged",a.SubscriptionStatusChanged="subscriptionStatusChanged",a.SubscriptionFailed="subscriptionFailed",a.TrackProcessorUpdate="trackProcessorUpdate",a.AudioTrackFeatureUpdate="audioTrackFeatureUpdate",a.TranscriptionReceived="transcriptionReceived",a.TimeSyncUpdate="timeSyncUpdate",a.PreConnectBufferFlushed="preConnectBufferFlushed"}(v||(v={}));class eE{constructor(a,b,c,d,e){if("object"==typeof a)this.width=a.width,this.height=a.height,this.aspectRatio=a.aspectRatio,this.encoding={maxBitrate:a.maxBitrate,maxFramerate:a.maxFramerate,priority:a.priority};else if(void 0!==b&&void 0!==c)this.width=a,this.height=b,this.aspectRatio=a/b,this.encoding={maxBitrate:c,maxFramerate:d,priority:e};else throw TypeError("Unsupported options: provide at least width, height and maxBitrate")}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}}let eF=["vp8","h264"],eG=["vp8","h264","vp9","av1","h265"],eH=function(a){return!!eF.find(b=>b===a)};!function(a){a[a.PREFER_REGRESSION=0]="PREFER_REGRESSION",a[a.SIMULCAST=1]="SIMULCAST",a[a.REGRESSION=2]="REGRESSION"}(w||(w={})),function(a){a.telephone={maxBitrate:12e3},a.speech={maxBitrate:24e3},a.music={maxBitrate:48e3},a.musicStereo={maxBitrate:64e3},a.musicHighQuality={maxBitrate:96e3},a.musicHighQualityStereo={maxBitrate:128e3}}(x||(x={}));let eI={h90:new eE(160,90,9e4,20),h180:new eE(320,180,16e4,20),h216:new eE(384,216,18e4,20),h360:new eE(640,360,45e4,20),h540:new eE(960,540,8e5,25),h720:new eE(1280,720,17e5,30),h1080:new eE(1920,1080,3e6,30),h1440:new eE(2560,1440,5e6,30),h2160:new eE(3840,2160,8e6,30)},eJ={h120:new eE(160,120,7e4,20),h180:new eE(240,180,125e3,20),h240:new eE(320,240,14e4,20),h360:new eE(480,360,33e4,20),h480:new eE(640,480,5e5,20),h540:new eE(720,540,6e5,25),h720:new eE(960,720,13e5,30),h1080:new eE(1440,1080,23e5,30),h1440:new eE(1920,1440,38e5,30)},eK={h360fps3:new eE(640,360,2e5,3,"medium"),h360fps15:new eE(640,360,4e5,15,"medium"),h720fps5:new eE(1280,720,8e5,5,"medium"),h720fps15:new eE(1280,720,15e5,15,"medium"),h720fps30:new eE(1280,720,2e6,30,"medium"),h1080fps15:new eE(1920,1080,25e5,15,"medium"),h1080fps30:new eE(1920,1080,5e6,30,"medium"),original:new eE(0,0,7e6,30,"medium")};function eL(a,b,c){var d,e;let{optionsWithoutProcessor:f,audioProcessor:g,videoProcessor:h}=eT(null!=a?a:{}),i=null==b?void 0:b.processor,j=null==c?void 0:c.processor,k=null!=f?f:{};return!0===k.audio&&(k.audio={}),!0===k.video&&(k.video={}),k.audio&&(eM(k.audio,b),null!=(d=k.audio).deviceId||(d.deviceId={ideal:"default"}),(g||i)&&(k.audio.processor=null!=g?g:i)),k.video&&(eM(k.video,c),null!=(e=k.video).deviceId||(e.deviceId={ideal:"default"}),(h||j)&&(k.video.processor=null!=h?h:j)),k}function eM(a,b){return Object.keys(b).forEach(c=>{void 0===a[c]&&(a[c]=b[c])}),a}function eN(a){var b,c;let d={};if(a.video)if("object"==typeof a.video){let c={},e=a.video;Object.keys(e).forEach(a=>{"resolution"===a?eM(c,e.resolution):c[a]=e[a]}),d.video=c,null!=(b=d.video).deviceId||(b.deviceId={ideal:"default"})}else d.video=!!a.video&&{deviceId:{ideal:"default"}};else d.video=!1;return a.audio?"object"==typeof a.audio?(d.audio=a.audio,null!=(c=d.audio).deviceId||(c.deviceId={ideal:"default"})):d.audio={deviceId:{ideal:"default"}}:d.audio=!1,d}function eO(a){return dr(this,arguments,void 0,function(a){let b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return function*(){let c=eP();if(c){let d=c.createAnalyser();d.fftSize=2048;let e=new Uint8Array(d.frequencyBinCount);c.createMediaStreamSource(new MediaStream([a.mediaStreamTrack])).connect(d),yield e$(b),d.getByteTimeDomainData(e);let f=e.some(a=>128!==a&&0!==a);return c.close(),!f}return!1}()})}function eP(){var a;let b="undefined"!=typeof window&&(window.AudioContext||window.webkitAudioContext);if(b){let c=new b({latencyHint:"interactive"});if("suspended"===c.state&&"undefined"!=typeof window&&(null==(a=window.document)?void 0:a.body)){let a=()=>dr(this,void 0,void 0,function*(){var b;try{"suspended"===c.state&&(yield c.resume())}catch(a){console.warn("Error trying to auto-resume audio context",a)}finally{null==(b=window.document.body)||b.removeEventListener("click",a)}});c.addEventListener("statechange",()=>{var b;"closed"===c.state&&(null==(b=window.document.body)||b.removeEventListener("click",a))}),window.document.body.addEventListener("click",a)}return c}}function eQ(a){return a===eW.Source.Microphone?"audioinput":a===eW.Source.Camera?"videoinput":void 0}function eR(a){return a.split("/")[1].toLowerCase()}function eS(a){return"mediaStreamTrack"in a?{trackID:a.sid,source:a.source,muted:a.isMuted,enabled:a.mediaStreamTrack.enabled,kind:a.kind,streamID:a.mediaStreamID,streamTrackID:a.mediaStreamTrack.id}:{trackID:a.trackSid,enabled:a.isEnabled,muted:a.isMuted,trackInfo:Object.assign({mimeType:a.mimeType,name:a.trackName,encrypted:a.isEncrypted,kind:a.kind,source:a.source},a.track?eS(a.track):{})}}function eT(a){let b,c,d=Object.assign({},a);return"object"==typeof d.audio&&d.audio.processor&&(b=d.audio.processor,d.audio=Object.assign(Object.assign({},d.audio),{processor:void 0})),"object"==typeof d.video&&d.video.processor&&(c=d.video.processor,d.video=Object.assign(Object.assign({},d.video),{processor:void 0})),{audioProcessor:b,videoProcessor:c,optionsWithoutProcessor:void 0===d?d:"function"!=typeof structuredClone?JSON.parse(JSON.stringify(d)):"object"==typeof d&&null!==d?structuredClone(Object.assign({},d)):structuredClone(d)}}function eU(a,b){return a.width*a.height<b.width*b.height}let eV=[];!function(a){a[a.LOW=0]="LOW",a[a.MEDIUM=1]="MEDIUM",a[a.HIGH=2]="HIGH"}(y||(y={}));class eW extends du.EventEmitter{get streamState(){return this._streamState}setStreamState(a){this._streamState=a}constructor(a,b){var c;let d=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.attachedElements=[],this.isMuted=!1,this._streamState=eW.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.log=dl,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),"hidden"===document.visibilityState?this.backgroundTimeout=setTimeout(()=>this.handleAppVisibilityChanged(),5e3):this.handleAppVisibilityChanged()},this.log=dm(null!=(c=d.loggerName)?c:m.Track),this.loggerContextCb=d.loggerContextCb,this.setMaxListeners(100),this.kind=b,this._mediaStreamTrack=a,this._mediaStreamID=a.id,this.source=eW.Source.Unknown}get logContext(){var a;return Object.assign(Object.assign({},null==(a=this.loggerContextCb)?void 0:a.call(this)),eS(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(a){let b="audio";this.kind===eW.Kind.Video&&(b="video"),0===this.attachedElements.length&&this.kind===eW.Kind.Video&&this.addAppVisibilityListener(),!a&&("audio"===b&&(eV.forEach(b=>{null!==b.parentElement||a||(a=b)}),a&&eV.splice(eV.indexOf(a),1)),a||(a=document.createElement(b))),this.attachedElements.includes(a)||this.attachedElements.push(a),eX(this.mediaStreamTrack,a);let c=a.srcObject.getTracks(),d=c.some(a=>"audio"===a.kind);return a.play().then(()=>{this.emit(d?v.AudioPlaybackStarted:v.VideoPlaybackStarted)}).catch(b=>{"NotAllowedError"===b.name?this.emit(d?v.AudioPlaybackFailed:v.VideoPlaybackFailed,b):"AbortError"===b.name?dl.debug("".concat(d?"audio":"video"," playback aborted, likely due to new play request")):dl.warn("could not playback ".concat(d?"audio":"video"),b),d&&a&&c.some(a=>"video"===a.kind)&&"NotAllowedError"===b.name&&(a.muted=!0,a.play().catch(()=>{}))}),this.emit(v.ElementAttached,a),a}detach(a){try{if(a){eY(this.mediaStreamTrack,a);let b=this.attachedElements.indexOf(a);return b>=0&&(this.attachedElements.splice(b,1),this.recycleElement(a),this.emit(v.ElementDetached,a)),a}let b=[];return this.attachedElements.forEach(a=>{eY(this.mediaStreamTrack,a),b.push(a),this.recycleElement(a),this.emit(v.ElementDetached,a)}),this.attachedElements=[],b}finally{0===this.attachedElements.length&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval),this.timeSyncHandle&&cancelAnimationFrame(this.timeSyncHandle)}updateLoggerOptions(a){a.loggerName&&(this.log=dm(a.loggerName)),a.loggerContextCb&&(this.loggerContextCb=a.loggerContextCb)}recycleElement(a){if(a instanceof HTMLAudioElement){let b=!0;a.pause(),eV.forEach(a=>{a.parentElement||(b=!1)}),b&&eV.push(a)}}handleAppVisibilityChanged(){return dr(this,void 0,void 0,function*(){this.isInBackground="hidden"===document.visibilityState,this.isInBackground||this.kind!==eW.Kind.Video||setTimeout(()=>this.attachedElements.forEach(a=>a.play().catch(()=>{})),0)})}addAppVisibilityListener(){e8()?(this.isInBackground="hidden"===document.visibilityState,document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){e8()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function eX(a,b){let c,d;c=b.srcObject instanceof MediaStream?b.srcObject:new MediaStream,(d="audio"===a.kind?c.getAudioTracks():c.getVideoTracks()).includes(a)||(d.forEach(a=>{c.removeTrack(a)}),c.addTrack(a)),e5()&&b instanceof HTMLVideoElement||(b.autoplay=!0),b.muted=0===c.getAudioTracks().length,b instanceof HTMLVideoElement&&(b.playsInline=!0),b.srcObject!==c&&(b.srcObject=c,(e5()||e3())&&b instanceof HTMLVideoElement&&setTimeout(()=>{b.srcObject=c,b.play().catch(()=>{})},0))}function eY(a,b){if(b.srcObject instanceof MediaStream){let c=b.srcObject;c.removeTrack(a),c.getTracks().length>0?b.srcObject=c:b.srcObject=null}}!function(a){var b,c,d;let e,f,g;(b=e=a.Kind||(a.Kind={})).Audio="audio",b.Video="video",b.Unknown="unknown",(c=f=a.Source||(a.Source={})).Camera="camera",c.Microphone="microphone",c.ScreenShare="screen_share",c.ScreenShareAudio="screen_share_audio",c.Unknown="unknown",(d=g=a.StreamState||(a.StreamState={})).Active="active",d.Paused="paused",d.Unknown="unknown",a.kindToProto=function(a){switch(a){case e.Audio:return bf.AUDIO;case e.Video:return bf.VIDEO;default:return bf.DATA}},a.kindFromProto=function(a){switch(a){case bf.AUDIO:return e.Audio;case bf.VIDEO:return e.Video;default:return e.Unknown}},a.sourceToProto=function(a){switch(a){case f.Camera:return bg.CAMERA;case f.Microphone:return bg.MICROPHONE;case f.ScreenShare:return bg.SCREEN_SHARE;case f.ScreenShareAudio:return bg.SCREEN_SHARE_AUDIO;default:return bg.UNKNOWN}},a.sourceFromProto=function(a){switch(a){case bg.CAMERA:return f.Camera;case bg.MICROPHONE:return f.Microphone;case bg.SCREEN_SHARE:return f.ScreenShare;case bg.SCREEN_SHARE_AUDIO:return f.ScreenShareAudio;default:return f.Unknown}},a.streamStateFromProto=function(a){switch(a){case cs.ACTIVE:return g.Active;case cs.PAUSED:return g.Paused;default:return g.Unknown}}}(eW||(eW={}));let eZ="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function e$(a){return new em(b=>eD.setTimeout(b,a))}function e_(){return"addTransceiver"in RTCPeerConnection.prototype}function e0(){return"addTrack"in RTCPeerConnection.prototype}function e1(a){return"av1"===a||"vp9"===a}function e2(a){return!(!document||e6())&&(a||(a=document.createElement("audio")),"setSinkId"in a)}function e3(){var a;return(null==(a=eo())?void 0:a.name)==="Firefox"}function e4(){let a=eo();return!!a&&"Chrome"===a.name&&"iOS"!==a.os}function e5(){var a;return(null==(a=eo())?void 0:a.name)==="Safari"}function e6(){let a=eo();return(null==a?void 0:a.name)==="Safari"||(null==a?void 0:a.os)==="iOS"}function e7(){var a,b;return!!e8()&&(null!=(b=null==(a=navigator.userAgentData)?void 0:a.mobile)?b:/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent))}function e8(){return"undefined"!=typeof document}function e9(){return"ReactNative"==navigator.product}function fa(a){return a.hostname.endsWith(".livekit.cloud")||a.hostname.endsWith(".livekit.run")}function fb(a){return fa(a)?a.hostname.split(".")[0]:null}function fc(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function fd(){if(!e9())return;let a=fc();if(a)return a.platform}function fe(){if(e8())return window.devicePixelRatio;if(e9()){let a=fc();if(a)return a.devicePixelRatio}return 1}function ff(a,b){let c=a.split("."),d=b.split("."),e=Math.min(c.length,d.length);for(let a=0;a<e;++a){let b=parseInt(c[a],10),f=parseInt(d[a],10);if(b>f)return 1;if(b<f)return -1;if(a===e-1&&b===f)return 0}return""===a&&""!==b?-1:""===b?1:c.length==d.length?0:c.length<d.length?-1:1}function fg(a){for(let b of a)b.target.handleResize(b)}function fh(a){for(let b of a)b.target.handleVisibilityChanged(b)}let fi=null,fj=()=>(fi||(fi=new ResizeObserver(fg)),fi),fk=null,fl=()=>(fk||(fk=new IntersectionObserver(fh,{root:null,rootMargin:"0px"})),fk);function fm(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,c=arguments.length>2&&void 0!==arguments[2]&&arguments[2],d=arguments.length>3&&void 0!==arguments[3]&&arguments[3],e=document.createElement("canvas");e.width=a,e.height=b;let f=e.getContext("2d");null==f||f.fillRect(0,0,e.width,e.height),d&&f&&(f.beginPath(),f.arc(a/2,b/2,50,0,2*Math.PI,!0),f.closePath(),f.fillStyle="grey",f.fill());let[g]=e.captureStream().getTracks();if(!g)throw Error("Could not get empty media stream video track");return g.enabled=c,g}function fn(){if(!e){let a=new AudioContext,b=a.createOscillator(),c=a.createGain();c.gain.setValueAtTime(0,0);let d=a.createMediaStreamDestination();if(b.connect(c),c.connect(d),b.start(),[e]=d.stream.getAudioTracks(),!e)throw Error("Could not get empty media stream audio track");e.enabled=!1}return e.clone()}class fo{get isResolved(){return this._isResolved}constructor(a,b){this._isResolved=!1,this.onFinally=b,this.promise=new Promise((b,c)=>dr(this,void 0,void 0,function*(){this.resolve=b,this.reject=c,a&&(yield a(b,c))})).finally(()=>{var a;this._isResolved=!0,null==(a=this.onFinally)||a.call(this)})}}function fp(a){if("string"==typeof a||"number"==typeof a)return a;if(Array.isArray(a))return a[0];if(void 0!==a.exact)return Array.isArray(a.exact)?a.exact[0]:a.exact;if(void 0!==a.ideal)return Array.isArray(a.ideal)?a.ideal[0]:a.ideal;throw Error("could not unwrap constraint")}function fq(a){return a.startsWith("ws")?a.replace(/^(ws)/,"http"):a}function fr(a){switch(a.reason){case p.LeaveRequest:return a.context;case p.Cancelled:return bk.CLIENT_INITIATED;case p.NotAllowed:return bk.USER_REJECTED;case p.ServerUnreachable:return bk.JOIN_FAILURE;default:return bk.UNKNOWN_REASON}}function fs(a){return void 0!==a?Number(a):void 0}function ft(a){return void 0!==a?BigInt(a):void 0}function fu(a){return!!a&&!(a instanceof MediaStreamTrack)&&a.isLocal}function fv(a){return!!a&&a.kind==eW.Kind.Audio}function fw(a){return!!a&&a.kind==eW.Kind.Video}function fx(a){return fu(a)&&fw(a)}function fy(a){return fu(a)&&fv(a)}function fz(a){return!!a&&!a.isLocal}function fA(a){return fz(a)&&fw(a)}function fB(a){return a.endsWith("/")?a:"".concat(a,"/")}function fC(a,b){return a.pathname="".concat(fB(a.pathname)).concat(b),a}function fD(a){if("string"==typeof a)return cv.fromJson(JSON.parse(a),{ignoreUnknownFields:!0});if(a instanceof ArrayBuffer)return cv.fromBinary(new Uint8Array(a));throw Error("could not decode websocket message: ".concat(typeof a))}let fE="lk_e2ee";function fF(){return void 0!==window.RTCRtpScriptTransform}!function(a){a.SetKey="setKey",a.RatchetRequest="ratchetRequest",a.KeyRatcheted="keyRatcheted"}(z||(z={})),(A||(A={})).KeyRatcheted="keyRatcheted",function(a){a.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",a.EncryptionError="encryptionError"}(B||(B={})),(C||(C={})).Error="cryptorError",du.EventEmitter,function(a){a[a.InvalidKey=0]="InvalidKey",a[a.MissingKey=1]="MissingKey",a[a.InternalError=2]="InternalError"}(D||(D={}));class fG extends du.EventEmitter{constructor(a,b){super(),this.decryptDataRequests=new Map,this.encryptDataRequests=new Map,this.onWorkerMessage=a=>{var b,c;let{kind:d,data:e}=a.data;switch(d){case"error":if(dl.error(e.error.message),e.uuid){let a=this.decryptDataRequests.get(e.uuid);if(null==a?void 0:a.reject){a.reject(e.error);break}let b=this.encryptDataRequests.get(e.uuid);if(null==b?void 0:b.reject){b.reject(e.error);break}}this.emit(B.EncryptionError,e.error,e.participantIdentity);break;case"initAck":e.enabled&&this.keyProvider.getKeys().forEach(a=>{this.postKey(a)});break;case"enable":if(e.enabled&&this.keyProvider.getKeys().forEach(a=>{this.postKey(a)}),this.encryptionEnabled!==e.enabled&&e.participantIdentity===(null==(b=this.room)?void 0:b.localParticipant.identity))this.emit(B.ParticipantEncryptionStatusChanged,e.enabled,this.room.localParticipant),this.encryptionEnabled=e.enabled;else if(e.participantIdentity){let a=null==(c=this.room)?void 0:c.getParticipantByIdentity(e.participantIdentity);if(!a)throw TypeError("couldn't set encryption status, participant not found".concat(e.participantIdentity));this.emit(B.ParticipantEncryptionStatusChanged,e.enabled,a)}break;case"ratchetKey":this.keyProvider.emit(z.KeyRatcheted,e.ratchetResult,e.participantIdentity,e.keyIndex);break;case"decryptDataResponse":let f=this.decryptDataRequests.get(e.uuid);(null==f?void 0:f.resolve)&&f.resolve(e);break;case"encryptDataResponse":let g=this.encryptDataRequests.get(e.uuid);(null==g?void 0:g.resolve)&&g.resolve(e)}},this.onWorkerError=a=>{dl.error("e2ee worker encountered an error:",{error:a.error}),this.emit(B.EncryptionError,a.error,void 0)},this.keyProvider=a.keyProvider,this.worker=a.worker,this.encryptionEnabled=!1,this.dataChannelEncryptionEnabled=b}get isEnabled(){return this.encryptionEnabled}get isDataChannelEncryptionEnabled(){return this.isEnabled&&this.dataChannelEncryptionEnabled}setup(a){if(!(void 0!==window.RTCRtpSender&&void 0!==window.RTCRtpSender.prototype.createEncodedStreams||fF()))throw new eu("tried to setup end-to-end encryption on an unsupported browser");if(dl.info("setting up e2ee"),a!==this.room){this.room=a,this.setupEventListeners(a,this.keyProvider);let b={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions(),loglevel:dn.getLevel()}};this.worker&&(dl.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(b))}}setParticipantCryptorEnabled(a,b){dl.debug("set e2ee to ".concat(a," for participant ").concat(b)),this.postEnable(a,b)}setSifTrailer(a){a&&0!==a.length?this.postSifTrailer(a):dl.warn("ignoring server sent trailer as it's empty")}setupEngine(a){a.on(u.RTPVideoMapUpdate,a=>{this.postRTPMap(a)})}setupEventListeners(a,b){a.on(s.TrackPublished,(a,b)=>this.setParticipantCryptorEnabled(a.trackInfo.encryption!==bv.NONE,b.identity)),a.on(s.ConnectionStateChanged,b=>{b===O.Connected&&a.remoteParticipants.forEach(a=>{a.trackPublications.forEach(b=>{this.setParticipantCryptorEnabled(b.trackInfo.encryption!==bv.NONE,a.identity)})})}).on(s.TrackUnsubscribed,(a,b,c)=>{var d;let e={kind:"removeTransform",data:{participantIdentity:c.identity,trackId:a.mediaStreamID}};null==(d=this.worker)||d.postMessage(e)}).on(s.TrackSubscribed,(a,b,c)=>{this.setupE2EEReceiver(a,c.identity,b.trackInfo)}).on(s.SignalConnected,()=>{if(!this.room)throw TypeError("expected room to be present on signal connect");b.getKeys().forEach(a=>{this.postKey(a)}),this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity)}),a.localParticipant.on(t.LocalSenderCreated,(a,b)=>dr(this,void 0,void 0,function*(){this.setupE2EESender(b,a)})),a.localParticipant.on(t.LocalTrackPublished,a=>{if(!fw(a.track)||!e6())return;let b={kind:"updateCodec",data:{trackId:a.track.mediaStreamID,codec:eR(a.trackInfo.codecs[0].mimeType),participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(b)}),b.on(z.SetKey,a=>this.postKey(a)).on(z.RatchetRequest,(a,b)=>this.postRatchetRequest(a,b))}encryptData(a){return dr(this,void 0,void 0,function*(){if(!this.worker)throw Error("could not encrypt data, worker is missing");let b=crypto.randomUUID(),c={kind:"encryptDataRequest",data:{uuid:b,payload:a,participantIdentity:this.room.localParticipant.identity}},d=new fo;return d.onFinally=()=>{this.encryptDataRequests.delete(b)},this.encryptDataRequests.set(b,d),this.worker.postMessage(c),d.promise})}handleEncryptedData(a,b,c,d){if(!this.worker)throw Error("could not handle encrypted data, worker is missing");let e=crypto.randomUUID(),f=new fo;return f.onFinally=()=>{this.decryptDataRequests.delete(e)},this.decryptDataRequests.set(e,f),this.worker.postMessage({kind:"decryptDataRequest",data:{uuid:e,payload:a,iv:b,participantIdentity:c,keyIndex:d}}),f.promise}postRatchetRequest(a,b){if(!this.worker)throw Error("could not ratchet key, worker is missing");this.worker.postMessage({kind:"ratchetRequest",data:{participantIdentity:a,keyIndex:b}})}postKey(a){var b;let{key:c,participantIdentity:d,keyIndex:e}=a;if(!this.worker)throw Error("could not set key, worker is missing");let f={kind:"setKey",data:{participantIdentity:d,isPublisher:d===(null==(b=this.room)?void 0:b.localParticipant.identity),key:c,keyIndex:e}};this.worker.postMessage(f)}postEnable(a,b){if(this.worker)this.worker.postMessage({kind:"enable",data:{enabled:a,participantIdentity:b}});else throw ReferenceError("failed to enable e2ee, worker is not ready")}postRTPMap(a){var b;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(null==(b=this.room)?void 0:b.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");let c={kind:"setRTPMap",data:{map:a,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(c)}postSifTrailer(a){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");this.worker.postMessage({kind:"setSifTrailer",data:{trailer:a}})}setupE2EEReceiver(a,b,c){if(a.receiver){if(!(null==c?void 0:c.mimeType)||""===c.mimeType)throw TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");this.handleReceiver(a.receiver,a.mediaStreamID,b,"video"===a.kind?eR(c.mimeType):void 0)}}setupE2EESender(a,b){if(!fu(a)||!b){b||dl.warn("early return because sender is not ready");return}this.handleSender(b,a.mediaStreamID,void 0)}handleReceiver(a,b,c,d){return dr(this,void 0,void 0,function*(){if(this.worker){if(fF()&&!e4())a.transform=new RTCRtpScriptTransform(this.worker,{kind:"decode",participantIdentity:c,trackId:b,codec:d});else{if(fE in a&&d)return void this.worker.postMessage({kind:"updateCodec",data:{trackId:b,codec:d,participantIdentity:c}});let e=a.writableStream,f=a.readableStream;if(!e||!f){let b=a.createEncodedStreams();a.writableStream=b.writable,e=b.writable,a.readableStream=b.readable,f=b.readable}let g={kind:"decode",data:{readableStream:f,writableStream:e,trackId:b,codec:d,participantIdentity:c,isReuse:fE in a}};this.worker.postMessage(g,[f,e])}a[fE]=!0}})}handleSender(a,b,c){var d;if(!(fE in a)&&this.worker){if(!(null==(d=this.room)?void 0:d.localParticipant.identity)||""===this.room.localParticipant.identity)throw TypeError("local identity needs to be known in order to set up encrypted sender");if(fF()&&!e4()){dl.info("initialize script transform");let d={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:b,codec:c};a.transform=new RTCRtpScriptTransform(this.worker,d)}else{dl.info("initialize encoded streams");let d=a.createEncodedStreams(),e={kind:"encode",data:{readableStream:d.readable,writableStream:d.writable,codec:c,trackId:b,participantIdentity:this.room.localParticipant.identity,isReuse:!1}};this.worker.postMessage(e,[d.readable,d.writable])}a[fE]=!0}}}class fH{constructor(){this.failedConnectionAttempts=new Map,this.backOffPromises=new Map}static getInstance(){return this._instance||(this._instance=new fH),this._instance}addFailedConnectionAttempt(a){var b;let c=fb(new URL(a));if(!c)return;let d=null!=(b=this.failedConnectionAttempts.get(c))?b:0;this.failedConnectionAttempts.set(c,d+1),this.backOffPromises.set(c,e$(Math.min(500*Math.pow(2,d),15e3)))}getBackOffPromise(a){let b=new URL(a),c=b&&fb(b);return c&&this.backOffPromises.get(c)||Promise.resolve()}resetFailedConnectionAttempts(a){let b=new URL(a),c=b&&fb(b);c&&(this.failedConnectionAttempts.set(c,0),this.backOffPromises.set(c,Promise.resolve()))}resetAll(){this.backOffPromises.clear(),this.failedConnectionAttempts.clear()}}fH._instance=null;let fI="default";class fJ{constructor(){this._previousDevices=[]}static getInstance(){return void 0===this.instance&&(this.instance=new fJ),this.instance}get previousDevices(){return this._previousDevices}getDevices(a){return dr(this,arguments,void 0,function(a){var b=this;let c=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var d;if((null==(d=fJ.userMediaPromiseMap)?void 0:d.size)>0){dl.debug("awaiting getUserMedia promise");try{a?yield fJ.userMediaPromiseMap.get(a):yield Promise.all(fJ.userMediaPromiseMap.values())}catch(a){dl.warn("error waiting for media permissons")}}let e=yield navigator.mediaDevices.enumerateDevices();if(c&&!(e5()&&b.hasDeviceInUse(a))&&(0===e.filter(b=>b.kind===a).length||e.some(b=>{let c=""===b.label,d=!a||b.kind===a;return c&&d}))){let b=yield navigator.mediaDevices.getUserMedia({video:"audioinput"!==a&&"audiooutput"!==a,audio:"videoinput"!==a&&{deviceId:{ideal:"default"}}});e=yield navigator.mediaDevices.enumerateDevices(),b.getTracks().forEach(a=>{a.stop()})}return b._previousDevices=e,a&&(e=e.filter(b=>b.kind===a)),e}()})}normalizeDeviceId(a,b,c){return dr(this,void 0,void 0,function*(){if(b!==fI)return b;let d=yield this.getDevices(a),e=d.find(a=>a.deviceId===fI);if(!e)return void dl.warn("could not reliably determine default device");let f=d.find(a=>a.deviceId!==fI&&a.groupId===(null!=c?c:e.groupId));return f?null==f?void 0:f.deviceId:void dl.warn("could not reliably determine default device")})}hasDeviceInUse(a){return a?fJ.userMediaPromiseMap.has(a):fJ.userMediaPromiseMap.size>0}}fJ.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],fJ.userMediaPromiseMap=new Map,function(a){a[a.WAITING=0]="WAITING",a[a.RUNNING=1]="RUNNING",a[a.COMPLETED=2]="COMPLETED"}(E||(E={}));class fK{constructor(){this.pendingTasks=new Map,this.taskMutex=new S,this.nextTaskIndex=0}run(a){return dr(this,void 0,void 0,function*(){let b={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:E.WAITING};this.pendingTasks.set(b.id,b);let c=yield this.taskMutex.lock();try{return b.executedAt=Date.now(),b.status=E.RUNNING,yield a()}finally{b.status=E.COMPLETED,this.pendingTasks.delete(b.id),c()}})}flush(){return dr(this,void 0,void 0,function*(){return this.run(()=>dr(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}}class fL{get readyState(){return this.ws.readyState}constructor(a){var b,c;let d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==(b=d.signal)?void 0:b.aborted)throw new DOMException("This operation was aborted","AbortError");this.url=a;let e=new WebSocket(a,null!=(c=d.protocols)?c:[]);e.binaryType="arraybuffer",this.ws=e;let f=function(){let{closeCode:a,reason:b}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.close(a,b)};this.opened=new em((a,b)=>{let c=()=>{b(et.websocket("Encountered websocket error during connection establishment"))};e.onopen=()=>{a({readable:new ReadableStream({start(a){e.onmessage=b=>{let{data:c}=b;return a.enqueue(c)},e.onerror=b=>a.error(b)},cancel:f}),writable:new WritableStream({write(a){e.send(a)},abort(){e.close()},close:f}),protocol:e.protocol,extensions:e.extensions}),e.removeEventListener("error",c)},e.addEventListener("error",c)}),this.closed=new em((a,b)=>{let c=()=>dr(this,void 0,void 0,function*(){let c=new em(a=>{e.readyState!==WebSocket.CLOSED&&e.addEventListener("close",b=>{a(b)},{once:!0})}),d=yield em.race([e$(250),c]);d?a(d):b(et.websocket("Encountered unspecified websocket error without a timely close event"))});e.onclose=b=>{let{code:d,reason:f}=b;a({closeCode:d,reason:f}),e.removeEventListener("error",c)},e.addEventListener("error",c)}),d.signal&&(d.signal.onabort=()=>e.close()),this.close=f}}let fM=["syncState","trickle","offer","answer","simulate","leave"];!function(a){a[a.CONNECTING=0]="CONNECTING",a[a.CONNECTED=1]="CONNECTED",a[a.RECONNECTING=2]="RECONNECTING",a[a.DISCONNECTING=3]="DISCONNECTING",a[a.DISCONNECTED=4]="DISCONNECTED"}(F||(F={}));class fN{get currentState(){return this.state}get isDisconnected(){return this.state===F.DISCONNECTING||this.state===F.DISCONNECTED}get isEstablishingConnection(){return this.state===F.CONNECTING||this.state===F.RECONNECTING}getNextRequestId(){return this._requestId+=1,this._requestId}constructor(){var a;let b=arguments.length>0&&void 0!==arguments[0]&&arguments[0],c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.rtt=0,this.state=F.DISCONNECTED,this.log=dl,this._requestId=0,this.useV0SignalPath=!1,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0,this.onMediaSectionsRequirement=void 0},this.log=dm(null!=(a=c.loggerName)?a:m.Signal),this.loggerContextCb=c.loggerContextCb,this.useJSON=b,this.requestQueue=new fK,this.queuedRequests=[],this.closingLock=new S,this.connectionLock=new S,this.state=F.DISCONNECTED}get logContext(){var a,b;return null!=(b=null==(a=this.loggerContextCb)?void 0:a.call(this))?b:{}}join(a,b,c,d){return dr(this,arguments,void 0,function(a,b,c,d){var e=this;let f=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return function*(){return e.state=F.CONNECTING,e.options=c,yield e.connect(a,b,c,d,f)}()})}reconnect(a,b,c,d){return dr(this,void 0,void 0,function*(){return this.options?(this.state=F.RECONNECTING,this.clearPingInterval(),yield this.connect(a,b,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:c,reconnectReason:d}),void 0,this.useV0SignalPath)):void this.log.warn("attempted to reconnect without signal options being set, ignoring",this.logContext)})}connect(a,b,c,d){return dr(this,arguments,void 0,function(a,b,c,d){var e=this;let f=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return function*(){let g=yield e.connectionLock.lock();e.connectOptions=c,e.useV0SignalPath=f;let h=function(){var a;let b=new bS({sdk:bT.JS,protocol:16,version:"2.17.0"});return e9()&&(b.os=null!=(a=fd())?a:""),b}(),i=(function(a,b){let c=arguments.length>2&&void 0!==arguments[2]&&arguments[2],d=function(a,b){let c=new URL(a.startsWith("http")?a.replace(/^(http)/,"ws"):a);return b.forEach((a,b)=>{c.searchParams.set(b,a)}),fC(c,"rtc")}(a,b);return c?d:fC(d,"v1")})(a,f?function(a,b,c){var d;let e=new URLSearchParams;return e.set("access_token",a),c.reconnect&&(e.set("reconnect","1"),c.sid&&e.set("sid",c.sid)),e.set("auto_subscribe",c.autoSubscribe?"1":"0"),e.set("sdk",e9()?"reactnative":"js"),e.set("version",b.version),e.set("protocol",b.protocol.toString()),b.deviceModel&&e.set("device_model",b.deviceModel),b.os&&e.set("os",b.os),b.osVersion&&e.set("os_version",b.osVersion),b.browser&&e.set("browser",b.browser),b.browserVersion&&e.set("browser_version",b.browserVersion),c.adaptiveStream&&e.set("adaptive_stream","1"),c.reconnectReason&&e.set("reconnect_reason",c.reconnectReason.toString()),(null==(d=navigator.connection)?void 0:d.type)&&e.set("network",navigator.connection.type),e}(b,h,c):function(a,b,c){let d=new URLSearchParams;d.set("access_token",a);let e=new de({clientInfo:b,connectionSettings:new dd({autoSubscribe:!!c.autoSubscribe,adaptiveStream:!!c.adaptiveStream}),reconnect:!!c.reconnect,participantSid:c.sid?c.sid:void 0});c.reconnectReason&&(e.reconnectReason=c.reconnectReason);let f=new df({joinRequest:e.toBinary()});return d.set("join_request",btoa(new TextDecoder("utf-8").decode(f.toBinary()))),d}(b,h,c),f).toString(),j=fC(new URL(fq(i)),"validate").toString();return new Promise((a,b)=>dr(e,void 0,void 0,function*(){var e,f;try{let g=!1,h=a=>dr(this,void 0,void 0,function*(){if(g)return;g=!0;let c=a instanceof Event?a.currentTarget:a,d=function(a){let b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unknown reason";if(!(a instanceof AbortSignal))return b;let c=a.reason;switch(typeof c){case"string":return c;case"object":return c instanceof Error?c.message:b;default:return"toString"in c?c.toString():b}}(c,"Abort handler called");this.streamWriter&&!this.isDisconnected?this.sendLeave().then(()=>this.close(d)).catch(a=>{this.log.error(a),this.close()}):this.close(),k(),b(et.cancelled(d))});null==d||d.addEventListener("abort",h);let k=()=>{clearTimeout(l),null==d||d.removeEventListener("abort",h)},l=setTimeout(()=>{h(et.timeout("room connection has timed out (signal)"))},c.websocketTimeout),m=(a,b)=>{this.handleSignalConnected(a,l,b)},n=new URL(i);n.searchParams.has("access_token")&&n.searchParams.set("access_token","<redacted>"),this.log.debug("connecting to ".concat(n),Object.assign({reconnect:c.reconnect,reconnectReason:c.reconnectReason},this.logContext)),this.ws&&(yield this.close(!1)),this.ws=new fL(i);try{this.ws.closed.then(a=>{var c;this.isEstablishingConnection&&b(et.internal("Websocket got closed during a (re)connection attempt: ".concat(a.reason))),1e3!==a.closeCode&&(this.log.warn("websocket closed",Object.assign(Object.assign({},this.logContext),{reason:a.reason,code:a.closeCode,wasClean:1e3===a.closeCode,state:this.state})),this.state===F.CONNECTED&&this.handleOnClose(null!=(c=a.reason)?c:"Unexpected WS error"))}).catch(a=>{this.isEstablishingConnection&&b(et.internal("Websocket error during a (re)connection attempt: ".concat(a)))});let d=yield this.ws.opened.catch(a=>dr(this,void 0,void 0,function*(){if(this.state!==F.CONNECTED){this.state=F.DISCONNECTED,clearTimeout(l);let c=yield this.handleConnectionError(a,j);b(c);return}this.handleWSError(a),b(a)}));if(clearTimeout(l),!d)return;let g=d.readable.getReader();this.streamWriter=d.writable.getWriter();let h=yield g.read();if(g.releaseLock(),!h.value)throw et.internal("no message received as first message");let i=fD(h.value),k=this.validateFirstMessage(i,null!=(e=c.reconnect)&&e);if(!k.isValid)return void b(k.error);(null==(f=i.message)?void 0:f.case)==="join"&&(this.pingTimeoutDuration=i.message.value.pingTimeout,this.pingIntervalDuration=i.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&this.log.debug("ping config",Object.assign(Object.assign({},this.logContext),{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration})));let n=k.shouldProcessFirstMessage?i:void 0;m(d,n),a(k.response)}catch(a){b(a)}finally{k()}}finally{g()}}))}()})}startReadingLoop(a,b){return dr(this,void 0,void 0,function*(){for(b&&this.handleSignalResponse(b);;){this.signalLatency&&(yield e$(this.signalLatency));let{done:b,value:c}=yield a.read();if(b)break;let d=fD(c);this.handleSignalResponse(d)}})}close(){return dr(this,arguments,void 0,function(){var a=this;let b=!(arguments.length>0)||void 0===arguments[0]||arguments[0],c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Close method called on signal client";return function*(){if([F.DISCONNECTING||F.DISCONNECTED].includes(a.state))return void a.log.debug("ignoring signal close as it's already in disconnecting state");let d=yield a.closingLock.lock();try{if(a.clearPingInterval(),b&&(a.state=F.DISCONNECTING),a.ws){a.ws.close({closeCode:1e3,reason:c});let b=a.ws.closed;a.ws=void 0,a.streamWriter=void 0,yield Promise.race([b,e$(250)])}}catch(b){a.log.debug("websocket error while closing",Object.assign(Object.assign({},a.logContext),{error:b}))}finally{b&&(a.state=F.DISCONNECTED),d()}}()})}sendOffer(a,b){this.log.debug("sending offer",Object.assign(Object.assign({},this.logContext),{offerSdp:a.sdp})),this.sendRequest({case:"offer",value:fP(a,b)})}sendAnswer(a,b){return this.log.debug("sending answer",Object.assign(Object.assign({},this.logContext),{answerSdp:a.sdp})),this.sendRequest({case:"answer",value:fP(a,b)})}sendIceCandidate(a,b){return this.log.debug("sending ice candidate",Object.assign(Object.assign({},this.logContext),{candidate:a})),this.sendRequest({case:"trickle",value:new cy({candidateInit:JSON.stringify(a),target:b})})}sendMuteTrack(a,b){return this.sendRequest({case:"mute",value:new cz({sid:a,muted:b})})}sendAddTrack(a){return this.sendRequest({case:"addTrack",value:a})}sendUpdateLocalMetadata(a,b){return dr(this,arguments,void 0,function(a,b){var c=this;let d=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){let e=c.getNextRequestId();return yield c.sendRequest({case:"updateMetadata",value:new cN({requestId:e,metadata:a,name:b,attributes:d})}),e}()})}sendUpdateTrackSettings(a){this.sendRequest({case:"trackSetting",value:a})}sendUpdateSubscription(a){return this.sendRequest({case:"subscription",value:a})}sendSyncState(a){return this.sendRequest({case:"syncState",value:a})}sendUpdateVideoLayers(a,b){return this.sendRequest({case:"updateLayers",value:new cM({trackSid:a,layers:b})})}sendUpdateSubscriptionPermissions(a,b){return this.sendRequest({case:"subscriptionPermission",value:new c$({allParticipants:a,trackPermissions:b})})}sendSimulateScenario(a){return this.sendRequest({case:"simulate",value:a})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:aj.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new c5({timestamp:aj.parse(Date.now()),rtt:aj.parse(this.rtt)})})])}sendUpdateLocalAudioTrack(a,b){return this.sendRequest({case:"updateAudioTrack",value:new cI({trackSid:a,features:b})})}sendLeave(){return this.sendRequest({case:"leave",value:new cK({reason:bk.CLIENT_INITIATED,action:cL.DISCONNECT})})}sendRequest(a){return dr(this,arguments,void 0,function(a){var b=this;let c=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function*(){if(!c&&!function(a){let b=fM.indexOf(a.case)>=0;return dl.trace("request allowed to bypass queue:",{canPass:b,req:a}),b}(a)&&b.state===F.RECONNECTING)return void b.queuedRequests.push(()=>dr(b,void 0,void 0,function*(){yield this.sendRequest(a,!0)}));if(c||(yield b.requestQueue.flush()),b.signalLatency&&(yield e$(b.signalLatency)),b.isDisconnected)return void b.log.debug("skipping signal request (type: ".concat(a.case,") - SignalClient disconnected"));if(!b.streamWriter)return void b.log.error("cannot send signal request before connected, type: ".concat(null==a?void 0:a.case),b.logContext);let d=new cu({message:a});try{b.useJSON?yield b.streamWriter.write(d.toJsonString()):yield b.streamWriter.write(d.toBinary())}catch(a){b.log.error("error sending signal message",Object.assign(Object.assign({},b.logContext),{error:a}))}}()})}handleSignalResponse(a){var b,c;let d=a.message;if(void 0==d)return void this.log.debug("received unsupported message",this.logContext);let e=!1;if("answer"===d.case){let a=fO(d.value);this.onAnswer&&this.onAnswer(a,d.value.id,d.value.midToTrackId)}else if("offer"===d.case){let a=fO(d.value);this.onOffer&&this.onOffer(a,d.value.id,d.value.midToTrackId)}else if("trickle"===d.case){let a=JSON.parse(d.value.candidateInit);this.onTrickle&&this.onTrickle(a,d.value.target)}else"update"===d.case?this.onParticipantUpdate&&this.onParticipantUpdate(null!=(b=d.value.participants)?b:[]):"trackPublished"===d.case?this.onLocalTrackPublished&&this.onLocalTrackPublished(d.value):"speakersChanged"===d.case?this.onSpeakersChanged&&this.onSpeakersChanged(null!=(c=d.value.speakers)?c:[]):"leave"===d.case?this.onLeave&&this.onLeave(d.value):"mute"===d.case?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(d.value.sid,d.value.muted):"roomUpdate"===d.case?this.onRoomUpdate&&d.value.room&&this.onRoomUpdate(d.value.room):"connectionQuality"===d.case?this.onConnectionQuality&&this.onConnectionQuality(d.value):"streamStateUpdate"===d.case?this.onStreamStateUpdate&&this.onStreamStateUpdate(d.value):"subscribedQualityUpdate"===d.case?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(d.value):"subscriptionPermissionUpdate"===d.case?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(d.value):"refreshToken"===d.case?this.onTokenRefresh&&this.onTokenRefresh(d.value):"trackUnpublished"===d.case?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(d.value):"subscriptionResponse"===d.case?this.onSubscriptionError&&this.onSubscriptionError(d.value):"pong"===d.case||("pongResp"===d.case?(this.rtt=Date.now()-Number.parseInt(d.value.lastPingTimestamp.toString()),this.resetPingTimeout(),e=!0):"requestResponse"===d.case?this.onRequestResponse&&this.onRequestResponse(d.value):"trackSubscribed"===d.case?this.onLocalTrackSubscribed&&this.onLocalTrackSubscribed(d.value.trackSid):"roomMoved"===d.case?(this.onTokenRefresh&&this.onTokenRefresh(d.value.token),this.onRoomMoved&&this.onRoomMoved(d.value)):"mediaSectionsRequirement"===d.case?this.onMediaSectionsRequirement&&this.onMediaSectionsRequirement(d.value):this.log.debug("unsupported message",Object.assign(Object.assign({},this.logContext),{msgCase:d.case})));e||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){let a=this.queuedRequests.shift();a&&this.requestQueue.run(a)}}handleOnClose(a){return dr(this,void 0,void 0,function*(){if(this.state===F.DISCONNECTED)return;let b=this.onClose;yield this.close(void 0,a),this.log.debug("websocket connection closed: ".concat(a),Object.assign(Object.assign({},this.logContext),{reason:a})),b&&b(a)})}handleWSError(a){this.log.error("websocket error",Object.assign(Object.assign({},this.logContext),{error:a}))}resetPingTimeout(){if(this.clearPingTimeout(),!this.pingTimeoutDuration)return void this.log.warn("ping timeout duration not set",this.logContext);this.pingTimeout=eD.setTimeout(()=>{this.log.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-1e3*this.pingTimeoutDuration).toUTCString()),this.logContext),this.handleOnClose("ping timeout")},1e3*this.pingTimeoutDuration)}clearPingTimeout(){this.pingTimeout&&eD.clearTimeout(this.pingTimeout)}startPingInterval(){if(this.clearPingInterval(),this.resetPingTimeout(),!this.pingIntervalDuration)return void this.log.warn("ping interval duration not set",this.logContext);this.log.debug("start ping interval",this.logContext),this.pingInterval=eD.setInterval(()=>{this.sendPing()},1e3*this.pingIntervalDuration)}clearPingInterval(){this.log.debug("clearing ping interval",this.logContext),this.clearPingTimeout(),this.pingInterval&&eD.clearInterval(this.pingInterval)}handleSignalConnected(a,b,c){this.state=F.CONNECTED,clearTimeout(b),this.startPingInterval(),this.startReadingLoop(a.readable.getReader(),c)}validateFirstMessage(a,b){var c,d,e,f,g;if((null==(c=a.message)?void 0:c.case)==="join")return{isValid:!0,response:a.message.value};if(this.state===F.RECONNECTING&&(null==(d=a.message)?void 0:d.case)!=="leave")if((null==(e=a.message)?void 0:e.case)==="reconnect")return{isValid:!0,response:a.message.value};else return this.log.debug("declaring signal reconnected without reconnect response received",this.logContext),{isValid:!0,response:void 0,shouldProcessFirstMessage:!0};return this.isEstablishingConnection&&(null==(f=a.message)?void 0:f.case)==="leave"?{isValid:!1,error:et.leaveRequest("Received leave request while trying to (re)connect",a.message.value.reason)}:b?{isValid:!1,error:et.internal("Unexpected first message")}:{isValid:!1,error:et.internal("did not receive join response, got ".concat(null==(g=a.message)?void 0:g.case," instead"))}}handleConnectionError(a,b){return dr(this,void 0,void 0,function*(){try{let c=yield fetch(b);switch(c.status){case 404:return et.serviceNotFound("v1 RTC path not found. Consider upgrading your LiveKit server version","v0-rtc");case 401:case 403:let d=yield c.text();return et.notAllowed(d,c.status)}if(a instanceof et)return a;return et.internal("Encountered unknown websocket error during connection: ".concat(a),{status:c.status,statusText:c.statusText})}catch(a){return a instanceof et?a:et.serverUnreachable(a instanceof Error?a.message:"server was not reachable")}})}}function fO(a){let b={type:"offer",sdp:a.sdp};switch(a.type){case"answer":case"offer":case"pranswer":case"rollback":b.type=a.type}return b}function fP(a,b){return new cE({sdp:a.sdp,type:a.type,id:b})}class fQ{constructor(){this.buffer=[],this._totalSize=0}push(a){this.buffer.push(a),this._totalSize+=a.data.byteLength}pop(){let a=this.buffer.shift();return a&&(this._totalSize-=a.data.byteLength),a}getAll(){return this.buffer.slice()}popToSequence(a){for(;this.buffer.length>0;)if(this.buffer[0].sequence<=a)this.pop();else break}alignBufferedAmount(a){for(;this.buffer.length>0;){let b=this.buffer[0];if(this._totalSize-b.data.byteLength<=a)break;this.pop()}}get length(){return this.buffer.length}}class fR{constructor(a){this._map=new Map,this._lastCleanup=0,this.ttl=a}set(a,b){let c=Date.now();c-this._lastCleanup>this.ttl/2&&this.cleanup();let d=c+this.ttl;return this._map.set(a,{value:b,expiresAt:d}),this}get(a){let b=this._map.get(a);if(b)return b.expiresAt<Date.now()?void this._map.delete(a):b.value}has(a){let b=this._map.get(a);return!!b&&(!(b.expiresAt<Date.now())||(this._map.delete(a),!1))}delete(a){return this._map.delete(a)}clear(){this._map.clear()}cleanup(){let a=Date.now();for(let[b,c]of this._map.entries())c.expiresAt<a&&this._map.delete(b);this._lastCleanup=a}get size(){return this.cleanup(),this._map.size}forEach(a){for(let[b,c]of(this.cleanup(),this._map.entries()))c.expiresAt>=Date.now()&&a(c.value,b,this.asValueMap())}map(a){this.cleanup();let b=[],c=this.asValueMap();for(let[d,e]of c.entries())b.push(a(e,d,c));return b}asValueMap(){let a=new Map;for(let[b,c]of this._map.entries())c.expiresAt>=Date.now()&&a.set(b,c.value);return a}}var fS={},fT={},fU={exports:{}};function fV(){if(G)return fU.exports;G=1;var a=fU.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return null!=a.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return null!=a.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(a){return"extmap:%d"+(a.direction?"/%s":"%v")+(a["encrypt-uri"]?" %s":"%v")+" %s"+(a.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(a){return null!=a.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(a){var b="candidate:%s %d %s %d %s %d typ %s";return b+=(null!=a.raddr?" raddr %s rport %d":"%v%v")+(null!=a.tcptype?" tcptype %s":"%v"),null!=a.generation&&(b+=" generation %d"),b+=(null!=a["network-id"]?" network-id %d":"%v")+(null!=a["network-cost"]?" network-cost %d":"%v")}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(a){var b="ssrc:%d";return null!=a.attribute&&(b+=" %s",null!=a.value&&(b+=":%s")),b}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(a){return null!=a.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(a){return a.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(a){return"imageattr:%s %s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast",reg:RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(a){return"simulcast:%s %s"+(a.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(a){return"ts-refclk:%s"+(null!=a.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(a){var b="mediaclk:";return b+((null!=a.id?"id=%s %s":"%v%s")+(null!=a.mediaClockValue?"=%s":"")+(null!=a.rateNumerator?" rate=%s":"")+(null!=a.rateDenominator?"/%s":""))}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};return Object.keys(a).forEach(function(b){a[b].forEach(function(a){a.reg||(a.reg=/(.*)/),a.format||(a.format="%s")})}),fU.exports}var fW=function(){if(K)return fS;K=1;var a=function(){var a,b,c,d,e,f;return H?fT:(H=1,a=function(a){return String(Number(a))===a?Number(a):a},b=function(b,c,d,e){if(e&&!d)c[e]=a(b[1]);else for(var f=0;f<d.length;f+=1)null!=b[f+1]&&(c[d[f]]=a(b[f+1]))},c=function(a,c,d){var e=a.name&&a.names;a.push&&!c[a.push]?c[a.push]=[]:e&&!c[a.name]&&(c[a.name]={});var f=a.push?{}:e?c[a.name]:c;b(d.match(a.reg),f,a.names,a.name),a.push&&c[a.push].push(f)},d=fV(),e=RegExp.prototype.test.bind(/^([a-z])=(.*)/),fT.parse=function(a){var b={},f=[],g=b;return a.split(/(\r\n|\r|\n)/).filter(e).forEach(function(a){var b=a[0],e=a.slice(2);"m"===b&&(f.push({rtp:[],fmtp:[]}),g=f[f.length-1]);for(var h=0;h<(d[b]||[]).length;h+=1){var i=d[b][h];if(i.reg.test(e))return c(i,g,e)}}),b.media=f,b},f=function(b,c){var d=c.split(/=(.+)/,2);return 2===d.length?b[d[0]]=a(d[1]):1===d.length&&c.length>1&&(b[d[0]]=void 0),b},fT.parseParams=function(a){return a.split(/;\s?/).reduce(f,{})},fT.parseFmtpConfig=fT.parseParams,fT.parsePayloads=function(a){return a.toString().split(" ").map(Number)},fT.parseRemoteCandidates=function(b){for(var c=[],d=b.split(" ").map(a),e=0;e<d.length;e+=3)c.push({component:d[e],ip:d[e+1],port:d[e+2]});return c},fT.parseImageAttributes=function(a){return a.split(" ").map(function(a){return a.substring(1,a.length-1).split(",").reduce(f,{})})},fT.parseSimulcastStreamList=function(b){return b.split(";").map(function(b){return b.split(",").map(function(b){var c,d=!1;return"~"!==b[0]?c=a(b):(c=a(b.substring(1,b.length)),d=!0),{scid:c,paused:d}})})},fT)}(),b=function(){if(J)return I;J=1;var a=fV(),b=/%[sdv%]/g,c=function(a){var c=1,d=arguments,e=d.length;return a.replace(b,function(a){if(c>=e)return a;var b=d[c];switch(c+=1,a){case"%%":return"%";case"%s":return String(b);case"%d":return Number(b);case"%v":return""}})},d=function(a,b,d){var e=[a+"="+(b.format instanceof Function?b.format(b.push?d:d[b.name]):b.format)];if(b.names)for(var f=0;f<b.names.length;f+=1){var g=b.names[f];b.name?e.push(d[b.name][g]):e.push(d[b.names[f]])}else e.push(d[b.name]);return c.apply(null,e)},e=["v","o","s","i","u","e","p","c","b","t","r","z","a"],f=["i","c","b","a"];return I=function(b,c){c=c||{},null==b.version&&(b.version=0),null==b.name&&(b.name=" "),b.media.forEach(function(a){null==a.payloads&&(a.payloads="")});var g=c.outerOrder||e,h=c.innerOrder||f,i=[];return g.forEach(function(c){a[c].forEach(function(a){a.name in b&&null!=b[a.name]?i.push(d(c,a,b)):a.push in b&&null!=b[a.push]&&b[a.push].forEach(function(b){i.push(d(c,a,b))})})}),b.media.forEach(function(b){i.push(d("m",a.m[0],b)),h.forEach(function(c){a[c].forEach(function(a){a.name in b&&null!=b[a.name]?i.push(d(c,a,b)):a.push in b&&null!=b[a.push]&&b[a.push].forEach(function(b){i.push(d(c,a,b))})})})}),i.join("\r\n")+"\r\n"}}();return fS.grammar=fV(),fS.write=b,fS.parse=a.parse,fS.parseParams=a.parseParams,fS.parseFmtpConfig=a.parseFmtpConfig,fS.parsePayloads=a.parsePayloads,fS.parseRemoteCandidates=a.parseRemoteCandidates,fS.parseImageAttributes=a.parseImageAttributes,fS.parseSimulcastStreamList=a.parseSimulcastStreamList,fS}();function fX(a,b,c){void 0===b&&(b=50),void 0===c&&(c={});var d,e,f,g=null!=(d=c.isImmediate)&&d,h=null!=(e=c.callback)&&e,i=c.maxWait,j=Date.now(),k=[],l=function(){var c=[].slice.call(arguments),d=this;return new Promise(function(e,l){var m=g&&void 0===f;if(void 0!==f&&clearTimeout(f),f=setTimeout(function(){if(f=void 0,j=Date.now(),!g){var b=a.apply(d,c);h&&h(b),k.forEach(function(a){return(0,a.resolve)(b)}),k=[]}},function(){if(void 0!==i){var a=Date.now()-j;if(a+b>=i)return i-a}return b}()),m){var n=a.apply(d,c);return h&&h(n),e(n)}k.push({resolve:e,reject:l})})};return l.cancel=function(a){void 0!==f&&clearTimeout(f),k.forEach(function(b){return(0,b.reject)(a)}),k=[]},l}let fY={NegotiationStarted:"negotiationStarted",NegotiationComplete:"negotiationComplete",RTPVideoPayloadTypes:"rtpVideoPayloadTypes"};class fZ extends du.EventEmitter{get pc(){return this._pc||(this._pc=this.createPC()),this._pc}constructor(a){var b;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.log=dl,this.ddExtID=0,this.latestOfferId=0,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=fX(a=>dr(this,void 0,void 0,function*(){this.emit(fY.NegotiationStarted);try{yield this.createAndSendOffer()}catch(b){if(a)a(b);else throw b}}),20),this.close=()=>{this._pc&&(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc=null)},this.log=dm(null!=(b=c.loggerName)?b:m.PCTransport),this.loggerOptions=c,this.config=a,this._pc=this.createPC(),this.offerLock=new S}createPC(){let a=new RTCPeerConnection(this.config);return a.onicecandidate=a=>{var b;a.candidate&&(null==(b=this.onIceCandidate)||b.call(this,a.candidate))},a.onicecandidateerror=a=>{var b;null==(b=this.onIceCandidateError)||b.call(this,a)},a.oniceconnectionstatechange=()=>{var b;null==(b=this.onIceConnectionStateChange)||b.call(this,a.iceConnectionState)},a.onsignalingstatechange=()=>{var b;null==(b=this.onSignalingStatechange)||b.call(this,a.signalingState)},a.onconnectionstatechange=()=>{var b;null==(b=this.onConnectionStateChange)||b.call(this,a.connectionState)},a.ondatachannel=a=>{var b;null==(b=this.onDataChannel)||b.call(this,a)},a.ontrack=a=>{var b;null==(b=this.onTrack)||b.call(this,a)},a}get logContext(){var a,b;return Object.assign({},null==(b=(a=this.loggerOptions).loggerContextCb)?void 0:b.call(a))}get isICEConnected(){return null!==this._pc&&("connected"===this.pc.iceConnectionState||"completed"===this.pc.iceConnectionState)}addIceCandidate(a){return dr(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(a);this.pendingCandidates.push(a)})}setRemoteDescription(a,b){return dr(this,void 0,void 0,function*(){var c;let d;if("answer"===a.type&&this.latestOfferId>0&&b>0&&b!==this.latestOfferId)return this.log.warn("ignoring answer for old offer",Object.assign(Object.assign({},this.logContext),{offerId:b,latestOfferId:this.latestOfferId})),!1;if("offer"===a.type){let{stereoMids:b,nackMids:c}=function(a){var b;let c=[],d=[],e=fW.parse(null!=(b=a.sdp)?b:""),f=0;return e.media.forEach(a=>{var b;let e=f0(a.mid);"audio"===a.type&&(a.rtp.some(a=>"opus"===a.codec&&(f=a.payload,!0)),(null==(b=a.rtcpFb)?void 0:b.some(a=>a.payload===f&&"nack"===a.type))&&d.push(e),a.fmtp.some(a=>a.payload===f&&(a.config.includes("sprop-stereo=1")&&c.push(e),!0)))}),{stereoMids:c,nackMids:d}}(a);this.remoteStereoMids=b,this.remoteNackMids=c}else if("answer"===a.type){let b=fW.parse(null!=(c=a.sdp)?c:"");b.media.forEach(a=>{let b=f0(a.mid);"audio"===a.type&&this.trackBitrates.some(c=>{if(!c.transceiver||b!=c.transceiver.mid)return!1;let d=0;if(a.rtp.some(a=>a.codec.toUpperCase()===c.codec.toUpperCase()&&(d=a.payload,!0)),0===d)return!0;let e=!1;for(let b of a.fmtp)if(b.payload===d){b.config=b.config.split(";").filter(a=>!a.includes("maxaveragebitrate")).join(";"),c.maxbr>0&&(b.config+=";maxaveragebitrate=".concat(1e3*c.maxbr)),e=!0;break}return!e&&c.maxbr>0&&a.fmtp.push({payload:d,config:"maxaveragebitrate=".concat(1e3*c.maxbr)}),!0})}),d=fW.write(b)}return yield this.setMungedSDP(a,d,!0),this.pendingCandidates.forEach(a=>{this.pc.addIceCandidate(a)}),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):"answer"===a.type&&(this.emit(fY.NegotiationComplete),a.sdp&&fW.parse(a.sdp).media.forEach(a=>{"video"===a.type&&this.emit(fY.RTPVideoPayloadTypes,a.rtp)})),!0})}createAndSendOffer(a){return dr(this,void 0,void 0,function*(){var b;let c=yield this.offerLock.lock();try{if(void 0===this.onOffer)return;if((null==a?void 0:a.iceRestart)&&(this.log.debug("restarting ICE",this.logContext),this.restartingIce=!0),this._pc&&"have-local-offer"===this._pc.signalingState){let b=this._pc.remoteDescription;if((null==a?void 0:a.iceRestart)&&b)yield this._pc.setRemoteDescription(b);else{this.renegotiate=!0;return}}else if(!this._pc||"closed"===this._pc.signalingState)return void this.log.warn("could not createOffer with closed peer connection",this.logContext);this.log.debug("starting to negotiate",this.logContext);let c=this.latestOfferId+1;this.latestOfferId=c;let d=yield this.pc.createOffer(a);this.log.debug("original offer",Object.assign({sdp:d.sdp},this.logContext));let e=fW.parse(null!=(b=d.sdp)?b:"");if(e.media.forEach(a=>{f_(a),"audio"===a.type?f$(a,["all"],[]):"video"===a.type&&this.trackBitrates.some(b=>{if(!a.msid||!b.cid||!a.msid.includes(b.cid))return!1;let c=0;if(a.rtp.some(a=>a.codec.toUpperCase()===b.codec.toUpperCase()&&(c=a.payload,!0)),0===c||(e1(b.codec)&&!e5()&&this.ensureVideoDDExtensionForSVC(a,e),!e1(b.codec)))return!0;let d=Math.round(.7*b.maxbr);for(let b of a.fmtp)if(b.payload===c){b.config.includes("x-google-start-bitrate")||(b.config+=";x-google-start-bitrate=".concat(d));break}return!0})}),this.latestOfferId>c)return void this.log.warn("latestOfferId mismatch",Object.assign(Object.assign({},this.logContext),{latestOfferId:this.latestOfferId,offerId:c}));yield this.setMungedSDP(d,fW.write(e)),this.onOffer(d,this.latestOfferId)}finally{c()}})}createAndSetAnswer(){return dr(this,void 0,void 0,function*(){var a;let b=yield this.pc.createAnswer(),c=fW.parse(null!=(a=b.sdp)?a:"");return c.media.forEach(a=>{f_(a),"audio"===a.type&&f$(a,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(b,fW.write(c)),b})}createDataChannel(a,b){return this.pc.createDataChannel(a,b)}addTransceiver(a,b){return this.pc.addTransceiver(a,b)}addTransceiverOfKind(a,b){return this.pc.addTransceiver(a,b)}addTrack(a){if(!this._pc)throw new ex("PC closed, cannot add track");return this._pc.addTrack(a)}setTrackCodecBitrate(a){this.trackBitrates.push(a)}setConfiguration(a){var b;if(!this._pc)throw new ex("PC closed, cannot configure");return null==(b=this._pc)?void 0:b.setConfiguration(a)}canRemoveTrack(){var a;return!!(null==(a=this._pc)?void 0:a.removeTrack)}removeTrack(a){var b;return null==(b=this._pc)?void 0:b.removeTrack(a)}getConnectionState(){var a,b;return null!=(b=null==(a=this._pc)?void 0:a.connectionState)?b:"closed"}getICEConnectionState(){var a,b;return null!=(b=null==(a=this._pc)?void 0:a.iceConnectionState)?b:"closed"}getSignallingState(){var a,b;return null!=(b=null==(a=this._pc)?void 0:a.signalingState)?b:"closed"}getTransceivers(){var a,b;return null!=(b=null==(a=this._pc)?void 0:a.getTransceivers())?b:[]}getSenders(){var a,b;return null!=(b=null==(a=this._pc)?void 0:a.getSenders())?b:[]}getLocalDescription(){var a;return null==(a=this._pc)?void 0:a.localDescription}getRemoteDescription(){var a;return null==(a=this.pc)?void 0:a.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return dr(this,void 0,void 0,function*(){var a;if(!this._pc)return;let b="",c=new Map,d=new Map;if((yield this._pc.getStats()).forEach(a=>{switch(a.type){case"transport":b=a.selectedCandidatePairId;break;case"candidate-pair":""===b&&a.selected&&(b=a.id),c.set(a.id,a);break;case"remote-candidate":d.set(a.id,"".concat(a.address,":").concat(a.port))}}),""===b)return;let e=null==(a=c.get(b))?void 0:a.remoteCandidateId;if(void 0!==e)return d.get(e)})}setMungedSDP(a,b,c){return dr(this,void 0,void 0,function*(){if(b){let d=a.sdp;a.sdp=b;try{this.log.debug("setting munged ".concat(c?"remote":"local"," description"),this.logContext),c?yield this.pc.setRemoteDescription(a):yield this.pc.setLocalDescription(a);return}catch(c){this.log.warn("not able to set ".concat(a.type,", falling back to unmodified sdp"),Object.assign(Object.assign({},this.logContext),{error:c,sdp:b})),a.sdp=d}}try{c?yield this.pc.setRemoteDescription(a):yield this.pc.setLocalDescription(a)}catch(e){let b="unknown error";e instanceof Error?b=e.message:"string"==typeof e&&(b=e);let d={error:b,sdp:a.sdp};throw!c&&this.pc.remoteDescription&&(d.remoteSdp=this.pc.remoteDescription),this.log.error("unable to set ".concat(a.type),Object.assign(Object.assign({},this.logContext),{fields:d})),new ey(b)}})}ensureVideoDDExtensionForSVC(a,b){var c,d;if(!(null==(c=a.ext)?void 0:c.some(a=>a.uri===eZ))){if(0===this.ddExtID){let a=0;b.media.forEach(b=>{var c;"video"===b.type&&(null==(c=b.ext)||c.forEach(b=>{b.value>a&&(a=b.value)}))}),this.ddExtID=a+1}null==(d=a.ext)||d.push({value:this.ddExtID,uri:eZ})}}}function f$(a,b,c){let d=f0(a.mid),e=0;a.rtp.some(a=>"opus"===a.codec&&(e=a.payload,!0)),e>0&&(a.rtcpFb||(a.rtcpFb=[]),c.includes(d)&&!a.rtcpFb.some(a=>a.payload===e&&"nack"===a.type)&&a.rtcpFb.push({payload:e,type:"nack"}),(b.includes(d)||1===b.length&&"all"===b[0])&&a.fmtp.some(a=>a.payload===e&&(a.config.includes("stereo=1")||(a.config+=";stereo=1"),!0)))}function f_(a){if(a.connection){let b=a.connection.ip.indexOf(":")>=0;(4===a.connection.version&&b||6===a.connection.version&&!b)&&(a.connection.ip="0.0.0.0",a.connection.version=4)}}function f0(a){return"number"==typeof a?a.toFixed(0):a}let f1={audioPreset:x.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:eK.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:"vp8",backupCodec:!0,preConnectBuffer:!1},f2={deviceId:{ideal:"default"},autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0,voiceIsolation:!0},f3={deviceId:{ideal:"default"},resolution:eI.h720.resolution},f4={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new dq,disconnectOnPageLeave:!0,webAudioMix:!1,singlePeerConnection:!0},f5={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3};!function(a){a[a.NEW=0]="NEW",a[a.CONNECTING=1]="CONNECTING",a[a.CONNECTED=2]="CONNECTED",a[a.FAILED=3]="FAILED",a[a.CLOSING=4]="CLOSING",a[a.CLOSED=5]="CLOSED"}(L||(L={}));class f6{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}get mode(){return this._mode}constructor(a,b,c){var d;this.peerConnectionTimeout=f5.peerConnectionTimeout,this.log=dl,this.updateState=()=>{var a,b;let c=this.state,d=this.requiredTransports.map(a=>a.getConnectionState());d.every(a=>"connected"===a)?this.state=L.CONNECTED:d.some(a=>"failed"===a)?this.state=L.FAILED:d.some(a=>"connecting"===a)?this.state=L.CONNECTING:d.every(a=>"closed"===a)?this.state=L.CLOSED:d.some(a=>"closed"===a)?this.state=L.CLOSING:d.every(a=>"new"===a)&&(this.state=L.NEW),c!==this.state&&(this.log.debug("pc state change: from ".concat(L[c]," to ").concat(L[this.state]),this.logContext),null==(a=this.onStateChange)||a.call(this,this.state,this.publisher.getConnectionState(),null==(b=this.subscriber)?void 0:b.getConnectionState()))},this.log=dm(null!=(d=c.loggerName)?d:m.PCManager),this.loggerOptions=c,this.isPublisherConnectionRequired="subscriber-primary"!==b,this.isSubscriberConnectionRequired="subscriber-primary"===b,this.publisher=new fZ(a,c),this._mode=b,"publisher-only"!==b&&(this.subscriber=new fZ(a,c),this.subscriber.onConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.subscriber.onIceCandidate=a=>{var b;null==(b=this.onIceCandidate)||b.call(this,a,cr.SUBSCRIBER)},this.subscriber.onDataChannel=a=>{var b;null==(b=this.onDataChannel)||b.call(this,a)},this.subscriber.onTrack=a=>{var b;null==(b=this.onTrack)||b.call(this,a)}),this.publisher.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=a=>{var b;null==(b=this.onIceCandidate)||b.call(this,a,cr.PUBLISHER)},this.publisher.onTrack=a=>{var b;null==(b=this.onTrack)||b.call(this,a)},this.publisher.onOffer=(a,b)=>{var c;null==(c=this.onPublisherOffer)||c.call(this,a,b)},this.state=L.NEW,this.connectionLock=new S,this.remoteOfferLock=new S}get logContext(){var a,b;return Object.assign({},null==(b=(a=this.loggerOptions).loggerContextCb)?void 0:b.call(a))}requirePublisher(){let a=!(arguments.length>0)||void 0===arguments[0]||arguments[0];this.isPublisherConnectionRequired=a,this.updateState()}createAndSendPublisherOffer(a){return this.publisher.createAndSendOffer(a)}setPublisherAnswer(a,b){return this.publisher.setRemoteDescription(a,b)}removeTrack(a){return this.publisher.removeTrack(a)}close(){return dr(this,void 0,void 0,function*(){var a;if(this.publisher&&"closed"!==this.publisher.getSignallingState()){let a=this.publisher;for(let b of a.getSenders())try{a.canRemoveTrack()&&a.removeTrack(b)}catch(a){this.log.warn("could not removeTrack",Object.assign(Object.assign({},this.logContext),{error:a}))}}yield Promise.all([this.publisher.close(),null==(a=this.subscriber)?void 0:a.close()]),this.updateState()})}triggerIceRestart(){return dr(this,void 0,void 0,function*(){this.subscriber&&(this.subscriber.restartingIce=!0),this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(a,b){return dr(this,void 0,void 0,function*(){var c;b===cr.PUBLISHER?yield this.publisher.addIceCandidate(a):yield null==(c=this.subscriber)?void 0:c.addIceCandidate(a)})}createSubscriberAnswerFromOffer(a,b){return dr(this,void 0,void 0,function*(){var c,d,e;this.log.debug("received server offer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:a.type,sdp:a.sdp,signalingState:null==(c=this.subscriber)?void 0:c.getSignallingState().toString()}));let f=yield this.remoteOfferLock.lock();try{if(!(yield null==(d=this.subscriber)?void 0:d.setRemoteDescription(a,b)))return;return yield null==(e=this.subscriber)?void 0:e.createAndSetAnswer()}finally{f()}})}updateConfiguration(a,b){var c;this.publisher.setConfiguration(a),null==(c=this.subscriber)||c.setConfiguration(a),b&&this.triggerIceRestart()}ensurePCTransportConnection(a,b){return dr(this,void 0,void 0,function*(){var c;let d=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&"connected"!==this.publisher.getConnectionState()&&"connecting"!==this.publisher.getConnectionState()&&(this.log.debug("negotiation required, start negotiating",this.logContext),this.publisher.negotiate()),yield Promise.all(null==(c=this.requiredTransports)?void 0:c.map(c=>this.ensureTransportConnected(c,a,b)))}finally{d()}})}negotiate(a){return dr(this,void 0,void 0,function*(){return new em((b,c)=>dr(this,void 0,void 0,function*(){let d=setTimeout(()=>{c(new ey("negotiation timed out"))},this.peerConnectionTimeout);a.signal.addEventListener("abort",()=>{clearTimeout(d),c(new ey("negotiation aborted"))}),this.publisher.once(fY.NegotiationStarted,()=>{a.signal.aborted||this.publisher.once(fY.NegotiationComplete,()=>{clearTimeout(d),b()})}),yield this.publisher.negotiate(a=>{clearTimeout(d),a instanceof Error?c(a):c(Error(String(a)))})}))})}addPublisherTransceiver(a,b){return this.publisher.addTransceiver(a,b)}addPublisherTransceiverOfKind(a,b){return this.publisher.addTransceiverOfKind(a,b)}getMidForReceiver(a){let b=(this.subscriber?this.subscriber.getTransceivers():this.publisher.getTransceivers()).find(b=>b.receiver===a);return null==b?void 0:b.mid}addPublisherTrack(a){return this.publisher.addTrack(a)}createPublisherDataChannel(a,b){return this.publisher.createDataChannel(a,b)}getConnectedAddress(a){return a===cr.PUBLISHER||a===cr.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){let a=[];return this.isPublisherConnectionRequired&&a.push(this.publisher),this.isSubscriberConnectionRequired&&this.subscriber&&a.push(this.subscriber),a}ensureTransportConnected(a,b){return dr(this,arguments,void 0,function(a,b){var c=this;let d=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.peerConnectionTimeout;return function*(){if("connected"!==a.getConnectionState())return new Promise((a,e)=>dr(c,void 0,void 0,function*(){let c=()=>{this.log.warn("abort transport connection",this.logContext),eD.clearTimeout(f),e(et.cancelled("room connection has been cancelled"))};(null==b?void 0:b.signal.aborted)&&c(),null==b||b.signal.addEventListener("abort",c);let f=eD.setTimeout(()=>{null==b||b.signal.removeEventListener("abort",c),e(et.internal("could not establish pc connection"))},d);for(;this.state!==L.CONNECTED;)if(yield e$(50),null==b?void 0:b.signal.aborted)return void e(et.cancelled("room connection has been cancelled"));eD.clearTimeout(f),null==b||b.signal.removeEventListener("abort",c),a()}))}()})}}class f7{static fetchRegionSettings(a,b,c){return dr(this,void 0,void 0,function*(){let d=yield f7.fetchLock.lock();try{var e;let d=yield fetch("".concat((e=a,"".concat(e.protocol.replace("ws","http"),"//").concat(e.host,"/settings")),"/regions"),{headers:{authorization:"Bearer ".concat(b)},signal:c});if(d.ok){let a=function(a){var b;let c=a.get("Cache-Control");if(c){let a=null==(b=c.match(/(?:^|[,\s])max-age=(\d+)/))?void 0:b[1];if(a)return parseInt(a,10)}}(d.headers);return{regionSettings:yield d.json(),updatedAtInMs:Date.now(),maxAgeInMs:a?1e3*a:5e3}}if(401===d.status)throw et.notAllowed("Could not fetch region settings: ".concat(d.statusText),d.status);throw et.internal("Could not fetch region settings: ".concat(d.statusText))}catch(a){if(a instanceof et)throw a;if(null==c?void 0:c.aborted)throw et.cancelled("Region fetching was aborted");throw et.serverUnreachable("Could not fetch region settings, ".concat(a instanceof Error?"".concat(a.name,": ").concat(a.message):a))}finally{d()}})}static scheduleRefetch(a,b,c){return dr(this,void 0,void 0,function*(){clearTimeout(f7.settingsTimeouts.get(a.hostname)),f7.settingsTimeouts.set(a.hostname,setTimeout(()=>dr(this,void 0,void 0,function*(){try{let c=yield f7.fetchRegionSettings(a,b);f7.updateCachedRegionSettings(a,b,c)}catch(d){if(d instanceof et&&d.reason===p.NotAllowed)return void dl.debug("token is not valid, cancelling auto region refresh");dl.debug("auto refetching of region settings failed",{error:d}),f7.scheduleRefetch(a,b,c)}}),c))})}static updateCachedRegionSettings(a,b,c){f7.cache.set(a.hostname,c),f7.scheduleRefetch(a,b,c.maxAgeInMs)}static stopRefetch(a){let b=f7.settingsTimeouts.get(a);b&&(clearTimeout(b),f7.settingsTimeouts.delete(a))}static scheduleCleanup(a){let b=f7.connectionTrackers.get(a);b&&(b.cleanupTimeout&&clearTimeout(b.cleanupTimeout),b.cleanupTimeout=setTimeout(()=>{let b=f7.connectionTrackers.get(a);b&&0===b.connectionCount&&(dl.debug("stopping region refetch after disconnect delay",{hostname:a}),f7.stopRefetch(a)),b&&(b.cleanupTimeout=void 0)},3e4))}static cancelCleanup(a){let b=f7.connectionTrackers.get(a);(null==b?void 0:b.cleanupTimeout)&&(clearTimeout(b.cleanupTimeout),b.cleanupTimeout=void 0)}notifyConnected(){let a=this.serverUrl.hostname,b=f7.connectionTrackers.get(a);b||(b={connectionCount:0},f7.connectionTrackers.set(a,b)),b.connectionCount++,f7.cancelCleanup(a)}notifyDisconnected(){let a=this.serverUrl.hostname,b=f7.connectionTrackers.get(a);b&&(b.connectionCount=Math.max(0,b.connectionCount-1),0===b.connectionCount&&f7.scheduleCleanup(a))}constructor(a,b){this.attemptedRegions=[],this.serverUrl=new URL(a),this.token=b}updateToken(a){this.token=a}isCloud(){return fa(this.serverUrl)}getServerUrl(){return this.serverUrl}fetchRegionSettings(a){return dr(this,void 0,void 0,function*(){return f7.fetchRegionSettings(this.serverUrl,this.token,a)})}getNextBestRegionUrl(a){return dr(this,void 0,void 0,function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");let b=f7.cache.get(this.serverUrl.hostname);(!b||Date.now()-b.updatedAtInMs>b.maxAgeInMs)&&(b=yield this.fetchRegionSettings(a),f7.updateCachedRegionSettings(this.serverUrl,this.token,b));let c=b.regionSettings.regions.filter(a=>!this.attemptedRegions.find(b=>b.url===a.url));if(!(c.length>0))return null;{let a=c[0];return this.attemptedRegions.push(a),dl.debug("next region: ".concat(a.region)),a.url}})}resetAttempts(){this.attemptedRegions=[]}setServerReportedRegions(a){f7.updateCachedRegionSettings(this.serverUrl,this.token,a)}}f7.cache=new Map,f7.settingsTimeouts=new Map,f7.connectionTrackers=new Map,f7.fetchLock=new S;class f8 extends Error{constructor(a,b,c){super(b),this.code=a,this.message=ga(b,f8.MAX_MESSAGE_BYTES),this.data=c?ga(c,f8.MAX_DATA_BYTES):void 0}static fromProto(a){return new f8(a.code,a.message,a.data)}toProto(){return new bO({code:this.code,message:this.message,data:this.data})}static builtIn(a,b){return new f8(f8.ErrorCode[a],f8.ErrorMessage[a],b)}}function f9(a){return new TextEncoder().encode(a).length}function ga(a,b){if(f9(a)<=b)return a;let c=0,d=a.length,e=new TextEncoder;for(;c<d;){let f=Math.floor((c+d+1)/2);e.encode(a.slice(0,f)).length<=b?c=f:d=f-1}return a.slice(0,c)}function gb(a,b){let c,d;return b?("bytesReceived"in a?(c=a.bytesReceived,d=b.bytesReceived):"bytesSent"in a&&(c=a.bytesSent,d=b.bytesSent),void 0===c||void 0===d||void 0===a.timestamp||void 0===b.timestamp)?0:(c-d)*8e3/(a.timestamp-b.timestamp):0}f8.MAX_MESSAGE_BYTES=256,f8.MAX_DATA_BYTES=15360,f8.ErrorCode={APPLICATION_ERROR:1500,CONNECTION_TIMEOUT:1501,RESPONSE_TIMEOUT:1502,RECIPIENT_DISCONNECTED:1503,RESPONSE_PAYLOAD_TOO_LARGE:1504,SEND_FAILED:1505,UNSUPPORTED_METHOD:1400,RECIPIENT_NOT_FOUND:1401,REQUEST_PAYLOAD_TOO_LARGE:1402,UNSUPPORTED_SERVER:1403,UNSUPPORTED_VERSION:1404},f8.ErrorMessage={APPLICATION_ERROR:"Application error in method handler",CONNECTION_TIMEOUT:"Connection timeout",RESPONSE_TIMEOUT:"Response timeout",RECIPIENT_DISCONNECTED:"Recipient disconnected",RESPONSE_PAYLOAD_TOO_LARGE:"Response payload too large",SEND_FAILED:"Failed to send",UNSUPPORTED_METHOD:"Method not supported at destination",RECIPIENT_NOT_FOUND:"Recipient not found",REQUEST_PAYLOAD_TOO_LARGE:"Request payload too large",UNSUPPORTED_SERVER:"RPC not supported by server",UNSUPPORTED_VERSION:"Unsupported RPC version"};let gc="undefined"!=typeof MediaRecorder;class gd{constructor(){throw Error("MediaRecorder is not available in this environment")}}let ge=gc?MediaRecorder:gd;class gf extends ge{constructor(a,b){let c,d;if(!gc)throw Error("MediaRecorder is not available in this environment");super(new MediaStream([a.mediaStreamTrack]),b);let e=()=>{this.removeEventListener("dataavailable",c),this.removeEventListener("stop",e),this.removeEventListener("error",f),null==d||d.close(),d=void 0},f=a=>{null==d||d.error(a),this.removeEventListener("dataavailable",c),this.removeEventListener("stop",e),this.removeEventListener("error",f),d=void 0};this.byteStream=new ReadableStream({start:a=>{d=a,c=b=>dr(this,void 0,void 0,function*(){let c;if(b.data.arrayBuffer)c=new Uint8Array((yield b.data.arrayBuffer()));else if(b.data.byteArray)c=b.data.byteArray;else throw Error("no data available!");void 0!==d&&a.enqueue(c)}),this.addEventListener("dataavailable",c)},cancel:()=>{e()}}),this.addEventListener("stop",e),this.addEventListener("error",f)}}class gg extends eW{get sender(){return this._sender}set sender(a){this._sender=a}get constraints(){return this._constraints}get hasPreConnectBuffer(){return!!this.localTrackRecorder}constructor(a,b,c){let d=arguments.length>3&&void 0!==arguments[3]&&arguments[3],e=arguments.length>4?arguments[4]:void 0;super(a,b,e),this.manuallyStopped=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch(()=>this.log.debug("track mute bounce got cancelled by an unmute event",this.logContext)),this.debouncedTrackMuteHandler=fX(()=>dr(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>dr(this,void 0,void 0,function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()}),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(v.Ended,this)},this.reacquireTrack=!1,this.providedByUser=d,this.muteLock=new S,this.pauseUpstreamLock=new S,this.trackChangeLock=new S,this.trackChangeLock.lock().then(b=>dr(this,void 0,void 0,function*(){try{yield this.setMediaStreamTrack(a,!0)}finally{b()}})),this._constraints=a.getConstraints(),c&&(this._constraints=c)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==eW.Kind.Video)return;let{width:a,height:b}=this._mediaStreamTrack.getSettings();if(a&&b)return{width:a,height:b}}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var a,b;return null!=(b=null==(a=this.processor)?void 0:a.processedTrack)?b:this._mediaStreamTrack}get isLocal(){return!0}getSourceTrackSettings(){return this._mediaStreamTrack.getSettings()}setMediaStreamTrack(a,b){return dr(this,void 0,void 0,function*(){var c;let d;if(a!==this._mediaStreamTrack||b){if(this._mediaStreamTrack&&(this.attachedElements.forEach(a=>{eY(this._mediaStreamTrack,a)}),this.debouncedTrackMuteHandler.cancel("new-track"),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent)),this.mediaStream=new MediaStream([a]),a&&(a.addEventListener("ended",this.handleEnded),a.addEventListener("mute",this.handleTrackMuteEvent),a.addEventListener("unmute",this.handleTrackUnmuteEvent),this._constraints=a.getConstraints()),this.processor&&a){if(this.log.debug("restarting processor",this.logContext),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");this.processorElement&&(eX(a,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:a,kind:this.kind,element:this.processorElement}),d=this.processor.processedTrack}this.sender&&(null==(c=this.sender.transport)?void 0:c.state)!=="closed"&&(yield this.sender.replaceTrack(null!=d?d:a)),this.providedByUser||this._mediaStreamTrack===a||this._mediaStreamTrack.stop(),this._mediaStreamTrack=a,a&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(b=>{eX(null!=d?d:a,b)}))}})}waitForDimensions(){return dr(this,arguments,void 0,function(){var a=this;let b=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return function*(){var c;if(a.kind===eW.Kind.Audio)throw Error("cannot get dimensions for audio tracks");(null==(c=eo())?void 0:c.os)==="iOS"&&(yield e$(10));let d=Date.now();for(;Date.now()-d<b;){let b=a.dimensions;if(b)return b;yield e$(50)}throw new ev("unable to get track dimensions after timeout")}()})}setDeviceId(a){return dr(this,void 0,void 0,function*(){return this._constraints.deviceId===a&&this._mediaStreamTrack.getSettings().deviceId===fp(a)||(this._constraints.deviceId=a,!!this.isMuted||(yield this.restartTrack(),fp(a)===this._mediaStreamTrack.getSettings().deviceId))})}getDeviceId(){return dr(this,arguments,void 0,function(){var a=this;let b=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){if(a.source===eW.Source.ScreenShare)return;let{deviceId:c,groupId:d}=a._mediaStreamTrack.getSettings(),e=a.kind===eW.Kind.Audio?"audioinput":"videoinput";return b?fJ.getInstance().normalizeDeviceId(e,c,d):c}()})}mute(){return dr(this,void 0,void 0,function*(){return this.setTrackMuted(!0),this})}unmute(){return dr(this,void 0,void 0,function*(){return this.setTrackMuted(!1),this})}replaceTrack(a,b){return dr(this,void 0,void 0,function*(){let c=yield this.trackChangeLock.lock();try{let c,d;if(!this.sender)throw new ev("unable to replace an unpublished track");return"boolean"==typeof b?c=b:void 0!==b&&(c=b.userProvidedTrack,d=b.stopProcessor),this.providedByUser=null==c||c,this.log.debug("replace MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(a),d&&this.processor&&(yield this.internalStopProcessor()),this}finally{c()}})}restart(a){return dr(this,void 0,void 0,function*(){this.manuallyStopped=!1;let b=yield this.trackChangeLock.lock();try{a||(a=this._constraints);let{deviceId:b,facingMode:c}=a,d=function(a,b){var c={};for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&0>b.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"==typeof Object.getOwnPropertySymbols)for(var e=0,d=Object.getOwnPropertySymbols(a);e<d.length;e++)0>b.indexOf(d[e])&&Object.prototype.propertyIsEnumerable.call(a,d[e])&&(c[d[e]]=a[d[e]]);return c}(a,["deviceId","facingMode"]);this.log.debug("restarting track with constraints",Object.assign(Object.assign({},this.logContext),{constraints:a}));let e={audio:!1,video:!1};this.kind===eW.Kind.Video?e.video=!b&&!c||{deviceId:b,facingMode:c}:e.audio=!b||Object.assign({deviceId:b},d),this.attachedElements.forEach(a=>{eY(this.mediaStreamTrack,a)}),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();let f=(yield navigator.mediaDevices.getUserMedia(e)).getTracks()[0];return this.kind===eW.Kind.Video&&(yield f.applyConstraints(d)),f.addEventListener("ended",this.handleEnded),this.log.debug("re-acquired MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(f),this._constraints=a,this.emit(v.Restarted,this),this.manuallyStopped&&(this.log.warn("track was stopped during a restart, stopping restarted track",this.logContext),this.stop()),this}finally{b()}})}setTrackMuted(a){this.log.debug("setting ".concat(this.kind," track ").concat(a?"muted":"unmuted"),this.logContext),(this.isMuted!==a||this._mediaStreamTrack.enabled===a)&&(this.isMuted=a,this._mediaStreamTrack.enabled=!a,this.emit(a?v.Muted:v.Unmuted,this))}get needsReAcquisition(){return"live"!==this._mediaStreamTrack.readyState||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let a=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return dr(this,void 0,void 0,function*(){yield a.handleAppVisibilityChanged.call(this),e7()&&(this.log.debug("visibility changed, is in Background: ".concat(this.isInBackground),this.logContext),this.isInBackground||!this.needsReAcquisition||this.isUserProvided||this.isMuted||(this.log.debug("track needs to be reacquired, restarting ".concat(this.source),this.logContext),yield this.restart(),this.reacquireTrack=!1))})}stop(){var a;this.manuallyStopped=!0,super.stop(),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),null==(a=this.processor)||a.destroy(),this.processor=void 0}pauseUpstream(){return dr(this,void 0,void 0,function*(){var a;let b=yield this.pauseUpstreamLock.lock();try{if(!0===this._isUpstreamPaused)return;if(!this.sender)return void this.log.warn("unable to pause upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!0,this.emit(v.UpstreamPaused,this);let b=eo();if((null==b?void 0:b.name)==="Safari"&&0>ff(b.version,"12.0"))throw new eu("pauseUpstream is not supported on Safari < 12.");(null==(a=this.sender.transport)?void 0:a.state)!=="closed"&&(yield this.sender.replaceTrack(null))}finally{b()}})}resumeUpstream(){return dr(this,void 0,void 0,function*(){var a;let b=yield this.pauseUpstreamLock.lock();try{if(!1===this._isUpstreamPaused)return;if(!this.sender)return void this.log.warn("unable to resume upstream for an unpublished track",this.logContext);this._isUpstreamPaused=!1,this.emit(v.UpstreamResumed,this),(null==(a=this.sender.transport)?void 0:a.state)!=="closed"&&(yield this.sender.replaceTrack(this.mediaStreamTrack))}finally{b()}})}getRTCStatsReport(){return dr(this,void 0,void 0,function*(){var a;if(null==(a=this.sender)?void 0:a.getStats)return yield this.sender.getStats()})}setProcessor(a){return dr(this,arguments,void 0,function(a){var b=this;let c=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var d;let e=yield b.trackChangeLock.lock();try{b.log.debug("setting up processor",b.logContext);let e=document.createElement(b.kind),f={kind:b.kind,track:b._mediaStreamTrack,element:e,audioContext:b.audioContext};if(yield a.init(f),b.log.debug("processor initialized",b.logContext),b.processor&&(yield b.internalStopProcessor()),"unknown"===b.kind)throw TypeError("cannot set processor on track of unknown kind");if(eX(b._mediaStreamTrack,e),e.muted=!0,e.play().catch(a=>{a instanceof DOMException&&"AbortError"===a.name?(b.log.warn("failed to play processor element, retrying",Object.assign(Object.assign({},b.logContext),{error:a})),setTimeout(()=>{e.play().catch(a=>{b.log.error("failed to play processor element",Object.assign(Object.assign({},b.logContext),{err:a}))})},100)):b.log.error("failed to play processor element",Object.assign(Object.assign({},b.logContext),{error:a}))}),b.processor=a,b.processorElement=e,b.processor.processedTrack){for(let a of b.attachedElements)a!==b.processorElement&&c&&(eY(b._mediaStreamTrack,a),eX(b.processor.processedTrack,a));yield null==(d=b.sender)?void 0:d.replaceTrack(b.processor.processedTrack)}b.emit(v.TrackProcessorUpdate,b.processor)}finally{e()}}()})}getProcessor(){return this.processor}stopProcessor(){return dr(this,arguments,void 0,function(){var a=this;let b=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){let c=yield a.trackChangeLock.lock();try{yield a.internalStopProcessor(b)}finally{c()}}()})}internalStopProcessor(){return dr(this,arguments,void 0,function(){var a=this;let b=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){var c,d;a.processor&&(a.log.debug("stopping processor",a.logContext),null==(c=a.processor.processedTrack)||c.stop(),yield a.processor.destroy(),a.processor=void 0,b||(null==(d=a.processorElement)||d.remove(),a.processorElement=void 0),yield a._mediaStreamTrack.applyConstraints(a._constraints),yield a.setMediaStreamTrack(a._mediaStreamTrack,!0),a.emit(v.TrackProcessorUpdate))}()})}startPreConnectBuffer(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100;if(!gc)return void this.log.warn("MediaRecorder is not available, cannot start preconnect buffer",this.logContext);if(this.localTrackRecorder)return void this.log.warn("preconnect buffer already started");{let a="audio/webm;codecs=opus";MediaRecorder.isTypeSupported(a)||(a="video/mp4"),this.localTrackRecorder=new gf(this,{mimeType:a})}this.localTrackRecorder.start(a),this.autoStopPreConnectBuffer=setTimeout(()=>{this.log.warn("preconnect buffer timed out, stopping recording automatically",this.logContext),this.stopPreConnectBuffer()},1e4)}stopPreConnectBuffer(){clearTimeout(this.autoStopPreConnectBuffer),this.localTrackRecorder&&(this.localTrackRecorder.stop(),this.localTrackRecorder=void 0)}getPreConnectBuffer(){var a;return null==(a=this.localTrackRecorder)?void 0:a.byteStream}getPreConnectBufferMimeType(){var a;return null==(a=this.localTrackRecorder)?void 0:a.mimeType}}class gh extends gg{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(a,b){let c=!(arguments.length>2)||void 0===arguments[2]||arguments[2],d=arguments.length>3?arguments[3]:void 0,e=arguments.length>4?arguments[4]:void 0;super(a,eW.Kind.Audio,b,c,e),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>dr(this,void 0,void 0,function*(){let a;if(!this.sender){this._currentBitrate=0;return}try{a=yield this.getSenderStats()}catch(a){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:a}));return}a&&this.prevStats&&(this._currentBitrate=gb(a,this.prevStats)),this.prevStats=a}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug("Krisp noise filter enabled",this.logContext),this.emit(v.AudioTrackFeatureUpdate,this,bn.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug("Krisp noise filter disabled",this.logContext),this.emit(v.AudioTrackFeatureUpdate,this,bn.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=d,this.checkForSilence()}mute(){let a=Object.create(null,{mute:{get:()=>super.mute}});return dr(this,void 0,void 0,function*(){let b=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source===eW.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug("stopping mic track",this.logContext),this._mediaStreamTrack.stop()),yield a.mute.call(this),this}finally{b()}})}unmute(){let a=Object.create(null,{unmute:{get:()=>super.unmute}});return dr(this,void 0,void 0,function*(){let b=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;let b=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==fp(this._constraints.deviceId);return this.source===eW.Source.Microphone&&(this.stopOnMute||"ended"===this._mediaStreamTrack.readyState||b)&&!this.isUserProvided&&(this.log.debug("reacquiring mic track",this.logContext),yield this.restartTrack()),yield a.unmute.call(this),this}finally{b()}})}restartTrack(a){return dr(this,void 0,void 0,function*(){let b;if(a){let c=eN({audio:a});"boolean"!=typeof c.audio&&(b=c.audio)}yield this.restart(b)})}restart(a){let b=Object.create(null,{restart:{get:()=>super.restart}});return dr(this,void 0,void 0,function*(){let c=yield b.restart.call(this,a);return this.checkForSilence(),c})}startMonitor(){e8()&&(this.monitorInterval||(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3)))}setProcessor(a){return dr(this,void 0,void 0,function*(){var b;let c=yield this.trackChangeLock.lock();try{if(!e9()&&!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");this.processor&&(yield this.internalStopProcessor());let c={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};this.log.debug("setting up audio processor ".concat(a.name),this.logContext),yield a.init(c),this.processor=a,this.processor.processedTrack&&(yield null==(b=this.sender)?void 0:b.replaceTrack(this.processor.processedTrack),this.processor.processedTrack.addEventListener("enable-lk-krisp-noise-filter",this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener("disable-lk-krisp-noise-filter",this.handleKrispNoiseFilterDisable)),this.emit(v.TrackProcessorUpdate,this.processor)}finally{c()}})}setAudioContext(a){this.audioContext=a}getSenderStats(){return dr(this,void 0,void 0,function*(){var a;let b;if(null==(a=this.sender)?void 0:a.getStats)return(yield this.sender.getStats()).forEach(a=>{"outbound-rtp"===a.type&&(b={type:"audio",streamId:a.id,packetsSent:a.packetsSent,packetsLost:a.packetsLost,bytesSent:a.bytesSent,timestamp:a.timestamp,roundTripTime:a.roundTripTime,jitter:a.jitter})}),b})}checkForSilence(){return dr(this,void 0,void 0,function*(){let a=yield eO(this);return a&&(this.isMuted||this.log.debug("silence detected on local audio track",this.logContext),this.emit(v.AudioSilenceDetected)),a})}}let gi=Object.values(eI),gj=Object.values(eJ),gk=Object.values(eK),gl=[eI.h180,eI.h360],gm=[eJ.h180,eJ.h360],gn=["q","h","f"];function go(a,b,c,d){var e,f,g;let h,i=null==d?void 0:d.videoEncoding;a&&(i=null==d?void 0:d.screenShareEncoding);let j=null==d?void 0:d.simulcast,k=null==d?void 0:d.scalabilityMode,l=null==d?void 0:d.videoCodec;if(!i&&!j&&!k||!b||!c)return[{}];i||(i=function(a,b,c,d){let e=function(a,b,c){if(a)return gk;let d=b>c?b/c:c/b;return Math.abs(d-16/9)<Math.abs(d-4/3)?gi:gj}(a,b,c),{encoding:f}=e[0],g=Math.max(b,c);for(let a=0;a<e.length;a+=1){let b=e[a];if(f=b.encoding,b.width>=g)break}if(d)switch(d){case"av1":case"h265":(f=Object.assign({},f)).maxBitrate=.7*f.maxBitrate;break;case"vp9":(f=Object.assign({},f)).maxBitrate=.85*f.maxBitrate}return f}(a,b,c,l),dl.debug("using video encoding",i));let m=i.maxFramerate,n=new eE(b,c,i.maxBitrate,i.maxFramerate,i.priority);if(k&&e1(l)){let a=new gs(k),b=[];if(a.spatial>3)throw Error("unsupported scalabilityMode: ".concat(k));let c=eo();if(e6()||e9()||(null==c?void 0:c.name)==="Chrome"&&0>ff(null==c?void 0:c.version,"113")){let d="h"==a.suffix?2:3,e=((g=c)||(g=eo()),(null==g?void 0:g.name)==="Safari"&&ff(g.version,"18.3")>0||(null==g?void 0:g.os)==="iOS"&&!!(null==g?void 0:g.osVersion)&&ff(g.osVersion,"18.3")>0);for(let c=0;c<a.spatial;c+=1)b.push({rid:gn[2-c],maxBitrate:i.maxBitrate/Math.pow(d,c),maxFramerate:n.encoding.maxFramerate,scaleResolutionDownBy:e?Math.pow(2,c):void 0});b[0].scalabilityMode=k}else b.push({maxBitrate:i.maxBitrate,maxFramerate:n.encoding.maxFramerate,scalabilityMode:k});return n.encoding.priority&&(b[0].priority=n.encoding.priority,b[0].networkPriority=n.encoding.priority),dl.debug("using svc encoding",{encodings:b}),b}if(!j)return[i];let o=[];if((o=a?null!=(e=gr(null==d?void 0:d.screenShareSimulcastLayers))?e:gp(a,n):null!=(f=gr(null==d?void 0:d.videoSimulcastLayers))?f:gp(a,n)).length>0){let a=o[0];o.length>1&&([,h]=o);let d=Math.max(b,c);if(d>=960&&h)return gq(b,c,[a,h,n],m);if(d>=480)return gq(b,c,[a,n],m)}return gq(b,c,[n])}function gp(a,b){if(a)return[{scaleResolutionDownBy:2,fps:b.encoding.maxFramerate}].map(a=>{var c,d;return new eE(Math.floor(b.width/a.scaleResolutionDownBy),Math.floor(b.height/a.scaleResolutionDownBy),Math.max(15e4,Math.floor(b.encoding.maxBitrate/(Math.pow(a.scaleResolutionDownBy,2)*((null!=(c=b.encoding.maxFramerate)?c:30)/(null!=(d=a.fps)?d:30))))),a.fps,b.encoding.priority)});let{width:c,height:d}=b,e=c>d?c/d:d/c;return Math.abs(e-16/9)<Math.abs(e-4/3)?gl:gm}function gq(a,b,c,d){let e=[];if(c.forEach((c,f)=>{if(f>=gn.length)return;let g=Math.min(a,b),h={rid:gn[f],scaleResolutionDownBy:Math.max(1,g/Math.min(c.width,c.height)),maxBitrate:c.encoding.maxBitrate},i=d&&c.encoding.maxFramerate?Math.min(d,c.encoding.maxFramerate):c.encoding.maxFramerate;i&&(h.maxFramerate=i);let j=e3()||0===f;c.encoding.priority&&j&&(h.priority=c.encoding.priority,h.networkPriority=c.encoding.priority),e.push(h)}),e9()&&"ios"===fd()){let a;e.forEach(b=>{a?b.maxFramerate&&b.maxFramerate>a&&(a=b.maxFramerate):a=b.maxFramerate});let b=!0;e.forEach(c=>{var d;c.maxFramerate!=a&&(b&&(b=!1,dl.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),dl.info('Setting framerate of encoding "'.concat(null!=(d=c.rid)?d:"",'" to ').concat(a)),c.maxFramerate=a)})}return e}function gr(a){if(a)return a.sort((a,b)=>{let{encoding:c}=a,{encoding:d}=b;return c.maxBitrate>d.maxBitrate?1:c.maxBitrate<d.maxBitrate?-1:c.maxBitrate===d.maxBitrate&&c.maxFramerate&&d.maxFramerate?c.maxFramerate>d.maxFramerate?1:-1:0})}class gs{constructor(a){let b=a.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!b)throw Error("invalid scalability mode");if(this.spatial=parseInt(b[1]),this.temporal=parseInt(b[2]),b.length>3)switch(b[3]){case"h":case"_KEY":case"_KEY_SHIFT":this.suffix=b[3]}}toString(){var a;return"L".concat(this.spatial,"T").concat(this.temporal).concat(null!=(a=this.suffix)?a:"")}}class gt extends gg{get sender(){return this._sender}set sender(a){this._sender=a,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(a,b){let c=!(arguments.length>2)||void 0===arguments[2]||arguments[2],d=arguments.length>3?arguments[3]:void 0;super(a,eW.Kind.Video,b,c,d),this.simulcastCodecs=new Map,this.degradationPreference="balanced",this.isCpuConstrained=!1,this.optimizeForPerformance=!1,this.monitorSender=()=>dr(this,void 0,void 0,function*(){let a;if(!this.sender){this._currentBitrate=0;return}try{a=yield this.getSenderStats()}catch(a){this.log.error("could not get video sender stats",Object.assign(Object.assign({},this.logContext),{error:a}));return}let b=new Map(a.map(a=>[a.rid,a])),c=a.some(a=>"cpu"===a.qualityLimitationReason);if(c!==this.isCpuConstrained&&(this.isCpuConstrained=c,this.isCpuConstrained&&this.emit(v.CpuConstrained)),this.prevStats){let a=0;b.forEach((b,c)=>{var d;let e=null==(d=this.prevStats)?void 0:d.get(c);a+=gb(b,e)}),this._currentBitrate=a}this.prevStats=b}),this.senderLock=new S}get isSimulcast(){return!!this.sender&&!!(this.sender.getParameters().encodings.length>1)}startMonitor(a){var b;if(this.signalClient=a,!e8())return;let c=null==(b=this.sender)?void 0:b.getParameters();c&&(this.encodings=c.encodings),this.monitorInterval||(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(a=>{a.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){let a=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return dr(this,void 0,void 0,function*(){yield a.pauseUpstream.call(this);try{for(var b,c,d,e,f,g,h=!0,i=ds(this.simulcastCodecs.values());!(b=(g=yield i.next()).done);h=!0)e=g.value,h=!1,yield null==(f=e.sender)?void 0:f.replaceTrack(null)}catch(a){c={error:a}}finally{try{!h&&!b&&(d=i.return)&&(yield d.call(i))}finally{if(c)throw c.error}}})}resumeUpstream(){let a=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return dr(this,void 0,void 0,function*(){yield a.resumeUpstream.call(this);try{for(var b,c,d,e,f,g,h=!0,i=ds(this.simulcastCodecs.values());!(b=(g=yield i.next()).done);h=!0)e=g.value,h=!1,yield null==(f=e.sender)?void 0:f.replaceTrack(e.mediaStreamTrack)}catch(a){c={error:a}}finally{try{!h&&!b&&(d=i.return)&&(yield d.call(i))}finally{if(c)throw c.error}}})}mute(){let a=Object.create(null,{mute:{get:()=>super.mute}});return dr(this,void 0,void 0,function*(){let b=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source!==eW.Source.Camera||this.isUserProvided||(this.log.debug("stopping camera track",this.logContext),this._mediaStreamTrack.stop()),yield a.mute.call(this),this}finally{b()}})}unmute(){let a=Object.create(null,{unmute:{get:()=>super.unmute}});return dr(this,void 0,void 0,function*(){let b=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;return this.source!==eW.Source.Camera||this.isUserProvided||(this.log.debug("reacquiring camera track",this.logContext),yield this.restartTrack()),yield a.unmute.call(this),this}finally{b()}})}setTrackMuted(a){for(let b of(super.setTrackMuted(a),this.simulcastCodecs.values()))b.mediaStreamTrack.enabled=!a}getSenderStats(){return dr(this,void 0,void 0,function*(){var a;if(!(null==(a=this.sender)?void 0:a.getStats))return[];let b=[],c=yield this.sender.getStats();return c.forEach(a=>{var d;if("outbound-rtp"===a.type){let e={type:"video",streamId:a.id,frameHeight:a.frameHeight,frameWidth:a.frameWidth,framesPerSecond:a.framesPerSecond,framesSent:a.framesSent,firCount:a.firCount,pliCount:a.pliCount,nackCount:a.nackCount,packetsSent:a.packetsSent,bytesSent:a.bytesSent,qualityLimitationReason:a.qualityLimitationReason,qualityLimitationDurations:a.qualityLimitationDurations,qualityLimitationResolutionChanges:a.qualityLimitationResolutionChanges,rid:null!=(d=a.rid)?d:a.id,retransmittedPacketsSent:a.retransmittedPacketsSent,targetBitrate:a.targetBitrate,timestamp:a.timestamp},f=c.get(a.remoteId);f&&(e.jitter=f.jitter,e.packetsLost=f.packetsLost,e.roundTripTime=f.roundTripTime),b.push(e)}}),b.sort((a,b)=>{var c,d;return(null!=(c=b.frameWidth)?c:0)-(null!=(d=a.frameWidth)?d:0)}),b})}setPublishingQuality(a){let b=[];for(let c=y.LOW;c<=y.HIGH;c+=1)b.push(new cV({quality:c,enabled:c<=a}));this.log.debug("setting publishing quality. max quality ".concat(a),this.logContext),this.setPublishingLayers(e1(this.codec),b)}restartTrack(a){return dr(this,void 0,void 0,function*(){let b;if(a){let c=eN({video:a});"boolean"!=typeof c.video&&(b=c.video)}yield this.restart(b),this.isCpuConstrained=!1;try{for(var c,d,e,f,g,h,i=!0,j=ds(this.simulcastCodecs.values());!(c=(h=yield j.next()).done);i=!0)f=h.value,i=!1,f.sender&&(null==(g=f.sender.transport)?void 0:g.state)!=="closed"&&(f.mediaStreamTrack=this.mediaStreamTrack.clone(),yield f.sender.replaceTrack(f.mediaStreamTrack))}catch(a){d={error:a}}finally{try{!i&&!c&&(e=j.return)&&(yield e.call(j))}finally{if(d)throw d.error}}})}setProcessor(a){let b=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return dr(this,arguments,void 0,function(a){var c=this;let d=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){if(yield b.setProcessor.call(c,a,d),null==(i=c.processor)?void 0:i.processedTrack)try{for(var e,f,g,h,i,j,k,l=!0,m=ds(c.simulcastCodecs.values());!(e=(k=yield m.next()).done);l=!0)h=k.value,l=!1,yield null==(j=h.sender)?void 0:j.replaceTrack(c.processor.processedTrack)}catch(a){f={error:a}}finally{try{!l&&!e&&(g=m.return)&&(yield g.call(m))}finally{if(f)throw f.error}}}()})}setDegradationPreference(a){return dr(this,void 0,void 0,function*(){if(this.degradationPreference=a,this.sender)try{this.log.debug("setting degradationPreference to ".concat(a),this.logContext);let b=this.sender.getParameters();b.degradationPreference=a,this.sender.setParameters(b)}catch(a){this.log.warn("failed to set degradationPreference",Object.assign({error:a},this.logContext))}})}addSimulcastTrack(a,b){if(this.simulcastCodecs.has(a))return void this.log.error("".concat(a," already added, skipping adding simulcast codec"),this.logContext);let c={codec:a,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:b};return this.simulcastCodecs.set(a,c),c}setSimulcastTrackSender(a,b){let c=this.simulcastCodecs.get(a);c&&(c.sender=b,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},5e3))}setPublishingCodecs(a){return dr(this,void 0,void 0,function*(){var b,c,d,e,f,g,h;if(this.log.debug("setting publishing codecs",Object.assign(Object.assign({},this.logContext),{codecs:a,currentCodec:this.codec})),!this.codec&&a.length>0)return yield this.setPublishingLayers(e1(a[0].codec),a[0].qualities),[];this.subscribedCodecs=a;let i=[];try{for(b=!0,c=ds(a);!(e=(d=yield c.next()).done);b=!0)if(h=d.value,b=!1,this.codec&&this.codec!==h.codec){let a=this.simulcastCodecs.get(h.codec);if(this.log.debug("try setPublishingCodec for ".concat(h.codec),Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:a})),a&&a.sender)a.encodings&&(this.log.debug("try setPublishingLayersForSender ".concat(h.codec),this.logContext),yield gu(a.sender,a.encodings,h.qualities,this.senderLock,e1(h.codec),this.log,this.logContext));else for(let a of h.qualities)if(a.enabled){i.push(h.codec);break}}else yield this.setPublishingLayers(e1(h.codec),h.qualities)}catch(a){f={error:a}}finally{try{!b&&!e&&(g=c.return)&&(yield g.call(c))}finally{if(f)throw f.error}}return i})}setPublishingLayers(a,b){return dr(this,void 0,void 0,function*(){if(this.optimizeForPerformance)return void this.log.info("skipping setPublishingLayers due to optimized publishing performance",Object.assign(Object.assign({},this.logContext),{qualities:b}));this.log.debug("setting publishing layers",Object.assign(Object.assign({},this.logContext),{qualities:b})),this.sender&&this.encodings&&(yield gu(this.sender,this.encodings,b,this.senderLock,a,this.log,this.logContext))})}prioritizePerformance(){return dr(this,void 0,void 0,function*(){if(!this.sender)throw Error("sender not found");let a=yield this.senderLock.lock();try{this.optimizeForPerformance=!0;let a=this.sender.getParameters();a.encodings=a.encodings.map((a,b)=>{var c;return Object.assign(Object.assign({},a),{active:0===b,scaleResolutionDownBy:Math.max(1,Math.ceil((null!=(c=this.mediaStreamTrack.getSettings().height)?c:360)/360)),scalabilityMode:0===b&&e1(this.codec)?"L1T3":void 0,maxFramerate:15*(0===b),maxBitrate:0===b?a.maxBitrate:0})}),this.log.debug("setting performance optimised encodings",Object.assign(Object.assign({},this.logContext),{encodings:a.encodings})),this.encodings=a.encodings,yield this.sender.setParameters(a)}catch(a){this.log.error("failed to set performance optimised encodings",Object.assign(Object.assign({},this.logContext),{error:a})),this.optimizeForPerformance=!1}finally{a()}})}handleAppVisibilityChanged(){let a=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return dr(this,void 0,void 0,function*(){yield a.handleAppVisibilityChanged.call(this),e7()&&this.isInBackground&&this.source===eW.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}}function gu(a,b,c,d,e,f,g){return dr(this,void 0,void 0,function*(){let h=yield d.lock();f.debug("setPublishingLayersForSender",Object.assign(Object.assign({},g),{sender:a,qualities:c,senderEncodings:b}));try{let d=a.getParameters(),{encodings:h}=d;if(!h)return;if(h.length!==b.length)return void f.warn("cannot set publishing layers, encodings mismatch",Object.assign(Object.assign({},g),{encodings:h,senderEncodings:b}));let i=!1;e&&c.some(a=>a.enabled)&&c.forEach(a=>a.enabled=!0),h.forEach((a,d)=>{var e;let h=null!=(e=a.rid)?e:"";""===h&&(h="q");let j=gv(h),k=c.find(a=>a.quality===j);k&&a.active!==k.enabled&&(i=!0,a.active=k.enabled,f.debug("setting layer ".concat(k.quality," to ").concat(a.active?"enabled":"disabled"),g),e3()&&(k.enabled?(a.scaleResolutionDownBy=b[d].scaleResolutionDownBy,a.maxBitrate=b[d].maxBitrate,a.maxFrameRate=b[d].maxFrameRate):(a.scaleResolutionDownBy=4,a.maxBitrate=10,a.maxFrameRate=2)))}),i&&(d.encodings=h,f.debug("setting encodings",Object.assign(Object.assign({},g),{encodings:d.encodings})),yield a.setParameters(d))}finally{h()}})}function gv(a){switch(a){case"f":default:return y.HIGH;case"h":return y.MEDIUM;case"q":return y.LOW}}function gw(a,b,c,d){if(!c)return[new by({quality:y.HIGH,width:a,height:b,bitrate:0,ssrc:0})];if(d){let d=new gs(c[0].scalabilityMode),e=[],f="h"==d.suffix?1.5:2,g="h"==d.suffix?2:3;for(let h=0;h<d.spatial;h+=1)e.push(new by({quality:Math.min(y.HIGH,d.spatial-1)-h,width:Math.ceil(a/Math.pow(f,h)),height:Math.ceil(b/Math.pow(f,h)),bitrate:c[0].maxBitrate?Math.ceil(c[0].maxBitrate/Math.pow(g,h)):0,ssrc:0}));return e}return c.map(c=>{var d,e,f;let g=null!=(d=c.scaleResolutionDownBy)?d:1;return new by({quality:gv(null!=(e=c.rid)?e:""),width:Math.ceil(a/g),height:Math.ceil(b/g),bitrate:null!=(f=c.maxBitrate)?f:0,ssrc:0})})}let gx="_lossy",gy="_reliable",gz="leave-reconnect";!function(a){a[a.New=0]="New",a[a.Connected=1]="Connected",a[a.Disconnected=2]="Disconnected",a[a.Reconnecting=3]="Reconnecting",a[a.Closed=4]="Closed"}(M||(M={}));class gA extends du.EventEmitter{get isClosed(){return this._isClosed}get pendingReconnect(){return!!this.reconnectTimeout}constructor(a){var b;super(),this.options=a,this.rtcConfig={},this.peerConnectionTimeout=f5.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.latestRemoteOfferId=0,this.subscriberPrimary=!1,this.pcState=M.New,this._isClosed=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.log=dl,this.reliableDataSequence=1,this.reliableMessageBuffer=new fQ,this.reliableReceivedState=new fR(3e4),this.lossyDataStatCurrentBytes=0,this.lossyDataStatByterate=0,this.lossyDataDropCount=0,this.midToTrackId={},this.isWaitingForNetworkReconnect=!1,this.handleDataChannel=a=>dr(this,[a],void 0,function(a){var b=this;let{channel:c}=a;return function*(){if(c){if(c.label===gy)b.reliableDCSub=c;else{if(c.label!==gx)return;b.lossyDCSub=c}b.log.debug("on data channel ".concat(c.id,", ").concat(c.label),b.logContext),c.onmessage=b.handleDataMessage}}()}),this.handleDataMessage=a=>dr(this,void 0,void 0,function*(){var b,c,d,e,f;let g=yield this.dataProcessLock.lock();try{let g;if(a.data instanceof ArrayBuffer)g=a.data;else{if(!(a.data instanceof Blob))return void this.log.error("unsupported data type",Object.assign(Object.assign({},this.logContext),{data:a.data}));g=yield a.data.arrayBuffer()}let h=bA.fromBinary(new Uint8Array(g));if(h.sequence>0&&""!==h.participantSid){let a=this.reliableReceivedState.get(h.participantSid);if(a&&h.sequence<=a)return;this.reliableReceivedState.set(h.participantSid,h.sequence)}if((null==(b=h.value)?void 0:b.case)==="speaker")this.emit(u.ActiveSpeakersUpdate,h.value.value.speakers);else if((null==(c=h.value)?void 0:c.case)==="encryptedPacket"){if(!this.e2eeManager)return void this.log.error("Received encrypted packet but E2EE not set up",this.logContext);let a=yield null==(d=this.e2eeManager)?void 0:d.handleEncryptedData(h.value.value.encryptedValue,h.value.value.iv,h.participantIdentity,h.value.value.keyIndex),b=bD.fromBinary(a.payload),c=new bA({value:b.value,participantIdentity:h.participantIdentity,participantSid:h.participantSid});(null==(e=c.value)?void 0:e.case)==="user"&&gB(c,c.value.value),this.emit(u.DataPacketReceived,c,h.value.value.encryptionType)}else(null==(f=h.value)?void 0:f.case)==="user"&&gB(h,h.value.value),this.emit(u.DataPacketReceived,h,bv.NONE)}finally{g()}}),this.handleDataError=a=>{let b=0===a.currentTarget.maxRetransmits?"lossy":"reliable";if(a instanceof ErrorEvent&&a.error){let{error:c}=a.error;this.log.error("DataChannel error on ".concat(b,": ").concat(a.message),Object.assign(Object.assign({},this.logContext),{error:c}))}else this.log.error("Unknown DataChannel error on ".concat(b),Object.assign(Object.assign({},this.logContext),{event:a}))},this.handleBufferedAmountLow=a=>{let b=0===a.currentTarget.maxRetransmits?bB.LOSSY:bB.RELIABLE;this.updateAndEmitDCBufferStatus(b)},this.handleDisconnect=(a,b)=>{if(this._isClosed)return;this.log.warn("".concat(a," disconnected"),this.logContext),0===this.reconnectAttempts&&(this.reconnectStart=Date.now());let c=a=>{this.log.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(a,"ms. giving up"),this.logContext),this.emit(u.Disconnected),this.close()},d=Date.now()-this.reconnectStart,e=this.getNextRetryDelay({elapsedMs:d,retryCount:this.reconnectAttempts});if(null===e)return void c(d);a===gz&&(e=0),this.log.debug("reconnecting in ".concat(e,"ms"),this.logContext),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=eD.setTimeout(()=>this.attemptReconnect(b).finally(()=>this.reconnectTimeout=void 0),e)},this.waitForRestarted=()=>new Promise((a,b)=>{this.pcState===M.Connected&&a();let c=()=>{this.off(u.Disconnected,d),a()},d=()=>{this.off(u.Restarted,c),b()};this.once(u.Restarted,c),this.once(u.Disconnected,d)}),this.updateAndEmitDCBufferStatus=a=>{if(a===bB.RELIABLE){let b=this.dataChannelForKind(a);b&&this.reliableMessageBuffer.alignBufferedAmount(b.bufferedAmount)}let b=this.isBufferStatusLow(a);void 0!==b&&b!==this.dcBufferStatus.get(a)&&(this.dcBufferStatus.set(a,b),this.emit(u.DCBufferStatusChanged,b,a))},this.isBufferStatusLow=a=>{let b=this.dataChannelForKind(a);if(b)return b.bufferedAmount<=b.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>dr(this,void 0,void 0,function*(){this.url&&(yield fetch(fq(this.url),{method:"HEAD"}).then(a=>a.ok).catch(()=>!1))&&(this.log.info("detected network reconnected"),(this.client.currentState===F.RECONNECTING||this.isWaitingForNetworkReconnect&&this.client.currentState===F.CONNECTED)&&(this.clearReconnectTimeout(),this.attemptReconnect(bl.RR_SIGNAL_DISCONNECTED),this.isWaitingForNetworkReconnect=!1))}),this.handleBrowserOffline=()=>dr(this,void 0,void 0,function*(){if(this.url)try{yield Promise.race([fetch(fq(this.url),{method:"HEAD"}),e$(4e3).then(()=>Promise.reject())])}catch(a){!1===window.navigator.onLine&&(this.log.info("detected network interruption"),this.isWaitingForNetworkReconnect=!0)}}),this.log=dm(null!=(b=a.loggerName)?b:m.Engine),this.loggerOptions={loggerName:a.loggerName,loggerContextCb:()=>this.logContext},this.client=new fN(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.closingLock=new S,this.dataProcessLock=new S,this.dcBufferStatus=new Map([[bB.LOSSY,!0],[bB.RELIABLE,!0]]),this.client.onParticipantUpdate=a=>this.emit(u.ParticipantUpdate,a),this.client.onConnectionQuality=a=>this.emit(u.ConnectionQualityUpdate,a),this.client.onRoomUpdate=a=>this.emit(u.RoomUpdate,a),this.client.onSubscriptionError=a=>this.emit(u.SubscriptionError,a),this.client.onSubscriptionPermissionUpdate=a=>this.emit(u.SubscriptionPermissionUpdate,a),this.client.onSpeakersChanged=a=>this.emit(u.SpeakersChanged,a),this.client.onStreamStateUpdate=a=>this.emit(u.StreamStateChanged,a),this.client.onRequestResponse=a=>this.emit(u.SignalRequestResponse,a)}get logContext(){var a,b,c,d,e,f;return{room:null==(b=null==(a=this.latestJoinResponse)?void 0:a.room)?void 0:b.name,roomID:null==(d=null==(c=this.latestJoinResponse)?void 0:c.room)?void 0:d.sid,participant:null==(f=null==(e=this.latestJoinResponse)?void 0:e.participant)?void 0:f.identity,pID:this.participantSid}}join(a,b,c,d){return dr(this,arguments,void 0,function(a,b,c,d){var e=this;let f=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return function*(){e.url=a,e.token=b,e.signalOpts=c,e.maxJoinAttempts=c.maxRetries;try{e.joinAttempts+=1,e.setupSignalClientCallbacks();let g=yield e.client.join(a,b,c,d,f);return e._isClosed=!1,e.latestJoinResponse=g,e.subscriberPrimary=g.subscriberPrimary,e.pcManager||(yield e.configure(g,!f)),(!e.subscriberPrimary||g.fastPublish)&&e.negotiate().catch(a=>{dl.error(a,e.logContext)}),e.registerOnLineListener(),e.clientConfiguration=g.clientConfiguration,e.emit(u.SignalConnected,g),g}catch(g){if(g instanceof et){if(g.reason===p.ServerUnreachable){if(e.log.warn("Couldn't connect to server, attempt ".concat(e.joinAttempts," of ").concat(e.maxJoinAttempts),e.logContext),e.joinAttempts<e.maxJoinAttempts)return e.join(a,b,c,d,f)}else if(g.reason===p.ServiceNotFound)return e.log.warn("Initial connection failed: ".concat(g.message," – Retrying")),e.join(a,b,c,d,!0)}throw g}}()})}close(){return dr(this,void 0,void 0,function*(){let a=yield this.closingLock.lock();if(this.isClosed)return void a();try{this._isClosed=!0,this.joinAttempts=0,this.emit(u.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),this.cleanupLossyDataStats(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{a()}})}cleanupPeerConnections(){return dr(this,void 0,void 0,function*(){var a;yield null==(a=this.pcManager)?void 0:a.close(),this.pcManager=void 0;let b=a=>{a&&(a.close(),a.onbufferedamountlow=null,a.onclose=null,a.onclosing=null,a.onerror=null,a.onmessage=null,a.onopen=null)};b(this.lossyDC),b(this.lossyDCSub),b(this.reliableDC),b(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0,this.reliableMessageBuffer=new fQ,this.reliableDataSequence=1,this.reliableReceivedState.clear()})}cleanupLossyDataStats(){this.lossyDataStatByterate=0,this.lossyDataStatCurrentBytes=0,this.lossyDataStatInterval&&(clearInterval(this.lossyDataStatInterval),this.lossyDataStatInterval=void 0),this.lossyDataDropCount=0}cleanupClient(){return dr(this,void 0,void 0,function*(){yield this.client.close(),this.client.resetCallbacks()})}addTrack(a){if(this.pendingTrackResolvers[a.cid])throw new ev("a track with the same ID has already been published");return new Promise((b,c)=>{let d=setTimeout(()=>{delete this.pendingTrackResolvers[a.cid],c(et.timeout("publication of local track timed out, no response from server"))},1e4);this.pendingTrackResolvers[a.cid]={resolve:a=>{clearTimeout(d),b(a)},reject:()=>{clearTimeout(d),c(Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(a)})}removeTrack(a){if(a.track&&this.pendingTrackResolvers[a.track.id]){let{reject:b}=this.pendingTrackResolvers[a.track.id];b&&b(),delete this.pendingTrackResolvers[a.track.id]}try{return this.pcManager.removeTrack(a),!0}catch(a){this.log.warn("failed to remove track",Object.assign(Object.assign({},this.logContext),{error:a}))}return!1}updateMuteStatus(a,b){this.client.sendMuteTrack(a,b)}get dataSubscriberReadyState(){var a;return null==(a=this.reliableDCSub)?void 0:a.readyState}getConnectedServerAddress(){return dr(this,void 0,void 0,function*(){var a;return null==(a=this.pcManager)?void 0:a.getConnectedAddress()})}setRegionUrlProvider(a){this.regionUrlProvider=a}configure(a,b){return dr(this,void 0,void 0,function*(){var c,d,e;if(this.pcManager&&this.pcManager.currentState!==L.NEW)return;this.participantSid=null==(c=a.participant)?void 0:c.sid;let f=this.makeRTCConfiguration(a);this.pcManager=new f6(f,b?"publisher-only":a.subscriberPrimary?"subscriber-primary":"publisher-primary",this.loggerOptions),this.emit(u.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(a,b)=>{this.client.sendIceCandidate(a,b)},this.pcManager.onPublisherOffer=(a,b)=>{this.client.sendOffer(a,b)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(b,c,d)=>dr(this,void 0,void 0,function*(){if(this.log.debug("primary PC state changed ".concat(b),this.logContext),["closed","disconnected","failed"].includes(c)&&(this.publisherConnectionPromise=void 0),b===L.CONNECTED){let b=this.pcState===M.New;this.pcState=M.Connected,b&&this.emit(u.Connected,a)}else b===L.FAILED&&(this.pcState===M.Connected||this.pcState===M.Reconnecting)&&(this.pcState=M.Disconnected,this.handleDisconnect("peerconnection failed","failed"===d?bl.RR_SUBSCRIBER_FAILED:bl.RR_PUBLISHER_FAILED));let e=this.client.isDisconnected||this.client.currentState===F.RECONNECTING,f=[L.FAILED,L.CLOSING,L.CLOSED].includes(b);e&&f&&!this._isClosed&&this.emit(u.Offline)}),this.pcManager.onTrack=a=>{0!==a.streams.length&&this.emit(u.MediaTrackAdded,a.track,a.streams[0],a.receiver)},void 0!==(e=null==(d=a.serverInfo)?void 0:d.protocol)&&e>13||this.createDataChannels()})}setupSignalClientCallbacks(){this.client.onAnswer=(a,b,c)=>dr(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug("received server answer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:a.type,sdp:a.sdp,midToTrackId:c})),this.midToTrackId=c,yield this.pcManager.setPublisherAnswer(a,b))}),this.client.onTrickle=(a,b)=>{this.pcManager&&(this.log.debug("got ICE candidate from peer",Object.assign(Object.assign({},this.logContext),{candidate:a,target:b})),this.pcManager.addIceCandidate(a,b))},this.client.onOffer=(a,b,c)=>dr(this,void 0,void 0,function*(){if(this.latestRemoteOfferId=b,!this.pcManager)return;this.midToTrackId=c;let d=yield this.pcManager.createSubscriberAnswerFromOffer(a,b);d&&this.client.sendAnswer(d,b)}),this.client.onLocalTrackPublished=a=>{var b;if(this.log.debug("received trackPublishedResponse",Object.assign(Object.assign({},this.logContext),{cid:a.cid,track:null==(b=a.track)?void 0:b.sid})),!this.pendingTrackResolvers[a.cid])return void this.log.error("missing track resolver for ".concat(a.cid),Object.assign(Object.assign({},this.logContext),{cid:a.cid}));let{resolve:c}=this.pendingTrackResolvers[a.cid];delete this.pendingTrackResolvers[a.cid],c(a.track)},this.client.onLocalTrackUnpublished=a=>{this.emit(u.LocalTrackUnpublished,a)},this.client.onLocalTrackSubscribed=a=>{this.emit(u.LocalTrackSubscribed,a)},this.client.onTokenRefresh=a=>{var b;this.token=a,null==(b=this.regionUrlProvider)||b.updateToken(a)},this.client.onRemoteMuteChanged=(a,b)=>{this.emit(u.RemoteMute,a,b)},this.client.onSubscribedQualityUpdate=a=>{this.emit(u.SubscribedQualityUpdate,a)},this.client.onRoomMoved=a=>{var b;this.participantSid=null==(b=a.participant)?void 0:b.sid,this.latestJoinResponse&&(this.latestJoinResponse.room=a.room),this.emit(u.RoomMoved,a)},this.client.onMediaSectionsRequirement=a=>{var b,c;let d={direction:"recvonly"};for(let c=0;c<a.numAudios;c++)null==(b=this.pcManager)||b.addPublisherTransceiverOfKind("audio",d);for(let b=0;b<a.numVideos;b++)null==(c=this.pcManager)||c.addPublisherTransceiverOfKind("video",d);this.negotiate()},this.client.onClose=()=>{this.handleDisconnect("signal",bl.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=a=>{switch(this.log.debug("client leave request",Object.assign(Object.assign({},this.logContext),{reason:null==a?void 0:a.reason})),a.regions&&this.regionUrlProvider&&(this.log.debug("updating regions",this.logContext),this.regionUrlProvider.setServerReportedRegions({updatedAtInMs:Date.now(),maxAgeInMs:5e3,regionSettings:a.regions})),a.action){case cL.DISCONNECT:this.emit(u.Disconnected,null==a?void 0:a.reason),this.close();break;case cL.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(gz);break;case cL.RESUME:this.handleDisconnect(gz)}}}makeRTCConfiguration(a){var b;let c=Object.assign({},this.rtcConfig);if((null==(b=this.signalOpts)?void 0:b.e2eeEnabled)&&(this.log.debug("E2EE - setting up transports with insertable streams",this.logContext),c.encodedInsertableStreams=!0),a.iceServers&&!c.iceServers){let b=[];a.iceServers.forEach(a=>{let c={urls:a.urls};a.username&&(c.username=a.username),a.credential&&(c.credential=a.credential),b.push(c)}),c.iceServers=b}return a.clientConfiguration&&a.clientConfiguration.forceRelay===bj.ENABLED&&(c.iceTransportPolicy="relay"),c.sdpSemantics="unified-plan",c.continualGatheringPolicy="gather_continually",c}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(gx,{ordered:!1,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(gy,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow,this.cleanupLossyDataStats(),this.lossyDataStatInterval=setInterval(()=>{this.lossyDataStatByterate=this.lossyDataStatCurrentBytes,this.lossyDataStatCurrentBytes=0;let a=this.dataChannelForKind(bB.LOSSY);a&&(a.bufferedAmountLowThreshold=Math.min(Math.max(this.lossyDataStatByterate/10,8192),262144))},1e3))}createSender(a,b,c){return dr(this,void 0,void 0,function*(){if(e_())return yield this.createTransceiverRTCRtpSender(a,b,c);if(e0())return this.log.warn("using add-track fallback",this.logContext),yield this.createRTCRtpSender(a.mediaStreamTrack);throw new ex("Required webRTC APIs not supported on this device")})}createSimulcastSender(a,b,c,d){return dr(this,void 0,void 0,function*(){if(e_())return this.createSimulcastTransceiverSender(a,b,c,d);if(e0())return this.log.debug("using add-track fallback",this.logContext),this.createRTCRtpSender(a.mediaStreamTrack);throw new ex("Cannot stream on this device")})}createTransceiverRTCRtpSender(a,b,c){return dr(this,void 0,void 0,function*(){if(!this.pcManager)throw new ex("publisher is closed");let d=[];a.mediaStream&&d.push(a.mediaStream),fw(a)&&(a.codec=b.videoCodec);let e={direction:"sendonly",streams:d};return c&&(e.sendEncodings=c),(yield this.pcManager.addPublisherTransceiver(a.mediaStreamTrack,e)).sender})}createSimulcastTransceiverSender(a,b,c,d){return dr(this,void 0,void 0,function*(){if(!this.pcManager)throw new ex("publisher is closed");let e={direction:"sendonly"};d&&(e.sendEncodings=d);let f=yield this.pcManager.addPublisherTransceiver(b.mediaStreamTrack,e);if(c.videoCodec)return a.setSimulcastTrackSender(c.videoCodec,f.sender),f.sender})}createRTCRtpSender(a){return dr(this,void 0,void 0,function*(){if(!this.pcManager)throw new ex("publisher is closed");return this.pcManager.addPublisherTrack(a)})}attemptReconnect(a){return dr(this,void 0,void 0,function*(){var b,c,d;if(!this._isClosed){if(this.attemptingReconnect)return void dl.warn("already attempting reconnect, returning early",this.logContext);((null==(b=this.clientConfiguration)?void 0:b.resumeConnection)===bj.DISABLED||(null!=(d=null==(c=this.pcManager)?void 0:c.currentState)?d:L.NEW)===L.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(a),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(b){this.reconnectAttempts+=1;let a=!0;b instanceof ex?(this.log.debug("received unrecoverable error",Object.assign(Object.assign({},this.logContext),{error:b})),a=!1):b instanceof eC||(this.fullReconnectOnNext=!0),a?this.handleDisconnect("reconnect",bl.RR_UNKNOWN):(this.log.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up"),this.logContext),this.emit(u.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(a){try{return this.reconnectPolicy.nextRetryDelayInMs(a)}catch(a){this.log.warn("encountered error in reconnect policy",Object.assign(Object.assign({},this.logContext),{error:a}))}return null}restartConnection(a){return dr(this,void 0,void 0,function*(){var b,c,d;try{let c;if(!this.url||!this.token)throw new ex("could not reconnect, url or token not saved");this.log.info("reconnecting, attempt: ".concat(this.reconnectAttempts),this.logContext),this.emit(u.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();try{if(!this.signalOpts)throw this.log.warn("attempted connection restart, without signal options present",this.logContext),new eC;c=yield this.join(null!=a?a:this.url,this.token,this.signalOpts,void 0,!this.options.singlePeerConnection)}catch(a){if(a instanceof et&&a.reason===p.NotAllowed)throw new ex("could not reconnect, token might be expired");throw new eC}if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(this.client.setReconnected(),this.emit(u.SignalRestarted,c),yield this.waitForPCReconnected(),this.client.currentState!==F.CONNECTED)throw new eC("Signal connection got severed during reconnect");null==(b=this.regionUrlProvider)||b.resetAttempts(),this.emit(u.Restarted)}catch(b){let a=yield null==(c=this.regionUrlProvider)?void 0:c.getNextBestRegionUrl();if(a)return void(yield this.restartConnection(a));throw null==(d=this.regionUrlProvider)||d.resetAttempts(),b}})}resumeConnection(a){return dr(this,void 0,void 0,function*(){var b;let c;if(!this.url||!this.token)throw new ex("could not reconnect, url or token not saved");if(!this.pcManager)throw new ex("publisher and subscriber connections unset");this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts),this.logContext),this.emit(u.Resuming);try{this.setupSignalClientCallbacks(),c=yield this.client.reconnect(this.url,this.token,this.participantSid,a)}catch(b){let a="";if(b instanceof Error&&(a=b.message,this.log.error(b.message,Object.assign(Object.assign({},this.logContext),{error:b}))),b instanceof et&&b.reason===p.NotAllowed)throw new ex("could not reconnect, token might be expired");if(b instanceof et&&b.reason===p.LeaveRequest)throw b;throw new eC(a)}if(this.emit(u.SignalResumed),c){let a=this.makeRTCConfiguration(c);this.pcManager.updateConfiguration(a),this.latestJoinResponse&&(this.latestJoinResponse.serverInfo=c.serverInfo)}else this.log.warn("Did not receive reconnect response",this.logContext);if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==F.CONNECTED)throw new eC("Signal connection got severed during reconnect");this.client.setReconnected(),(null==(b=this.reliableDC)?void 0:b.readyState)==="open"&&null===this.reliableDC.id&&this.createDataChannels(),(null==c?void 0:c.lastMessageSeq)&&this.resendReliableMessagesForResume(c.lastMessageSeq),this.emit(u.Resumed)})}waitForPCInitialConnection(a,b){return dr(this,void 0,void 0,function*(){if(!this.pcManager)throw new ex("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(b,a)})}waitForPCReconnected(){return dr(this,void 0,void 0,function*(){this.pcState=M.Reconnecting,this.log.debug("waiting for peer connection to reconnect",this.logContext);try{if(yield e$(2e3),!this.pcManager)throw new ex("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=M.Connected}catch(a){throw this.pcState=M.Disconnected,et.internal("could not establish PC connection, ".concat(a.message))}})}publishRpcResponse(a,b,c,d){return dr(this,void 0,void 0,function*(){let e=new bA({destinationIdentities:[a],kind:bB.RELIABLE,value:{case:"rpcResponse",value:new bN({requestId:b,value:d?{case:"error",value:d.toProto()}:{case:"payload",value:null!=c?c:""}})}});yield this.sendDataPacket(e,bB.RELIABLE)})}publishRpcAck(a,b){return dr(this,void 0,void 0,function*(){let c=new bA({destinationIdentities:[a],kind:bB.RELIABLE,value:{case:"rpcAck",value:new bM({requestId:b})}});yield this.sendDataPacket(c,bB.RELIABLE)})}sendDataPacket(a,b){return dr(this,void 0,void 0,function*(){if(yield this.ensurePublisherConnected(b),this.e2eeManager&&this.e2eeManager.isDataChannelEncryptionEnabled){let b=function(a){var b,c,d,e,f;if((null==(b=a.value)?void 0:b.case)!=="sipDtmf"&&(null==(c=a.value)?void 0:c.case)!=="metrics"&&(null==(d=a.value)?void 0:d.case)!=="speaker"&&(null==(e=a.value)?void 0:e.case)!=="transcription"&&(null==(f=a.value)?void 0:f.case)!=="encryptedPacket")return new bD({value:a.value})}(a);if(b){let c=yield this.e2eeManager.encryptData(b.toBinary());a.value={case:"encryptedPacket",value:new bC({encryptedValue:c.payload,iv:c.iv,keyIndex:c.keyIndex})}}}b===bB.RELIABLE&&(a.sequence=this.reliableDataSequence,this.reliableDataSequence+=1);let c=a.toBinary(),d=this.dataChannelForKind(b);if(d){if(b===bB.RELIABLE)yield this.waitForBufferStatusLow(b),this.reliableMessageBuffer.push({data:c,sequence:a.sequence});else{if(!this.isBufferStatusLow(b)){this.lossyDataDropCount+=1,this.lossyDataDropCount%100==0&&this.log.warn("dropping lossy data channel messages, total dropped: ".concat(this.lossyDataDropCount),this.logContext);return}this.lossyDataStatCurrentBytes+=c.byteLength}if(this.attemptingReconnect)return;d.send(c)}this.updateAndEmitDCBufferStatus(b)})}resendReliableMessagesForResume(a){return dr(this,void 0,void 0,function*(){yield this.ensurePublisherConnected(bB.RELIABLE);let b=this.dataChannelForKind(bB.RELIABLE);b&&(this.reliableMessageBuffer.popToSequence(a),this.reliableMessageBuffer.getAll().forEach(a=>{b.send(a.data)})),this.updateAndEmitDCBufferStatus(bB.RELIABLE)})}waitForBufferStatusLow(a){return new em((b,c)=>dr(this,void 0,void 0,function*(){if(this.isBufferStatusLow(a))b();else{let d=()=>c(new ex("engine closed"));for(this.once(u.Closing,d);!this.dcBufferStatus.get(a);)yield e$(10);this.off(u.Closing,d),b()}}))}ensureDataTransportConnected(a){return dr(this,arguments,void 0,function(a){var b=this;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subscriberPrimary;return function*(){var d;if(!b.pcManager)throw new ex("PC manager is closed");let e=c?b.pcManager.subscriber:b.pcManager.publisher,f=c?"Subscriber":"Publisher";if(!e)throw et.internal("".concat(f," connection not set"));let g=!1;c||b.dataChannelForKind(a,c)||(b.createDataChannels(),g=!0),g||c||b.pcManager.publisher.isICEConnected||"checking"===b.pcManager.publisher.getICEConnectionState()||(g=!0),g&&b.negotiate().catch(a=>{dl.error(a,b.logContext)});let h=b.dataChannelForKind(a,c);if((null==h?void 0:h.readyState)==="open")return;let i=new Date().getTime()+b.peerConnectionTimeout;for(;new Date().getTime()<i;){if(e.isICEConnected&&(null==(d=b.dataChannelForKind(a,c))?void 0:d.readyState)==="open")return;yield e$(50)}throw et.internal("could not establish ".concat(f," connection, state: ").concat(e.getICEConnectionState()))}()})}ensurePublisherConnected(a){return dr(this,void 0,void 0,function*(){this.publisherConnectionPromise||(this.publisherConnectionPromise=this.ensureDataTransportConnected(a,!1)),yield this.publisherConnectionPromise})}verifyTransport(){return!!this.pcManager&&this.pcManager.currentState===L.CONNECTED&&!!this.client.ws&&this.client.ws.readyState!==WebSocket.CLOSED}negotiate(){return dr(this,void 0,void 0,function*(){return new em((a,b)=>dr(this,void 0,void 0,function*(){if(!this.pcManager)return void b(new ey("PC manager is closed"));this.pcManager.requirePublisher(),0!=this.pcManager.publisher.getTransceivers().length||this.lossyDC||this.reliableDC||this.createDataChannels();let c=new AbortController,d=()=>{c.abort(),this.log.debug("engine disconnected while negotiation was ongoing",this.logContext),a()};this.isClosed&&b(new ey("cannot negotiate on closed engine")),this.on(u.Closing,d),this.pcManager.publisher.once(fY.RTPVideoPayloadTypes,a=>{let b=new Map;a.forEach(a=>{let c=a.codec.toLowerCase();eG.includes(c)&&b.set(a.payload,c)}),this.emit(u.RTPVideoMapUpdate,b)});try{yield this.pcManager.negotiate(c),a()}catch(a){a instanceof ey&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",bl.RR_UNKNOWN),a instanceof Error?b(a):b(Error(String(a)))}finally{this.off(u.Closing,d)}}))})}dataChannelForKind(a,b){if(b){if(a===bB.LOSSY)return this.lossyDCSub;if(a===bB.RELIABLE)return this.reliableDCSub}else{if(a===bB.LOSSY)return this.lossyDC;if(a===bB.RELIABLE)return this.reliableDC}}sendSyncState(a,b){var c,d,e,f;if(!this.pcManager)return void this.log.warn("sync state cannot be sent without peer connection setup",this.logContext);let g=this.pcManager.publisher.getLocalDescription(),h=this.pcManager.publisher.getRemoteDescription(),i=null==(c=this.pcManager.subscriber)?void 0:c.getRemoteDescription(),j=null==(d=this.pcManager.subscriber)?void 0:d.getLocalDescription(),k=null==(f=null==(e=this.signalOpts)?void 0:e.autoSubscribe)||f,l=[],m=[];a.forEach(a=>{a.isDesired!==k&&l.push(a.trackSid),a.isEnabled||m.push(a.trackSid)}),this.client.sendSyncState(new c1({answer:"publisher-only"===this.pcManager.mode?h?fP({sdp:h.sdp,type:h.type}):void 0:j?fP({sdp:j.sdp,type:j.type}):void 0,offer:"publisher-only"===this.pcManager.mode?g?fP({sdp:g.sdp,type:g.type}):void 0:i?fP({sdp:i.sdp,type:i.type}):void 0,subscription:new cG({trackSids:l,subscribe:!k,participantTracks:[]}),publishTracks:function(a){let b=[];return a.forEach(a=>{void 0!==a.track&&b.push(new cC({cid:a.track.mediaStreamID,track:a.trackInfo}))}),b}(b),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:m,datachannelReceiveStates:this.reliableReceivedState.map((a,b)=>new c2({publisherSid:b,lastSeq:a}))}))}failNext(){this.shouldFailNext=!0}dataChannelsInfo(){let a=[],b=(b,c)=>{(null==b?void 0:b.id)!==void 0&&null!==b.id&&a.push(new c3({label:b.label,id:b.id,target:c}))};return b(this.dataChannelForKind(bB.LOSSY),cr.PUBLISHER),b(this.dataChannelForKind(bB.RELIABLE),cr.PUBLISHER),b(this.dataChannelForKind(bB.LOSSY,!0),cr.SUBSCRIBER),b(this.dataChannelForKind(bB.RELIABLE,!0),cr.SUBSCRIBER),a}clearReconnectTimeout(){this.reconnectTimeout&&eD.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){e8()&&(window.addEventListener("online",this.handleBrowserOnLine),window.addEventListener("offline",this.handleBrowserOffline))}deregisterOnLineListener(){e8()&&(window.removeEventListener("online",this.handleBrowserOnLine),window.removeEventListener("offline",this.handleBrowserOffline))}getTrackIdForReceiver(a){var b;let c=null==(b=this.pcManager)?void 0:b.getMidForReceiver(a);if(c){let a=Object.entries(this.midToTrackId).find(a=>{let[b]=a;return b===c});if(a)return a[1]}}}function gB(a,b){let c=a.participantIdentity?a.participantIdentity:b.participantIdentity;a.participantIdentity=c,b.participantIdentity=c;let d=0!==a.destinationIdentities.length?a.destinationIdentities:b.destinationIdentities;a.destinationIdentities=d,b.destinationIdentities=d}class gC{get info(){return this._info}validateBytesReceived(){let a=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("number"==typeof this.totalByteSize&&0!==this.totalByteSize){if(a&&this.bytesReceived<this.totalByteSize)throw new eB("Not enough chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, only received ").concat(this.bytesReceived," bytes"),q.Incomplete);else if(this.bytesReceived>this.totalByteSize)throw new eB("Extra chunk(s) received - expected ".concat(this.totalByteSize," bytes of data total, received ").concat(this.bytesReceived," bytes"),q.LengthExceeded)}}constructor(a,b,c,d){this.reader=b,this.totalByteSize=c,this._info=a,this.bytesReceived=0,this.outOfBandFailureRejectingFuture=d}}class gD extends gC{handleChunkReceived(a){var b;this.bytesReceived+=a.content.byteLength,this.validateBytesReceived();let c=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;null==(b=this.onProgress)||b.call(this,c)}[Symbol.asyncIterator](){let a=this.reader.getReader(),b=new fo,c=null,d=null;if(this.signal){let a=this.signal;d=()=>{var c;null==(c=b.reject)||c.call(b,a.reason)},a.addEventListener("abort",d),c=a}let e=()=>{a.releaseLock(),c&&d&&c.removeEventListener("abort",d),this.signal=void 0};return{next:()=>dr(this,void 0,void 0,function*(){var c,d;try{let{done:e,value:f}=yield Promise.race([a.read(),b.promise,null!=(d=null==(c=this.outOfBandFailureRejectingFuture)?void 0:c.promise)?d:new Promise(()=>{})]);if(e)return this.validateBytesReceived(!0),{done:!0,value:void 0};return this.handleChunkReceived(f),{done:!1,value:f.content}}catch(a){throw e(),a}}),return(){return dr(this,void 0,void 0,function*(){return e(),{done:!0,value:void 0}})}}}withAbortSignal(a){return this.signal=a,this}readAll(){return dr(this,arguments,void 0,function(){var a=this;let b=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function*(){var c,d,e,f;let g=new Set,h=b.signal?a.withAbortSignal(b.signal):a;try{for(var i,j=!0,k=ds(h);!(c=(i=yield k.next()).done);j=!0)f=i.value,j=!1,g.add(f)}catch(a){d={error:a}}finally{try{!j&&!c&&(e=k.return)&&(yield e.call(k))}finally{if(d)throw d.error}}return Array.from(g)}()})}}class gE extends gC{constructor(a,b,c,d){super(a,b,c,d),this.receivedChunks=new Map}handleChunkReceived(a){var b;let c=fs(a.chunkIndex),d=this.receivedChunks.get(c);if(d&&d.version>a.version)return;this.receivedChunks.set(c,a),this.bytesReceived+=a.content.byteLength,this.validateBytesReceived();let e=this.totalByteSize?this.bytesReceived/this.totalByteSize:void 0;null==(b=this.onProgress)||b.call(this,e)}[Symbol.asyncIterator](){let a=this.reader.getReader(),b=new TextDecoder("utf-8",{fatal:!0}),c=new fo,d=null,e=null;if(this.signal){let a=this.signal;e=()=>{var b;null==(b=c.reject)||b.call(c,a.reason)},a.addEventListener("abort",e),d=a}let f=()=>{a.releaseLock(),d&&e&&d.removeEventListener("abort",e),this.signal=void 0};return{next:()=>dr(this,void 0,void 0,function*(){var d,e;try{let{done:f,value:g}=yield Promise.race([a.read(),c.promise,null!=(e=null==(d=this.outOfBandFailureRejectingFuture)?void 0:d.promise)?e:new Promise(()=>{})]);if(f)return this.validateBytesReceived(!0),{done:!0,value:void 0};{let a;this.handleChunkReceived(g);try{a=b.decode(g.content)}catch(a){throw new eB("Cannot decode datastream chunk ".concat(g.chunkIndex," as text: ").concat(a),q.DecodeFailed)}return{done:!1,value:a}}}catch(a){throw f(),a}}),return(){return dr(this,void 0,void 0,function*(){return f(),{done:!0,value:void 0}})}}}withAbortSignal(a){return this.signal=a,this}readAll(){return dr(this,arguments,void 0,function(){var a=this;let b=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function*(){var c,d,e,f;let g="",h=b.signal?a.withAbortSignal(b.signal):a;try{for(var i,j=!0,k=ds(h);!(c=(i=yield k.next()).done);j=!0)f=i.value,j=!1,g+=f}catch(a){d={error:a}}finally{try{!j&&!c&&(e=k.return)&&(yield e.call(k))}finally{if(d)throw d.error}}return g}()})}}class gF{constructor(){this.log=dl,this.byteStreamControllers=new Map,this.textStreamControllers=new Map,this.byteStreamHandlers=new Map,this.textStreamHandlers=new Map}registerTextStreamHandler(a,b){if(this.textStreamHandlers.has(a))throw new eB('A text stream handler for topic "'.concat(a,'" has already been set.'),q.HandlerAlreadyRegistered);this.textStreamHandlers.set(a,b)}unregisterTextStreamHandler(a){this.textStreamHandlers.delete(a)}registerByteStreamHandler(a,b){if(this.byteStreamHandlers.has(a))throw new eB('A byte stream handler for topic "'.concat(a,'" has already been set.'),q.HandlerAlreadyRegistered);this.byteStreamHandlers.set(a,b)}unregisterByteStreamHandler(a){this.byteStreamHandlers.delete(a)}clearControllers(){this.byteStreamControllers.clear(),this.textStreamControllers.clear()}validateParticipantHasNoActiveDataStreams(a){var b,c,d,e;let f=Array.from(this.textStreamControllers.entries()).filter(b=>b[1].sendingParticipantIdentity===a),g=Array.from(this.byteStreamControllers.entries()).filter(b=>b[1].sendingParticipantIdentity===a);if(f.length>0||g.length>0){let h=new eB("Participant ".concat(a," unexpectedly disconnected in the middle of sending data"),q.AbnormalEnd);for(let[a,d]of g)null==(c=(b=d.outOfBandFailureRejectingFuture).reject)||c.call(b,h),this.byteStreamControllers.delete(a);for(let[a,b]of f)null==(e=(d=b.outOfBandFailureRejectingFuture).reject)||e.call(d,h),this.textStreamControllers.delete(a)}}handleDataStreamPacket(a,b){return dr(this,void 0,void 0,function*(){switch(a.value.case){case"streamHeader":return this.handleStreamHeader(a.value.value,a.participantIdentity,b);case"streamChunk":return this.handleStreamChunk(a.value.value,b);case"streamTrailer":return this.handleStreamTrailer(a.value.value,b);default:throw Error('DataPacket of value "'.concat(a.value.case,'" is not data stream related!'))}})}handleStreamHeader(a,b,c){return dr(this,void 0,void 0,function*(){var d;if("byteHeader"===a.contentHeader.case){let e,f=this.byteStreamHandlers.get(a.topic);if(!f)return void this.log.debug("ignoring incoming byte stream due to no handler for topic",a.topic);let g=new fo;g.promise.catch(a=>{this.log.error(a)});let h={id:a.streamId,name:null!=(d=a.contentHeader.value.name)?d:"unknown",mimeType:a.mimeType,size:a.totalLength?Number(a.totalLength):void 0,topic:a.topic,timestamp:fs(a.timestamp),attributes:a.attributes,encryptionType:c},i=new ReadableStream({start:c=>{if(e=c,this.textStreamControllers.has(a.streamId))throw new eB("A data stream read is already in progress for a stream with id ".concat(a.streamId,"."),q.AlreadyOpened);this.byteStreamControllers.set(a.streamId,{info:h,controller:e,startTime:Date.now(),sendingParticipantIdentity:b,outOfBandFailureRejectingFuture:g})}});f(new gD(h,i,fs(a.totalLength),g),{identity:b})}else if("textHeader"===a.contentHeader.case){let d,e=this.textStreamHandlers.get(a.topic);if(!e)return void this.log.debug("ignoring incoming text stream due to no handler for topic",a.topic);let f=new fo;f.promise.catch(a=>{this.log.error(a)});let g={id:a.streamId,mimeType:a.mimeType,size:a.totalLength?Number(a.totalLength):void 0,topic:a.topic,timestamp:Number(a.timestamp),attributes:a.attributes,encryptionType:c},h=new ReadableStream({start:c=>{if(d=c,this.textStreamControllers.has(a.streamId))throw new eB("A data stream read is already in progress for a stream with id ".concat(a.streamId,"."),q.AlreadyOpened);this.textStreamControllers.set(a.streamId,{info:g,controller:d,startTime:Date.now(),sendingParticipantIdentity:b,outOfBandFailureRejectingFuture:f})}});e(new gE(g,h,fs(a.totalLength),f),{identity:b})}})}handleStreamChunk(a,b){let c=this.byteStreamControllers.get(a.streamId);c&&(c.info.encryptionType!==b?(c.controller.error(new eB("Encryption type mismatch for stream ".concat(a.streamId,". Expected ").concat(b,", got ").concat(c.info.encryptionType),q.EncryptionTypeMismatch)),this.byteStreamControllers.delete(a.streamId)):a.content.length>0&&c.controller.enqueue(a));let d=this.textStreamControllers.get(a.streamId);d&&(d.info.encryptionType!==b?(d.controller.error(new eB("Encryption type mismatch for stream ".concat(a.streamId,". Expected ").concat(b,", got ").concat(d.info.encryptionType),q.EncryptionTypeMismatch)),this.textStreamControllers.delete(a.streamId)):a.content.length>0&&d.controller.enqueue(a))}handleStreamTrailer(a,b){let c=this.textStreamControllers.get(a.streamId);c&&(c.info.encryptionType!==b?c.controller.error(new eB("Encryption type mismatch for stream ".concat(a.streamId,". Expected ").concat(b,", got ").concat(c.info.encryptionType),q.EncryptionTypeMismatch)):(c.info.attributes=Object.assign(Object.assign({},c.info.attributes),a.attributes),c.controller.close(),this.textStreamControllers.delete(a.streamId)));let d=this.byteStreamControllers.get(a.streamId);d&&(d.info.encryptionType!==b?d.controller.error(new eB("Encryption type mismatch for stream ".concat(a.streamId,". Expected ").concat(b,", got ").concat(d.info.encryptionType),q.EncryptionTypeMismatch)):(d.info.attributes=Object.assign(Object.assign({},d.info.attributes),a.attributes),d.controller.close()),this.byteStreamControllers.delete(a.streamId))}}class gG{constructor(a,b,c){this.writableStream=a,this.defaultWriter=a.getWriter(),this.onClose=c,this.info=b}write(a){return this.defaultWriter.write(a)}close(){return dr(this,void 0,void 0,function*(){var a;yield this.defaultWriter.close(),this.defaultWriter.releaseLock(),null==(a=this.onClose)||a.call(this)})}}class gH extends gG{}class gI extends gG{}class gJ{constructor(a,b){this.engine=a,this.log=b}setupEngine(a){this.engine=a}sendText(a,b){return dr(this,void 0,void 0,function*(){var c;let d=crypto.randomUUID(),e=new TextEncoder().encode(a).byteLength,f=null==(c=null==b?void 0:b.attachments)?void 0:c.map(()=>crypto.randomUUID()),g=Array(f?f.length+1:1).fill(0),h=(a,c)=>{var d;g[c]=a;let e=g.reduce((a,b)=>a+b,0);null==(d=null==b?void 0:b.onProgress)||d.call(b,e)},i=yield this.streamText({streamId:d,totalSize:e,destinationIdentities:null==b?void 0:b.destinationIdentities,topic:null==b?void 0:b.topic,attachedStreamIds:f,attributes:null==b?void 0:b.attributes});return yield i.write(a),h(1,0),yield i.close(),(null==b?void 0:b.attachments)&&f&&(yield Promise.all(b.attachments.map((a,c)=>dr(this,void 0,void 0,function*(){return this._sendFile(f[c],a,{topic:b.topic,mimeType:a.type,onProgress:a=>{h(a,c+1)}})})))),i.info})}streamText(a){return dr(this,void 0,void 0,function*(){var b,c,d;let e=null!=(b=null==a?void 0:a.streamId)?b:crypto.randomUUID(),f={id:e,mimeType:"text/plain",timestamp:Date.now(),topic:null!=(c=null==a?void 0:a.topic)?c:"",size:null==a?void 0:a.totalSize,attributes:null==a?void 0:a.attributes,encryptionType:(null==(d=this.engine.e2eeManager)?void 0:d.isDataChannelEncryptionEnabled)?bv.GCM:bv.NONE},g=new b_({streamId:e,mimeType:f.mimeType,topic:f.topic,timestamp:ft(f.timestamp),totalLength:ft(null==a?void 0:a.totalSize),attributes:f.attributes,contentHeader:{case:"textHeader",value:new bZ({version:null==a?void 0:a.version,attachedStreamIds:null==a?void 0:a.attachedStreamIds,replyToStreamId:null==a?void 0:a.replyToStreamId,operationType:(null==a?void 0:a.type)==="update"?bY.UPDATE:bY.CREATE})}}),h=null==a?void 0:a.destinationIdentities,i=new bA({destinationIdentities:h,value:{case:"streamHeader",value:g}});yield this.engine.sendDataPacket(i,bB.RELIABLE);let j=0,k=this.engine,l=new WritableStream({write(a){return dr(this,void 0,void 0,function*(){for(let b of function(a,b){let c=[],d=new TextEncoder().encode(a);for(;d.length>15e3;){let a=15e3;for(;a>0;){let b=d[a];if(void 0!==b&&(192&b)!=128)break;a--}c.push(d.slice(0,a)),d=d.slice(a)}return d.length>0&&c.push(d),c}(a,15e3)){let a=new bA({destinationIdentities:h,value:{case:"streamChunk",value:new b0({content:b,streamId:e,chunkIndex:ft(j)})}});yield k.sendDataPacket(a,bB.RELIABLE),j+=1}})},close(){return dr(this,void 0,void 0,function*(){let a=new bA({destinationIdentities:h,value:{case:"streamTrailer",value:new b1({streamId:e})}});yield k.sendDataPacket(a,bB.RELIABLE)})},abort(a){console.log("Sink error:",a)}}),m=()=>dr(this,void 0,void 0,function*(){yield n.close()});k.once(u.Closing,m);let n=new gH(l,f,()=>this.engine.off(u.Closing,m));return n})}sendFile(a,b){return dr(this,void 0,void 0,function*(){let c=crypto.randomUUID();return yield this._sendFile(c,a,b),{id:c}})}_sendFile(a,b,c){return dr(this,void 0,void 0,function*(){var d;let e=yield this.streamBytes({streamId:a,totalSize:b.size,name:b.name,mimeType:null!=(d=null==c?void 0:c.mimeType)?d:b.type,topic:null==c?void 0:c.topic,destinationIdentities:null==c?void 0:c.destinationIdentities}),f=b.stream().getReader();for(;;){let{done:a,value:b}=yield f.read();if(a)break;yield e.write(b)}return yield e.close(),e.info})}streamBytes(a){return dr(this,void 0,void 0,function*(){var b,c,d,e,f,g;let h=null!=(b=null==a?void 0:a.streamId)?b:crypto.randomUUID(),i=null==a?void 0:a.destinationIdentities,j={id:h,mimeType:null!=(c=null==a?void 0:a.mimeType)?c:"application/octet-stream",topic:null!=(d=null==a?void 0:a.topic)?d:"",timestamp:Date.now(),attributes:null==a?void 0:a.attributes,size:null==a?void 0:a.totalSize,name:null!=(e=null==a?void 0:a.name)?e:"unknown",encryptionType:(null==(f=this.engine.e2eeManager)?void 0:f.isDataChannelEncryptionEnabled)?bv.GCM:bv.NONE},k=new bA({destinationIdentities:i,value:{case:"streamHeader",value:new b_({totalLength:ft(null!=(g=j.size)?g:0),mimeType:j.mimeType,streamId:h,topic:j.topic,timestamp:ft(Date.now()),attributes:j.attributes,contentHeader:{case:"byteHeader",value:new b$({name:j.name})}})}});yield this.engine.sendDataPacket(k,bB.RELIABLE);let l=0,m=new S,n=this.engine,o=this.log;return new gI(new WritableStream({write(a){return dr(this,void 0,void 0,function*(){let b=yield m.lock(),c=0;try{for(;c<a.byteLength;){let b=a.slice(c,c+15e3),d=new bA({destinationIdentities:i,value:{case:"streamChunk",value:new b0({content:b,streamId:h,chunkIndex:ft(l)})}});yield n.sendDataPacket(d,bB.RELIABLE),l+=1,c+=b.byteLength}}finally{b()}})},close(){return dr(this,void 0,void 0,function*(){let a=new bA({destinationIdentities:i,value:{case:"streamTrailer",value:new b1({streamId:h})}});yield n.sendDataPacket(a,bB.RELIABLE)})},abort(a){o.error("Sink error:",a)}}),j)})}}class gK extends eW{constructor(a,b,c,d,e){super(a,c,e),this.sid=b,this.receiver=d}get isLocal(){return!1}setMuted(a){this.isMuted!==a&&(this.isMuted=a,this._mediaStreamTrack.enabled=!a,this.emit(a?v.Muted:v.Unmuted,this))}setMediaStream(a){this.mediaStream=a;let b=c=>{c.track===this._mediaStreamTrack&&(a.removeEventListener("removetrack",b),this.receiver&&"playoutDelayHint"in this.receiver&&(this.receiver.playoutDelayHint=void 0),this.receiver=void 0,this._currentBitrate=0,this.emit(v.Ended,this))};a.addEventListener("removetrack",b)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return dr(this,void 0,void 0,function*(){var a;if(null==(a=this.receiver)?void 0:a.getStats)return yield this.receiver.getStats()})}setPlayoutDelay(a){this.receiver?"playoutDelayHint"in this.receiver?this.receiver.playoutDelayHint=a:this.log.warn("Playout delay not supported in this browser"):this.log.warn("Cannot set playout delay, track already ended")}getPlayoutDelay(){if(this.receiver)if("playoutDelayHint"in this.receiver)return this.receiver.playoutDelayHint;else this.log.warn("Playout delay not supported in this browser");else this.log.warn("Cannot get playout delay, track already ended");return 0}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval(()=>this.monitorReceiver(),2e3)),"undefined"!=typeof RTCRtpReceiver&&"getSynchronizationSources"in RTCRtpReceiver&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){let a=()=>{var b;this.timeSyncHandle=requestAnimationFrame(()=>a());let c=null==(b=this.receiver)?void 0:b.getSynchronizationSources()[0];if(c){let{timestamp:a,rtpTimestamp:b}=c;b&&this.rtpTimestamp!==b&&(this.emit(v.TimeSyncUpdate,{timestamp:a,rtpTimestamp:b}),this.rtpTimestamp=b)}};a()}}class gL extends gK{constructor(a,b,c,d,e,f){super(a,b,eW.Kind.Audio,c,f),this.monitorReceiver=()=>dr(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let a=yield this.getReceiverStats();a&&this.prevStats&&this.receiver&&(this._currentBitrate=gb(a,this.prevStats)),this.prevStats=a}),this.audioContext=d,this.webAudioPluginNodes=[],e&&(this.sinkId=e.deviceId)}setVolume(a){var b;for(let c of this.attachedElements)this.audioContext?null==(b=this.gainNode)||b.gain.setTargetAtTime(a,0,.1):c.volume=a;e9()&&this._mediaStreamTrack._setVolume(a),this.elementVolume=a}getVolume(){if(this.elementVolume)return this.elementVolume;if(e9())return 1;let a=0;return this.attachedElements.forEach(b=>{b.volume>a&&(a=b.volume)}),a}setSinkId(a){return dr(this,void 0,void 0,function*(){this.sinkId=a,yield Promise.all(this.attachedElements.map(b=>{if(e2(b))return b.setSinkId(a)}))})}attach(a){let b=0===this.attachedElements.length;return a?super.attach(a):a=super.attach(),this.sinkId&&e2(a)&&a.setSinkId(this.sinkId).catch(a=>{this.log.error("Failed to set sink id on remote audio track",a,this.logContext)}),this.audioContext&&b&&(this.log.debug("using audio context mapping",this.logContext),this.connectWebAudio(this.audioContext,a),a.volume=0,a.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),a}detach(a){let b;return a?(b=super.detach(a),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(b=super.detach(),this.disconnectWebAudio()),b}setAudioContext(a){this.audioContext=a,a&&this.attachedElements.length>0?this.connectWebAudio(a,this.attachedElements[0]):a||this.disconnectWebAudio()}setWebAudioPlugins(a){this.webAudioPluginNodes=a,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(a,b){this.disconnectWebAudio(),this.sourceNode=a.createMediaStreamSource(b.srcObject);let c=this.sourceNode;this.webAudioPluginNodes.forEach(a=>{c.connect(a),c=a}),this.gainNode=a.createGain(),c.connect(this.gainNode),this.gainNode.connect(a.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),"running"!==a.state&&a.resume().then(()=>{"running"!==a.state&&this.emit(v.AudioPlaybackFailed,Error("Audio Context couldn't be started automatically"))}).catch(a=>{this.emit(v.AudioPlaybackFailed,a)})}disconnectWebAudio(){var a,b;null==(a=this.gainNode)||a.disconnect(),null==(b=this.sourceNode)||b.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return dr(this,void 0,void 0,function*(){let a;if(this.receiver&&this.receiver.getStats)return(yield this.receiver.getStats()).forEach(b=>{"inbound-rtp"===b.type&&(a={type:"audio",streamId:b.id,timestamp:b.timestamp,jitter:b.jitter,bytesReceived:b.bytesReceived,concealedSamples:b.concealedSamples,concealmentEvents:b.concealmentEvents,silentConcealedSamples:b.silentConcealedSamples,silentConcealmentEvents:b.silentConcealmentEvents,totalAudioEnergy:b.totalAudioEnergy,totalSamplesDuration:b.totalSamplesDuration})}),a})}}class gM extends gK{constructor(a,b,c,d,e){super(a,b,eW.Kind.Video,c,e),this.elementInfos=[],this.monitorReceiver=()=>dr(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let a=yield this.getReceiverStats();a&&this.prevStats&&this.receiver&&(this._currentBitrate=gb(a,this.prevStats)),this.prevStats=a}),this.debouncedHandleResize=fX(()=>{this.updateDimensions()},100),this.adaptiveStreamSettings=d}get isAdaptiveStream(){return void 0!==this.adaptiveStreamSettings}setStreamState(a){super.setStreamState(a),this.log.debug("setStreamState",a),this.isAdaptiveStream&&a===eW.StreamState.Active&&this.updateVisibility()}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(a){super.setMuted(a),this.attachedElements.forEach(b=>{a?eY(this._mediaStreamTrack,b):eX(this._mediaStreamTrack,b)})}attach(a){if(a?super.attach(a):a=super.attach(),this.adaptiveStreamSettings&&void 0===this.elementInfos.find(b=>b.element===a)){let b=new gN(a);this.observeElementInfo(b)}return a}observeElementInfo(a){this.adaptiveStreamSettings&&void 0===this.elementInfos.find(b=>b===a)?(a.handleResize=()=>{this.debouncedHandleResize()},a.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(a),a.observe(),this.debouncedHandleResize(),this.updateVisibility()):this.log.warn("visibility resize observer not triggered",this.logContext)}stopObservingElementInfo(a){if(!this.isAdaptiveStream)return void this.log.warn("stopObservingElementInfo ignored",this.logContext);for(let b of this.elementInfos.filter(b=>b===a))b.stopObserving();this.elementInfos=this.elementInfos.filter(b=>b!==a),this.updateVisibility(),this.debouncedHandleResize()}detach(a){let b=[];if(a)return this.stopObservingElement(a),super.detach(a);for(let a of b=super.detach())this.stopObservingElement(a);return b}getDecoderImplementation(){var a;return null==(a=this.prevStats)?void 0:a.decoderImplementation}getReceiverStats(){return dr(this,void 0,void 0,function*(){let a;if(!this.receiver||!this.receiver.getStats)return;let b=yield this.receiver.getStats(),c="",d=new Map;return b.forEach(b=>{"inbound-rtp"===b.type?(c=b.codecId,a={type:"video",streamId:b.id,framesDecoded:b.framesDecoded,framesDropped:b.framesDropped,framesReceived:b.framesReceived,packetsReceived:b.packetsReceived,packetsLost:b.packetsLost,frameWidth:b.frameWidth,frameHeight:b.frameHeight,pliCount:b.pliCount,firCount:b.firCount,nackCount:b.nackCount,jitter:b.jitter,timestamp:b.timestamp,bytesReceived:b.bytesReceived,decoderImplementation:b.decoderImplementation}):"codec"===b.type&&d.set(b.id,b)}),a&&""!==c&&d.get(c)&&(a.mimeType=d.get(c).mimeType),a})}stopObservingElement(a){for(let b of this.elementInfos.filter(b=>b.element===a))this.stopObservingElementInfo(b)}handleAppVisibilityChanged(){let a=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return dr(this,void 0,void 0,function*(){yield a.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(a){var b,c;let d=this.elementInfos.reduce((a,b)=>Math.max(a,b.visibilityChangedAt||0),0),e=(null==(c=null==(b=this.adaptiveStreamSettings)?void 0:b.pauseVideoInBackground)||!!c)&&this.isInBackground,f=this.elementInfos.some(a=>a.pictureInPicture),g=this.elementInfos.some(a=>a.visible)&&!e||f;if(this.lastVisible!==g||a){if(!g&&Date.now()-d<100)return void eD.setTimeout(()=>{this.updateVisibility()},100);this.lastVisible=g,this.emit(v.VisibilityChanged,g,this)}}updateDimensions(){var a,b;let c=0,d=0,e=this.getPixelDensity();for(let a of this.elementInfos){let b=a.width()*e,f=a.height()*e;b+f>c+d&&(c=b,d=f)}((null==(a=this.lastDimensions)?void 0:a.width)!==c||(null==(b=this.lastDimensions)?void 0:b.height)!==d)&&(this.lastDimensions={width:c,height:d},this.emit(v.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var a;let b=null==(a=this.adaptiveStreamSettings)?void 0:a.pixelDensity;return"screen"===b?fe():b?b:fe()>2?2:1}}class gN{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(a,b){this.onVisibilityChanged=a=>{var b;let{target:c,isIntersecting:d}=a;c===this.element&&(this.isIntersecting=d,this.isPiP=gO(this.element),this.visibilityChangedAt=Date.now(),null==(b=this.handleVisibilityChanged)||b.call(this))},this.onEnterPiP=()=>{var a,b,c;null==(b=null==(a=window.documentPictureInPicture)?void 0:a.window)||b.addEventListener("pagehide",this.onLeavePiP),this.isPiP=gO(this.element),null==(c=this.handleVisibilityChanged)||c.call(this)},this.onLeavePiP=()=>{var a;this.isPiP=gO(this.element),null==(a=this.handleVisibilityChanged)||a.call(this)},this.element=a,this.isIntersecting=null!=b?b:gP(a),this.isPiP=e8()&&gO(a),this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){var a,b,c;this.isIntersecting=gP(this.element),this.isPiP=gO(this.element),this.element.handleResize=()=>{var a;null==(a=this.handleResize)||a.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,fl().observe(this.element),fj().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP),null==(a=window.documentPictureInPicture)||a.addEventListener("enter",this.onEnterPiP),null==(c=null==(b=window.documentPictureInPicture)?void 0:b.window)||c.addEventListener("pagehide",this.onLeavePiP)}stopObserving(){var a,b,c,d,e;null==(a=fl())||a.unobserve(this.element),null==(b=fj())||b.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP),null==(c=window.documentPictureInPicture)||c.removeEventListener("enter",this.onEnterPiP),null==(e=null==(d=window.documentPictureInPicture)?void 0:d.window)||e.removeEventListener("pagehide",this.onLeavePiP)}}function gO(a){var b,c;return document.pictureInPictureElement===a||null!=(b=window.documentPictureInPicture)&&!!b.window&&gP(a,null==(c=window.documentPictureInPicture)?void 0:c.window)}function gP(a,b){let c=b||window,d=a.offsetTop,e=a.offsetLeft,f=a.offsetWidth,g=a.offsetHeight,{hidden:h}=a,{display:i}=getComputedStyle(a);for(;a.offsetParent;)d+=(a=a.offsetParent).offsetTop,e+=a.offsetLeft;return d<c.pageYOffset+c.innerHeight&&e<c.pageXOffset+c.innerWidth&&d+g>c.pageYOffset&&e+f>c.pageXOffset&&!h&&"none"!==i}class gQ extends du.EventEmitter{constructor(a,b,c,d){var e;super(),this.metadataMuted=!1,this.encryption=bv.NONE,this.log=dl,this.handleMuted=()=>{this.emit(v.Muted)},this.handleUnmuted=()=>{this.emit(v.Unmuted)},this.log=dm(null!=(e=null==d?void 0:d.loggerName)?e:m.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=a,this.trackSid=b,this.trackName=c,this.source=eW.Source.Unknown}setTrack(a){this.track&&(this.track.off(v.Muted,this.handleMuted),this.track.off(v.Unmuted,this.handleUnmuted)),this.track=a,a&&(a.on(v.Muted,this.handleMuted),a.on(v.Unmuted,this.handleUnmuted))}get logContext(){var a;return Object.assign(Object.assign({},null==(a=this.loggerContextCb)?void 0:a.call(this)),eS(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return void 0!==this.track}get isEncrypted(){return this.encryption!==bv.NONE}get audioTrack(){if(fv(this.track))return this.track}get videoTrack(){if(fw(this.track))return this.track}updateInfo(a){this.trackSid=a.sid,this.trackName=a.name,this.source=eW.sourceFromProto(a.source),this.mimeType=a.mimeType,this.kind===eW.Kind.Video&&a.width>0&&(this.dimensions={width:a.width,height:a.height},this.simulcasted=a.simulcast),this.encryption=a.encryption,this.trackInfo=a,this.log.debug("update publication info",Object.assign(Object.assign({},this.logContext),{info:a}))}}!function(a){var b,c;(b=a.SubscriptionStatus||(a.SubscriptionStatus={})).Desired="desired",b.Subscribed="subscribed",b.Unsubscribed="unsubscribed",(c=a.PermissionStatus||(a.PermissionStatus={})).Allowed="allowed",c.NotAllowed="not_allowed"}(gQ||(gQ={}));class gR extends gQ{get isUpstreamPaused(){var a;return null==(a=this.track)?void 0:a.isUpstreamPaused}constructor(a,b,c,d){super(a,b.sid,b.name,d),this.track=void 0,this.handleTrackEnded=()=>{this.emit(v.Ended)},this.handleCpuConstrained=()=>{this.track&&fw(this.track)&&this.emit(v.CpuConstrained,this.track)},this.updateInfo(b),this.setTrack(c)}setTrack(a){this.track&&(this.track.off(v.Ended,this.handleTrackEnded),this.track.off(v.CpuConstrained,this.handleCpuConstrained)),super.setTrack(a),a&&(a.on(v.Ended,this.handleTrackEnded),a.on(v.CpuConstrained,this.handleCpuConstrained))}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}get isLocal(){return!0}mute(){return dr(this,void 0,void 0,function*(){var a;return null==(a=this.track)?void 0:a.mute()})}unmute(){return dr(this,void 0,void 0,function*(){var a;return null==(a=this.track)?void 0:a.unmute()})}pauseUpstream(){return dr(this,void 0,void 0,function*(){var a;yield null==(a=this.track)?void 0:a.pauseUpstream()})}resumeUpstream(){return dr(this,void 0,void 0,function*(){var a;yield null==(a=this.track)?void 0:a.resumeUpstream()})}getTrackFeatures(){var a;if(!fv(this.track))return[];{let b=this.track.getSourceTrackSettings(),c=new Set;return b.autoGainControl&&c.add(bn.TF_AUTO_GAIN_CONTROL),b.echoCancellation&&c.add(bn.TF_ECHO_CANCELLATION),b.noiseSuppression&&c.add(bn.TF_NOISE_SUPPRESSION),b.channelCount&&b.channelCount>1&&c.add(bn.TF_STEREO),(null==(a=this.options)?void 0:a.dtx)||c.add(bn.TF_NO_DTX),this.track.enhancedNoiseCancellation&&c.add(bn.TF_ENHANCED_NOISE_CANCELLATION),Array.from(c.values())}}}function gS(a,b){return dr(this,void 0,void 0,function*(){null!=a||(a={});let c=!1,{audioProcessor:d,videoProcessor:e,optionsWithoutProcessor:f}=eT(a),g=f.audio,h=f.video;if(d&&"object"==typeof f.audio&&(f.audio.processor=d),e&&"object"==typeof f.video&&(f.video.processor=e),a.audio&&"object"==typeof f.audio&&"string"==typeof f.audio.deviceId){let a=f.audio.deviceId;f.audio.deviceId={exact:a},c=!0,g=Object.assign(Object.assign({},f.audio),{deviceId:{ideal:a}})}if(f.video&&"object"==typeof f.video&&"string"==typeof f.video.deviceId){let a=f.video.deviceId;f.video.deviceId={exact:a},c=!0,h=Object.assign(Object.assign({},f.video),{deviceId:{ideal:a}})}!0===f.audio?f.audio={deviceId:"default"}:"object"==typeof f.audio&&null!==f.audio&&(f.audio=Object.assign(Object.assign({},f.audio),{deviceId:f.audio.deviceId||"default"})),!0===f.video?f.video={deviceId:"default"}:"object"!=typeof f.video||f.video.deviceId||(f.video.deviceId="default");let i=eL(f,f2,f3),j=eN(i),k=navigator.mediaDevices.getUserMedia(j);f.audio&&(fJ.userMediaPromiseMap.set("audioinput",k),k.catch(()=>fJ.userMediaPromiseMap.delete("audioinput"))),f.video&&(fJ.userMediaPromiseMap.set("videoinput",k),k.catch(()=>fJ.userMediaPromiseMap.delete("videoinput")));try{let a=yield k;return yield Promise.all(a.getTracks().map(c=>dr(this,void 0,void 0,function*(){let f,g="audio"===c.kind,h=g?i.audio:i.video;"boolean"!=typeof h&&h||(h={});let k=g?j.audio:j.video;"boolean"!=typeof k&&(f=k);let l=c.getSettings().deviceId;(null==f?void 0:f.deviceId)&&fp(f.deviceId)!==l?f.deviceId=l:f||(f={deviceId:l});let m=function(a,b,c){switch(a.kind){case"audio":return new gh(a,b,!1,void 0,c);case"video":return new gt(a,b,!1,c);default:throw new ev("unsupported track type: ".concat(a.kind))}}(c,f,b);return m.kind===eW.Kind.Video?m.source=eW.Source.Camera:m.kind===eW.Kind.Audio&&(m.source=eW.Source.Microphone),m.mediaStream=a,fv(m)&&d?yield m.setProcessor(d):fw(m)&&e&&(yield m.setProcessor(e)),m})))}catch(d){if(!c)throw d;return gS(Object.assign(Object.assign({},a),{audio:g,video:h}),b)}})}!function(a){a.Excellent="excellent",a.Good="good",a.Poor="poor",a.Lost="lost",a.Unknown="unknown"}(N||(N={}));class gT extends du.EventEmitter{get logContext(){var a,b;return Object.assign({},null==(b=null==(a=this.loggerOptions)?void 0:a.loggerContextCb)?void 0:b.call(a))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every(a=>a.isEncrypted)}get isAgent(){var a;return(null==(a=this.permissions)?void 0:a.agent)||this.kind===bt.AGENT}get isActive(){var a;return(null==(a=this.participantInfo)?void 0:a.state)===bs.ACTIVE}get kind(){return this._kind}get attributes(){return Object.freeze(Object.assign({},this._attributes))}constructor(a,b,c,d,e,f){var g;let h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:bt.STANDARD;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=N.Unknown,this.log=dl,this.log=dm(null!=(g=null==f?void 0:f.loggerName)?g:m.Participant),this.loggerOptions=f,this.setMaxListeners(100),this.sid=a,this.identity=b,this.name=c,this.metadata=d,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this._kind=h,this._attributes=null!=e?e:{}}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(a){for(let[,b]of this.trackPublications)if(b.source===a)return b}getTrackPublicationByName(a){for(let[,b]of this.trackPublications)if(b.trackName===a)return b}waitUntilActive(){return this.isActive?Promise.resolve():(this.activeFuture||(this.activeFuture=new fo,this.once(t.Active,()=>{var a,b;null==(b=null==(a=this.activeFuture)?void 0:a.resolve)||b.call(a),this.activeFuture=void 0})),this.activeFuture.promise)}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var a;let b=this.getTrackPublication(eW.Source.Camera);return!(null==(a=null==b?void 0:b.isMuted)||a)}get isMicrophoneEnabled(){var a;let b=this.getTrackPublication(eW.Source.Microphone);return!(null==(a=null==b?void 0:b.isMuted)||a)}get isScreenShareEnabled(){return!!this.getTrackPublication(eW.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(1e3*Number.parseInt(this.participantInfo.joinedAt.toString())):new Date}updateInfo(a){var b;return(!this.participantInfo||this.participantInfo.sid!==a.sid||!(this.participantInfo.version>a.version))&&(this.identity=a.identity,this.sid=a.sid,this._setName(a.name),this._setMetadata(a.metadata),this._setAttributes(a.attributes),a.state===bs.ACTIVE&&(null==(b=this.participantInfo)?void 0:b.state)!==bs.ACTIVE&&this.emit(t.Active),a.permission&&this.setPermissions(a.permission),this.participantInfo=a,!0)}_setMetadata(a){let b=this.metadata!==a,c=this.metadata;this.metadata=a,b&&this.emit(t.ParticipantMetadataChanged,c)}_setName(a){let b=this.name!==a;this.name=a,b&&this.emit(t.ParticipantNameChanged,a)}_setAttributes(a){let b=function(a,b){var c;void 0===a&&(a={}),void 0===b&&(b={});let d=[...Object.keys(b),...Object.keys(a)],e={};for(let f of d)a[f]!==b[f]&&(e[f]=null!=(c=b[f])?c:"");return e}(this.attributes,a);this._attributes=a,Object.keys(b).length>0&&this.emit(t.AttributesChanged,b)}setPermissions(a){var b,c,d,e,f,g;let h=this.permissions,i=a.canPublish!==(null==(b=this.permissions)?void 0:b.canPublish)||a.canSubscribe!==(null==(c=this.permissions)?void 0:c.canSubscribe)||a.canPublishData!==(null==(d=this.permissions)?void 0:d.canPublishData)||a.hidden!==(null==(e=this.permissions)?void 0:e.hidden)||a.recorder!==(null==(f=this.permissions)?void 0:f.recorder)||a.canPublishSources.length!==this.permissions.canPublishSources.length||a.canPublishSources.some((a,b)=>{var c;return a!==(null==(c=this.permissions)?void 0:c.canPublishSources[b])})||a.canSubscribeMetrics!==(null==(g=this.permissions)?void 0:g.canSubscribeMetrics);return this.permissions=a,i&&this.emit(t.ParticipantPermissionsChanged,h),i}setIsSpeaking(a){a!==this.isSpeaking&&(this.isSpeaking=a,a&&(this.lastSpokeAt=new Date),this.emit(t.IsSpeakingChanged,a))}setConnectionQuality(a){let b=this._connectionQuality;this._connectionQuality=function(a){switch(a){case bi.EXCELLENT:return N.Excellent;case bi.GOOD:return N.Good;case bi.POOR:return N.Poor;case bi.LOST:return N.Lost;default:return N.Unknown}}(a),b!==this._connectionQuality&&this.emit(t.ConnectionQualityChanged,this._connectionQuality)}setDisconnected(){var a,b;this.activeFuture&&(null==(b=(a=this.activeFuture).reject)||b.call(a,Error("Participant disconnected")),this.activeFuture=void 0)}setAudioContext(a){this.audioContext=a,this.audioTrackPublications.forEach(b=>fv(b.track)&&b.track.setAudioContext(a))}addTrackPublication(a){switch(a.on(v.Muted,()=>{this.emit(t.TrackMuted,a)}),a.on(v.Unmuted,()=>{this.emit(t.TrackUnmuted,a)}),a.track&&(a.track.sid=a.trackSid),this.trackPublications.set(a.trackSid,a),a.kind){case eW.Kind.Audio:this.audioTrackPublications.set(a.trackSid,a);break;case eW.Kind.Video:this.videoTrackPublications.set(a.trackSid,a)}}}class gU extends gT{constructor(a,b,c,d,e,f){super(a,b,void 0,void 0,void 0,{loggerName:d.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=bv.NONE,this.enabledPublishVideoCodecs=[],this.pendingAcks=new Map,this.pendingResponses=new Map,this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new fo)},this.handleReconnected=()=>{var a,b;null==(b=null==(a=this.reconnectFuture)?void 0:a.resolve)||b.call(a),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleClosing=()=>{var a,b,c,d,e,f;this.reconnectFuture&&(this.reconnectFuture.promise.catch(a=>this.log.warn(a.message,this.logContext)),null==(b=null==(a=this.reconnectFuture)?void 0:a.reject)||b.call(a,Error("Got disconnected during reconnection attempt")),this.reconnectFuture=void 0),this.signalConnectedFuture&&(null==(d=(c=this.signalConnectedFuture).reject)||d.call(c,Error("Got disconnected without signal connected")),this.signalConnectedFuture=void 0),null==(f=null==(e=this.activeAgentFuture)?void 0:e.reject)||f.call(e,Error("Got disconnected without active agent present")),this.activeAgentFuture=void 0,this.firstActiveAgent=void 0},this.handleSignalConnected=a=>{var b,c;a.participant&&this.updateInfo(a.participant),this.signalConnectedFuture||(this.signalConnectedFuture=new fo),null==(c=(b=this.signalConnectedFuture).resolve)||c.call(b)},this.handleSignalRequestResponse=a=>{let{requestId:b,reason:c,message:d}=a,e=this.pendingSignalRequests.get(b);e&&(c!==db.OK&&e.reject(new eA(d,c)),this.pendingSignalRequests.delete(b))},this.handleDataPacket=a=>{switch(a.value.case){case"rpcResponse":let b=a.value.value,c=null,d=null;"payload"===b.value.case?c=b.value.value:"error"===b.value.case&&(d=f8.fromProto(b.value.value)),this.handleIncomingRpcResponse(b.requestId,c,d);break;case"rpcAck":let e=a.value.value;this.handleIncomingRpcAck(e.requestId)}},this.updateTrackSubscriptionPermissions=()=>{this.log.debug("updating track subscription permissions",Object.assign(Object.assign({},this.logContext),{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions})),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map(a=>(function(a){var b,c,d;if(!a.participantSid&&!a.participantIdentity)throw Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new cZ({participantIdentity:null!=(b=a.participantIdentity)?b:"",participantSid:null!=(c=a.participantSid)?c:"",allTracks:null!=(d=a.allowAll)&&d,trackSids:a.allowedTrackSids||[]})})(a)))},this.onTrackUnmuted=a=>{this.onTrackMuted(a,a.isUpstreamPaused)},this.onTrackMuted=(a,b)=>{if(void 0===b&&(b=!0),!a.sid)return void this.log.error("could not update mute status for unpublished track",Object.assign(Object.assign({},this.logContext),eS(a)));this.engine.updateMuteStatus(a.sid,b)},this.onTrackUpstreamPaused=a=>{this.log.debug("upstream paused",Object.assign(Object.assign({},this.logContext),eS(a))),this.onTrackMuted(a,!0)},this.onTrackUpstreamResumed=a=>{this.log.debug("upstream resumed",Object.assign(Object.assign({},this.logContext),eS(a))),this.onTrackMuted(a,a.isMuted)},this.onTrackFeatureUpdate=a=>{let b=this.audioTrackPublications.get(a.sid);if(!b)return void this.log.warn("Could not update local audio track settings, missing publication for track ".concat(a.sid),this.logContext);this.engine.client.sendUpdateLocalAudioTrack(b.trackSid,b.getTrackFeatures())},this.onTrackCpuConstrained=(a,b)=>{this.log.debug("track cpu constrained",Object.assign(Object.assign({},this.logContext),eS(b))),this.emit(t.LocalTrackCpuConstrained,a,b)},this.handleSubscribedQualityUpdate=a=>dr(this,void 0,void 0,function*(){if(!(null==(h=this.roomOptions)?void 0:h.dynacast))return;let b=this.videoTrackPublications.get(a.trackSid);if(!b)return void this.log.warn("received subscribed quality update for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:a.trackSid}));if(!b.videoTrack)return;let c=yield b.videoTrack.setPublishingCodecs(a.subscribedCodecs);try{for(var d,e,f,g,h,i,j=!0,k=ds(c);!(d=(i=yield k.next()).done);j=!0)g=i.value,j=!1,eH(g)&&(this.log.debug("publish ".concat(g," for ").concat(b.videoTrack.sid),Object.assign(Object.assign({},this.logContext),eS(b))),yield this.publishAdditionalCodecForTrack(b.videoTrack,g,b.options))}catch(a){e={error:a}}finally{try{!j&&!d&&(f=k.return)&&(yield f.call(k))}finally{if(e)throw e.error}}}),this.handleLocalTrackUnpublished=a=>{let b=this.trackPublications.get(a.trackSid);if(!b)return void this.log.warn("received unpublished event for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:a.trackSid}));this.unpublishTrack(b.track)},this.handleTrackEnded=a=>dr(this,void 0,void 0,function*(){if(a.source===eW.Source.ScreenShare||a.source===eW.Source.ScreenShareAudio)this.log.debug("unpublishing local track due to TrackEnded",Object.assign(Object.assign({},this.logContext),eS(a))),this.unpublishTrack(a);else if(a.isUserProvided)yield a.mute();else if(fy(a)||fx(a))try{if(e8())try{let b=yield null==navigator?void 0:navigator.permissions.query({name:a.source===eW.Source.Camera?"camera":"microphone"});if(b&&"denied"===b.state)throw this.log.warn("user has revoked access to ".concat(a.source),Object.assign(Object.assign({},this.logContext),eS(a))),b.onchange=()=>{"denied"!==b.state&&(a.isMuted||a.restartTrack(),b.onchange=null)},Error("GetUserMedia Permission denied")}catch(a){}a.isMuted||(this.log.debug("track ended, attempting to use a different device",Object.assign(Object.assign({},this.logContext),eS(a))),fy(a)?yield a.restartTrack({deviceId:"default"}):yield a.restartTrack())}catch(b){this.log.warn("could not restart track, muting instead",Object.assign(Object.assign({},this.logContext),eS(a))),yield a.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map,this.engine=c,this.roomOptions=d,this.setupEngine(c),this.activeDeviceMap=new Map([["audioinput","default"],["videoinput","default"],["audiooutput","default"]]),this.pendingSignalRequests=new Map,this.rpcHandlers=e,this.roomOutgoingDataStreamManager=f}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==bv.NONE}getTrackPublication(a){let b=super.getTrackPublication(a);if(b)return b}getTrackPublicationByName(a){let b=super.getTrackPublicationByName(a);if(b)return b}setupEngine(a){var b;this.engine=a,this.engine.on(u.RemoteMute,(a,b)=>{let c=this.trackPublications.get(a);c&&c.track&&(b?c.mute():c.unmute())}),(null==(b=this.signalConnectedFuture)?void 0:b.isResolved)&&(this.signalConnectedFuture=void 0),this.engine.on(u.Connected,this.handleReconnected).on(u.SignalConnected,this.handleSignalConnected).on(u.SignalRestarted,this.handleReconnected).on(u.SignalResumed,this.handleReconnected).on(u.Restarting,this.handleReconnecting).on(u.Resuming,this.handleReconnecting).on(u.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(u.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(u.Closing,this.handleClosing).on(u.SignalRequestResponse,this.handleSignalRequestResponse).on(u.DataPacketReceived,this.handleDataPacket)}setMetadata(a){return dr(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({metadata:a})})}setName(a){return dr(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({name:a})})}setAttributes(a){return dr(this,void 0,void 0,function*(){yield this.requestMetadataUpdate({attributes:a})})}requestMetadataUpdate(a){return dr(this,arguments,void 0,function(a){var b=this;let{metadata:c,name:d,attributes:e}=a;return function*(){return new em((a,f)=>dr(b,void 0,void 0,function*(){var b,g;try{let h=!1,i=yield this.engine.client.sendUpdateLocalMetadata(null!=(b=null!=c?c:this.metadata)?b:"",null!=(g=null!=d?d:this.name)?g:"",e),j=performance.now();for(this.pendingSignalRequests.set(i,{resolve:a,reject:a=>{f(a),h=!0},values:{name:d,metadata:c,attributes:e}});performance.now()-j<5e3&&!h;){if((!d||this.name===d)&&(!c||this.metadata===c)&&(!e||Object.entries(e).every(a=>{let[b,c]=a;return this.attributes[b]===c||""===c&&!this.attributes[b]}))){this.pendingSignalRequests.delete(i),a();return}yield e$(50)}f(new eA("Request to update local metadata timed out","TimeoutError"))}catch(a){a instanceof Error?f(a):f(Error(String(a)))}}))}()})}setCameraEnabled(a,b,c){return this.setTrackEnabled(eW.Source.Camera,a,b,c)}setMicrophoneEnabled(a,b,c){return this.setTrackEnabled(eW.Source.Microphone,a,b,c)}setScreenShareEnabled(a,b,c){return this.setTrackEnabled(eW.Source.ScreenShare,a,b,c)}setE2EEEnabled(a){return dr(this,void 0,void 0,function*(){this.encryptionType=a?bv.GCM:bv.NONE,yield this.republishAllTracks(void 0,!1)})}setTrackEnabled(a,b,c,d){return dr(this,void 0,void 0,function*(){this.log.debug("setTrackEnabled",Object.assign(Object.assign({},this.logContext),{source:a,enabled:b})),this.republishPromise&&(yield this.republishPromise);let e=this.getTrackPublication(a);if(b)if(e)yield e.unmute();else{let b;if(this.pendingPublishing.has(a)){let b=yield this.waitForPendingPublicationOfSource(a);return b||this.log.info("waiting for pending publication promise timed out",Object.assign(Object.assign({},this.logContext),{source:a})),yield null==b?void 0:b.unmute(),b}this.pendingPublishing.add(a);try{switch(a){case eW.Source.Camera:b=yield this.createTracks({video:null==c||c});break;case eW.Source.Microphone:b=yield this.createTracks({audio:null==c||c});break;case eW.Source.ScreenShare:b=yield this.createScreenTracks(Object.assign({},c));break;default:throw new ev(a)}}catch(c){throw null==b||b.forEach(a=>{a.stop()}),c instanceof Error&&this.emit(t.MediaDevicesError,c,eQ(a)),this.pendingPublishing.delete(a),c}for(let d of b){let b=Object.assign(Object.assign({},this.roomOptions.publishDefaults),c);a===eW.Source.Microphone&&fv(d)&&b.preConnectBuffer&&(this.log.info("starting preconnect buffer for microphone",Object.assign({},this.logContext)),d.startPreConnectBuffer())}try{let a=[];for(let c of b)this.log.info("publishing track",Object.assign(Object.assign({},this.logContext),eS(c))),a.push(this.publishTrack(c,d));let c=yield Promise.all(a);[e]=c}catch(a){throw null==b||b.forEach(a=>{a.stop()}),a}finally{this.pendingPublishing.delete(a)}}else if(!(null==e?void 0:e.track)&&this.pendingPublishing.has(a)&&((e=yield this.waitForPendingPublicationOfSource(a))||this.log.info("waiting for pending publication promise timed out",Object.assign(Object.assign({},this.logContext),{source:a}))),e&&e.track)if(a===eW.Source.ScreenShare){e=yield this.unpublishTrack(e.track);let a=this.getTrackPublication(eW.Source.ScreenShareAudio);a&&a.track&&this.unpublishTrack(a.track)}else yield e.mute();return e})}enableCameraAndMicrophone(){return dr(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(eW.Source.Camera)||this.pendingPublishing.has(eW.Source.Microphone))){this.pendingPublishing.add(eW.Source.Camera),this.pendingPublishing.add(eW.Source.Microphone);try{let a=yield this.createTracks({audio:!0,video:!0});yield Promise.all(a.map(a=>this.publishTrack(a)))}finally{this.pendingPublishing.delete(eW.Source.Camera),this.pendingPublishing.delete(eW.Source.Microphone)}}})}createTracks(a){return dr(this,void 0,void 0,function*(){var b,c;null!=a||(a={});let d=eL(a,null==(b=this.roomOptions)?void 0:b.audioCaptureDefaults,null==(c=this.roomOptions)?void 0:c.videoCaptureDefaults);try{return(yield gS(d,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext})).map(a=>(fv(a)&&(this.microphoneError=void 0,a.setAudioContext(this.audioContext),a.source=eW.Source.Microphone,this.emit(t.AudioStreamAcquired)),fw(a)&&(this.cameraError=void 0,a.source=eW.Source.Camera),a))}catch(b){throw b instanceof Error&&(a.audio&&(this.microphoneError=b),a.video&&(this.cameraError=b)),b}})}createScreenTracks(a){return dr(this,void 0,void 0,function*(){var b,c,d;let e;if(void 0===a&&(a={}),void 0===navigator.mediaDevices.getDisplayMedia)throw new eu("getDisplayMedia not supported");void 0===a.resolution&&!function(){let a=eo();return(null==a?void 0:a.name)==="Safari"&&a.version.startsWith("17.")||(null==a?void 0:a.os)==="iOS"&&!!(null==a?void 0:a.osVersion)&&ff(a.osVersion,"17")>=0}()&&(a.resolution=eK.h1080fps30.resolution);let f=(e=null==(c=(b=a).video)||c,b.resolution&&b.resolution.width>0&&b.resolution.height>0&&(e="boolean"==typeof e?{}:e,e=e5()?Object.assign(Object.assign({},e),{width:{max:b.resolution.width},height:{max:b.resolution.height},frameRate:b.resolution.frameRate}):Object.assign(Object.assign({},e),{width:{ideal:b.resolution.width},height:{ideal:b.resolution.height},frameRate:b.resolution.frameRate})),{audio:null!=(d=b.audio)&&d,video:e,controller:b.controller,selfBrowserSurface:b.selfBrowserSurface,surfaceSwitching:b.surfaceSwitching,systemAudio:b.systemAudio,preferCurrentTab:b.preferCurrentTab}),g=yield navigator.mediaDevices.getDisplayMedia(f),h=g.getVideoTracks();if(0===h.length)throw new ev("no video track found");let i=new gt(h[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});i.source=eW.Source.ScreenShare,a.contentHint&&(i.mediaStreamTrack.contentHint=a.contentHint);let j=[i];if(g.getAudioTracks().length>0){this.emit(t.AudioStreamAcquired);let a=new gh(g.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});a.source=eW.Source.ScreenShareAudio,j.push(a)}return j})}publishTrack(a,b){return dr(this,void 0,void 0,function*(){return this.publishOrRepublishTrack(a,b)})}publishOrRepublishTrack(a,b){return dr(this,arguments,void 0,function(a,b){var c=this;let d=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function*(){var e,f;let g,h;if(fy(a)&&a.setAudioContext(c.audioContext),yield null==(e=c.reconnectFuture)?void 0:e.promise,c.republishPromise&&!d&&(yield c.republishPromise),fu(a)&&c.pendingPublishPromises.has(a)&&(yield c.pendingPublishPromises.get(a)),a instanceof MediaStreamTrack)g=a.getConstraints();else{let b;switch(g=a.constraints,a.source){case eW.Source.Microphone:b="audioinput";break;case eW.Source.Camera:b="videoinput"}b&&c.activeDeviceMap.has(b)&&(g=Object.assign(Object.assign({},g),{deviceId:c.activeDeviceMap.get(b)}))}if(a instanceof MediaStreamTrack)switch(a.kind){case"audio":a=new gh(a,g,!0,c.audioContext,{loggerName:c.roomOptions.loggerName,loggerContextCb:()=>c.logContext});break;case"video":a=new gt(a,g,!0,{loggerName:c.roomOptions.loggerName,loggerContextCb:()=>c.logContext});break;default:throw new ev("unsupported MediaStreamTrack kind ".concat(a.kind))}else a.updateLoggerOptions({loggerName:c.roomOptions.loggerName,loggerContextCb:()=>c.logContext});if(c.trackPublications.forEach(b=>{b.track&&b.track===a&&(h=b)}),h)return c.log.warn("track has already been published, skipping",Object.assign(Object.assign({},c.logContext),eS(h))),h;let i=Object.assign(Object.assign({},c.roomOptions.publishDefaults),b),j="channelCount"in a.mediaStreamTrack.getSettings()&&2===a.mediaStreamTrack.getSettings().channelCount||2===a.mediaStreamTrack.getConstraints().channelCount,k=null!=(f=i.forceStereo)?f:j;k&&(void 0===i.dtx&&c.log.info("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.",Object.assign(Object.assign({},c.logContext),eS(a))),void 0===i.red&&c.log.info("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),null!=i.dtx||(i.dtx=!1),null!=i.red||(i.red=!1)),!function(){let a=eo(),b="17.2";if(a)if("Safari"!==a.name&&"iOS"!==a.os)return!0;else if("iOS"===a.os&&a.osVersion&&ff(a.osVersion,b)>=0)return!0;else if("Safari"===a.name&&ff(a.version,b)>=0)return!0;else return!1}()&&c.roomOptions.e2ee&&(c.log.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2",Object.assign({},c.logContext)),i.simulcast=!1),i.source&&(a.source=i.source);let l=new Promise((b,d)=>dr(c,void 0,void 0,function*(){try{if(this.engine.client.currentState!==F.CONNECTED){this.log.debug("deferring track publication until signal is connected",Object.assign(Object.assign({},this.logContext),{track:eS(a)}));let c=!1,e=setTimeout(()=>{c=!0,a.stop(),d(new ez("publishing rejected as engine not connected within timeout",408))},15e3);if(yield this.waitUntilEngineConnected(),clearTimeout(e),c)return;let f=yield this.publish(a,i,k);b(f)}else try{let c=yield this.publish(a,i,k);b(c)}catch(a){d(a)}}catch(a){d(a)}}));c.pendingPublishPromises.set(a,l);try{return yield l}catch(a){throw a}finally{c.pendingPublishPromises.delete(a)}}()})}waitUntilEngineConnected(){return this.signalConnectedFuture||(this.signalConnectedFuture=new fo),this.signalConnectedFuture.promise}hasPermissionsToPublish(a){if(!this.permissions)return this.log.warn("no permissions present for publishing track",Object.assign(Object.assign({},this.logContext),eS(a))),!1;let{canPublish:b,canPublishSources:c}=this.permissions;return!!(b&&(0===c.length||c.map(a=>(function(a){switch(a){case bg.CAMERA:return eW.Source.Camera;case bg.MICROPHONE:return eW.Source.Microphone;case bg.SCREEN_SHARE:return eW.Source.ScreenShare;case bg.SCREEN_SHARE_AUDIO:return eW.Source.ScreenShareAudio;default:return eW.Source.Unknown}})(a)).includes(a.source)))||(this.log.warn("insufficient permissions to publish",Object.assign(Object.assign({},this.logContext),eS(a))),!1)}publish(a,b,c){return dr(this,void 0,void 0,function*(){var d,e,f,g,h,i,j,k,l,m;let n,o;if(!this.hasPermissionsToPublish(a))throw new ez("failed to publish track, insufficient permissions",403);Array.from(this.trackPublications.values()).find(b=>fu(a)&&b.source===a.source)&&a.source!==eW.Source.Unknown&&this.log.info("publishing a second track with the same source: ".concat(a.source),Object.assign(Object.assign({},this.logContext),eS(a))),b.stopMicTrackOnMute&&fv(a)&&(a.stopOnMute=!0),a.source===eW.Source.ScreenShare&&e3()&&(b.simulcast=!1),"av1"===b.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||e5()||e3())return!1;let a=RTCRtpSender.getCapabilities("video"),b=!1;if(a){for(let c of a.codecs)if("video/av1"===c.mimeType.toLowerCase()){b=!0;break}}return b}()&&(b.videoCodec=void 0),"vp9"===b.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||e3())return!1;if(e5()){let a=eo();if((null==a?void 0:a.version)&&0>ff(a.version,"16")||(null==a?void 0:a.os)==="iOS"&&(null==a?void 0:a.osVersion)&&0>ff(a.osVersion,"16"))return!1}let a=RTCRtpSender.getCapabilities("video"),b=!1;if(a){for(let c of a.codecs)if("video/vp9"===c.mimeType.toLowerCase()){b=!0;break}}return b}()&&(b.videoCodec=void 0),void 0===b.videoCodec&&(b.videoCodec="vp8"),this.enabledPublishVideoCodecs.length>0&&!this.enabledPublishVideoCodecs.some(a=>b.videoCodec===eR(a.mime))&&(b.videoCodec=eR(this.enabledPublishVideoCodecs[0].mime));let p=b.videoCodec;a.on(v.Muted,this.onTrackMuted),a.on(v.Unmuted,this.onTrackUnmuted),a.on(v.Ended,this.handleTrackEnded),a.on(v.UpstreamPaused,this.onTrackUpstreamPaused),a.on(v.UpstreamResumed,this.onTrackUpstreamResumed),a.on(v.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let q=[],r=!(null==(d=b.dtx)||d),s=a.getSourceTrackSettings();s.autoGainControl&&q.push(bn.TF_AUTO_GAIN_CONTROL),s.echoCancellation&&q.push(bn.TF_ECHO_CANCELLATION),s.noiseSuppression&&q.push(bn.TF_NOISE_SUPPRESSION),s.channelCount&&s.channelCount>1&&q.push(bn.TF_STEREO),r&&q.push(bn.TF_NO_DTX),fy(a)&&a.hasPreConnectBuffer&&q.push(bn.TF_PRECONNECT_BUFFER);let u=new cx({cid:a.mediaStreamTrack.id,name:b.name,type:eW.kindToProto(a.kind),muted:a.isMuted,source:eW.sourceToProto(a.source),disableDtx:r,encryption:this.encryptionType,stereo:c,disableRed:this.isE2EEEnabled||!(null==(e=b.red)||e),stream:null==b?void 0:b.stream,backupCodecPolicy:null==b?void 0:b.backupCodecPolicy,audioFeatures:q});if(a.kind===eW.Kind.Video){let c={width:0,height:0};try{c=yield a.waitForDimensions()}catch(d){let b=null!=(g=null==(f=this.roomOptions.videoCaptureDefaults)?void 0:f.resolution)?g:eI.h720.resolution;c={width:b.width,height:b.height},this.log.error("could not determine track dimensions, using defaults",Object.assign(Object.assign(Object.assign({},this.logContext),eS(a)),{dims:c}))}u.width=c.width,u.height=c.height,fx(a)&&(e1(p)&&(a.source===eW.Source.ScreenShare&&(b.scalabilityMode="L1T3","contentHint"in a.mediaStreamTrack&&(a.mediaStreamTrack.contentHint="motion",this.log.info("forcing contentHint to motion for screenshare with SVC codecs",Object.assign(Object.assign({},this.logContext),eS(a))))),b.scalabilityMode=null!=(h=b.scalabilityMode)?h:"L3T3_KEY"),u.simulcastCodecs=[new cw({codec:p,cid:a.mediaStreamTrack.id})],!0===b.backupCodec&&(b.backupCodec={codec:"vp8"}),b.backupCodec&&p!==b.backupCodec.codec&&u.encryption===bv.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),u.simulcastCodecs.push(new cw({codec:b.backupCodec.codec,cid:""})))),n=go(a.source===eW.Source.ScreenShare,u.width,u.height,b),u.layers=gw(u.width,u.height,n,e1(b.videoCodec))}else a.kind===eW.Kind.Audio&&(n=[{maxBitrate:null==(i=b.audioPreset)?void 0:i.maxBitrate,priority:null!=(k=null==(j=b.audioPreset)?void 0:j.priority)?k:"high",networkPriority:null!=(m=null==(l=b.audioPreset)?void 0:l.priority)?m:"high"}]);if(!this.engine||this.engine.isClosed)throw new ex("cannot publish track when not connected");let w=()=>dr(this,void 0,void 0,function*(){var c,d;if(!this.engine.pcManager)throw new ex("pcManager is not ready");if(a.sender=yield this.engine.createSender(a,b,n),this.emit(t.LocalSenderCreated,a.sender,a),fx(a)&&(null!=b.degradationPreference||(b.degradationPreference=a.source===eW.Source.ScreenShare||a.constraints.height&&fp(a.constraints.height)>=1080?"maintain-resolution":"balanced"),a.setDegradationPreference(b.degradationPreference)),n)if(e3()&&a.kind===eW.Kind.Audio){let b;for(let c of this.engine.pcManager.publisher.getTransceivers())if(c.sender===a.sender){b=c;break}b&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:b,codec:"opus",maxbr:(null==(c=n[0])?void 0:c.maxBitrate)?n[0].maxBitrate/1e3:0})}else a.codec&&e1(a.codec)&&(null==(d=n[0])?void 0:d.maxBitrate)&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:u.cid,codec:a.codec,maxbr:n[0].maxBitrate/1e3});yield this.engine.negotiate()}),x=new Promise((b,c)=>dr(this,void 0,void 0,function*(){var d;try{o=yield this.engine.addTrack(u),b(o)}catch(b){a.sender&&(null==(d=this.engine.pcManager)?void 0:d.publisher)&&(this.engine.pcManager.publisher.removeTrack(a.sender),yield this.engine.negotiate().catch(b=>{this.log.error("failed to negotiate after removing track due to failed add track request",Object.assign(Object.assign(Object.assign({},this.logContext),eS(a)),{error:b}))})),c(b)}}));if(this.enabledPublishVideoCodecs.length>0)o=(yield Promise.all([x,w()]))[0];else{let c;if((o=yield x).codecs.forEach(a=>{void 0===c&&(c=a.mimeType)}),c&&a.kind===eW.Kind.Video){let d=eR(c);d!==p&&(this.log.debug("falling back to server selected codec",Object.assign(Object.assign(Object.assign({},this.logContext),eS(a)),{codec:d})),b.videoCodec=d,n=go(a.source===eW.Source.ScreenShare,u.width,u.height,b))}yield w()}let y=new gR(a.kind,o,a,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(y.on(v.CpuConstrained,a=>this.onTrackCpuConstrained(a,y)),y.options=b,a.sid=o.sid,this.log.debug("publishing ".concat(a.kind," with encodings"),Object.assign(Object.assign({},this.logContext),{encodings:n,trackInfo:o})),fx(a)?a.startMonitor(this.engine.client):fy(a)&&a.startMonitor(),this.addTrackPublication(y),this.emit(t.LocalTrackPublished,y),fy(a)&&o.audioFeatures.includes(bn.TF_PRECONNECT_BUFFER)){let b=a.getPreConnectBuffer(),c=a.getPreConnectBufferMimeType();this.on(t.LocalTrackSubscribed,b=>{if(b.trackSid===o.sid){if(!a.hasPreConnectBuffer)return void this.log.warn("subscribe event came to late, buffer already closed",this.logContext);this.log.debug("finished recording preconnect buffer",Object.assign(Object.assign({},this.logContext),eS(a))),a.stopPreConnectBuffer()}}),b&&new Promise((d,e)=>dr(this,void 0,void 0,function*(){try{this.log.debug("waiting for agent",Object.assign(Object.assign({},this.logContext),eS(a)));let o=setTimeout(()=>{e(Error("agent not active within 10 seconds"))},1e4),p=yield this.waitUntilActiveAgentPresent();clearTimeout(o),this.log.debug("sending preconnect buffer",Object.assign(Object.assign({},this.logContext),eS(a)));let q=yield this.streamBytes({name:"preconnect-buffer",mimeType:c,topic:"lk.agent.pre-connect-audio-buffer",destinationIdentities:[p.identity],attributes:{trackId:y.trackSid,sampleRate:String(null!=(j=s.sampleRate)?j:"48000"),channels:String(null!=(k=s.channelCount)?k:"1")}});try{for(var f,g,h,i,j,k,l,m=!0,n=ds(b);!(f=(l=yield n.next()).done);m=!0)i=l.value,m=!1,yield q.write(i)}catch(a){g={error:a}}finally{try{!m&&!f&&(h=n.return)&&(yield h.call(n))}finally{if(g)throw g.error}}yield q.close(),d()}catch(a){e(a)}})).then(()=>{this.log.debug("preconnect buffer sent successfully",Object.assign(Object.assign({},this.logContext),eS(a)))}).catch(b=>{this.log.error("error sending preconnect buffer",Object.assign(Object.assign(Object.assign({},this.logContext),eS(a)),{error:b}))})}return y})}get isLocal(){return!0}publishAdditionalCodecForTrack(a,b,c){return dr(this,void 0,void 0,function*(){var d;let e;if(this.encryptionType!==bv.NONE)return;if(this.trackPublications.forEach(b=>{b.track&&b.track===a&&(e=b)}),!e)throw new ev("track is not published");if(!fx(a))throw new ev("track is not a video track");let f=Object.assign(Object.assign({},null==(d=this.roomOptions)?void 0:d.publishDefaults),c),g=function(a,b,c){var d,e,f,g;if(!c.backupCodec||!0===c.backupCodec||c.backupCodec.codec===c.videoCodec)return;b!==c.backupCodec.codec&&dl.warn("requested a different codec than specified as backup",{serverRequested:b,backup:c.backupCodec.codec}),c.videoCodec=b,c.videoEncoding=c.backupCodec.encoding;let h=a.mediaStreamTrack.getSettings(),i=null!=(d=h.width)?d:null==(e=a.dimensions)?void 0:e.width,j=null!=(f=h.height)?f:null==(g=a.dimensions)?void 0:g.height;return a.source===eW.Source.ScreenShare&&c.simulcast&&(c.simulcast=!1),go(a.source===eW.Source.ScreenShare,i,j,c)}(a,b,f);if(!g)return void this.log.info("backup codec has been disabled, ignoring request to add additional codec for track",Object.assign(Object.assign({},this.logContext),eS(a)));let h=a.addSimulcastTrack(b,g);if(!h)return;let i=new cx({cid:h.mediaStreamTrack.id,type:eW.kindToProto(a.kind),muted:a.isMuted,source:eW.sourceToProto(a.source),sid:a.sid,simulcastCodecs:[{codec:f.videoCodec,cid:h.mediaStreamTrack.id}]});if(i.layers=gw(i.width,i.height,g),!this.engine||this.engine.isClosed)throw new ex("cannot publish track when not connected");let j=()=>dr(this,void 0,void 0,function*(){yield this.engine.createSimulcastSender(a,h,f,g),yield this.engine.negotiate()}),k=(yield Promise.all([this.engine.addTrack(i),j()]))[0];this.log.debug("published ".concat(b," for track ").concat(a.sid),Object.assign(Object.assign({},this.logContext),{encodings:g,trackInfo:k}))})}unpublishTrack(a,b){return dr(this,void 0,void 0,function*(){var c,d;if(fu(a)){let b=this.pendingPublishPromises.get(a);b&&(this.log.info("awaiting publish promise before attempting to unpublish",Object.assign(Object.assign({},this.logContext),eS(a))),yield b)}let e=this.getPublicationForTrack(a),f=e?eS(e):void 0;if(this.log.debug("unpublishing track",Object.assign(Object.assign({},this.logContext),f)),!e||!e.track)return void this.log.warn("track was not unpublished because no publication was found",Object.assign(Object.assign({},this.logContext),f));(a=e.track).off(v.Muted,this.onTrackMuted),a.off(v.Unmuted,this.onTrackUnmuted),a.off(v.Ended,this.handleTrackEnded),a.off(v.UpstreamPaused,this.onTrackUpstreamPaused),a.off(v.UpstreamResumed,this.onTrackUpstreamResumed),a.off(v.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),void 0===b&&(b=null==(d=null==(c=this.roomOptions)?void 0:c.stopLocalTrackOnUnpublish)||d),b?a.stop():a.stopMonitor();let g=!1,h=a.sender;if(a.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentState<L.FAILED&&h)try{for(let a of this.engine.pcManager.publisher.getTransceivers())a.sender===h&&(a.direction="inactive",g=!0);if(this.engine.removeTrack(h)&&(g=!0),fx(a)){for(let[,b]of a.simulcastCodecs)b.sender&&(this.engine.removeTrack(b.sender)&&(g=!0),b.sender=void 0);a.simulcastCodecs.clear()}}catch(a){this.log.warn("failed to unpublish track",Object.assign(Object.assign(Object.assign({},this.logContext),f),{error:a}))}switch(this.trackPublications.delete(e.trackSid),e.kind){case eW.Kind.Audio:this.audioTrackPublications.delete(e.trackSid);break;case eW.Kind.Video:this.videoTrackPublications.delete(e.trackSid)}return this.emit(t.LocalTrackUnpublished,e),e.setTrack(void 0),g&&(yield this.engine.negotiate()),e})}unpublishTracks(a){return dr(this,void 0,void 0,function*(){return(yield Promise.all(a.map(a=>this.unpublishTrack(a)))).filter(a=>!!a)})}republishAllTracks(a){return dr(this,arguments,void 0,function(a){var b=this;let c=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){b.republishPromise&&(yield b.republishPromise),b.republishPromise=new em((d,e)=>dr(b,void 0,void 0,function*(){try{let b=[];this.trackPublications.forEach(c=>{c.track&&(a&&(c.options=Object.assign(Object.assign({},c.options),a)),b.push(c))}),yield Promise.all(b.map(a=>dr(this,void 0,void 0,function*(){let b=a.track;yield this.unpublishTrack(b,!1),c&&!b.isMuted&&b.source!==eW.Source.ScreenShare&&b.source!==eW.Source.ScreenShareAudio&&(fy(b)||fx(b))&&!b.isUserProvided&&(this.log.debug("restarting existing track",Object.assign(Object.assign({},this.logContext),{track:a.trackSid})),yield b.restartTrack()),yield this.publishOrRepublishTrack(b,a.options,!0)}))),d()}catch(a){a instanceof Error?e(a):e(Error(String(a)))}finally{this.republishPromise=void 0}})),yield b.republishPromise}()})}publishData(a){return dr(this,arguments,void 0,function(a){var b=this;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){let d=c.reliable?bB.RELIABLE:bB.LOSSY,e=c.destinationIdentities,f=c.topic,g=new bA({kind:d,value:{case:"user",value:new bG({participantIdentity:b.identity,payload:a,destinationIdentities:e,topic:f})}});yield b.engine.sendDataPacket(g,d)}()})}publishDtmf(a,b){return dr(this,void 0,void 0,function*(){let c=new bA({kind:bB.RELIABLE,value:{case:"sipDtmf",value:new bH({code:a,digit:b})}});yield this.engine.sendDataPacket(c,bB.RELIABLE)})}sendChatMessage(a,b){return dr(this,void 0,void 0,function*(){let c={id:crypto.randomUUID(),message:a,timestamp:Date.now(),attachedFiles:null==b?void 0:b.attachments},d=new bA({value:{case:"chatMessage",value:new bK(Object.assign(Object.assign({},c),{timestamp:aj.parse(c.timestamp)}))}});return yield this.engine.sendDataPacket(d,bB.RELIABLE),this.emit(t.ChatMessage,c),c})}editChatMessage(a,b){return dr(this,void 0,void 0,function*(){let c=Object.assign(Object.assign({},b),{message:a,editTimestamp:Date.now()}),d=new bA({value:{case:"chatMessage",value:new bK(Object.assign(Object.assign({},c),{timestamp:aj.parse(c.timestamp),editTimestamp:aj.parse(c.editTimestamp)}))}});return yield this.engine.sendDataPacket(d,bB.RELIABLE),this.emit(t.ChatMessage,c),c})}sendText(a,b){return dr(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendText(a,b)})}streamText(a){return dr(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamText(a)})}sendFile(a,b){return dr(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.sendFile(a,b)})}streamBytes(a){return dr(this,void 0,void 0,function*(){return this.roomOutgoingDataStreamManager.streamBytes(a)})}performRpc(a){let{destinationIdentity:b,method:c,payload:d,responseTimeout:e=15e3}=a;return new em((a,f)=>dr(this,void 0,void 0,function*(){var g,h,i,j;if(f9(d)>15360)return void f(f8.builtIn("REQUEST_PAYLOAD_TOO_LARGE"));if((null==(h=null==(g=this.engine.latestJoinResponse)?void 0:g.serverInfo)?void 0:h.version)&&0>ff(null==(j=null==(i=this.engine.latestJoinResponse)?void 0:i.serverInfo)?void 0:j.version,"1.8.0"))return void f(f8.builtIn("UNSUPPORTED_SERVER"));let k=Math.max(e,8e3),l=crypto.randomUUID();yield this.publishRpcRequest(b,l,c,d,k);let m=setTimeout(()=>{this.pendingAcks.delete(l),f(f8.builtIn("CONNECTION_TIMEOUT")),this.pendingResponses.delete(l),clearTimeout(n)},7e3);this.pendingAcks.set(l,{resolve:()=>{clearTimeout(m)},participantIdentity:b});let n=setTimeout(()=>{this.pendingResponses.delete(l),f(f8.builtIn("RESPONSE_TIMEOUT"))},e);this.pendingResponses.set(l,{resolve:(b,c)=>{clearTimeout(n),this.pendingAcks.has(l)&&(this.log.warn("RPC response received before ack",l),this.pendingAcks.delete(l),clearTimeout(m)),c?f(c):a(null!=b?b:"")},participantIdentity:b})}))}registerRpcMethod(a,b){this.rpcHandlers.has(a)&&this.log.warn("you're overriding the RPC handler for method ".concat(a,", in the future this will throw an error")),this.rpcHandlers.set(a,b)}unregisterRpcMethod(a){this.rpcHandlers.delete(a)}setTrackSubscriptionPermissions(a){let b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.participantTrackPermissions=b,this.allParticipantsAllowedToSubscribe=a,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}handleIncomingRpcAck(a){let b=this.pendingAcks.get(a);b?(b.resolve(),this.pendingAcks.delete(a)):console.error("Ack received for unexpected RPC request",a)}handleIncomingRpcResponse(a,b,c){let d=this.pendingResponses.get(a);d?(d.resolve(b,c),this.pendingResponses.delete(a)):console.error("Response received for unexpected RPC request",a)}publishRpcRequest(a,b,c,d,e){return dr(this,void 0,void 0,function*(){let f=new bA({destinationIdentities:[a],kind:bB.RELIABLE,value:{case:"rpcRequest",value:new bL({id:b,method:c,payload:d,responseTimeoutMs:e,version:1})}});yield this.engine.sendDataPacket(f,bB.RELIABLE)})}handleParticipantDisconnected(a){for(let[b,{participantIdentity:c}]of this.pendingAcks)c===a&&this.pendingAcks.delete(b);for(let[b,{participantIdentity:c,resolve:d}]of this.pendingResponses)c===a&&(d(null,f8.builtIn("RECIPIENT_DISCONNECTED")),this.pendingResponses.delete(b))}setEnabledPublishCodecs(a){this.enabledPublishVideoCodecs=a.filter(a=>"video"===a.mime.split("/")[0].toLowerCase())}updateInfo(a){return!!super.updateInfo(a)&&(a.tracks.forEach(a=>{var b,c;let d=this.trackPublications.get(a.sid);if(d){let e=d.isMuted||null!=(c=null==(b=d.track)?void 0:b.isUpstreamPaused)&&c;e!==a.muted&&(this.log.debug("updating server mute state after reconcile",Object.assign(Object.assign(Object.assign({},this.logContext),eS(d)),{mutedOnServer:e})),this.engine.client.sendMuteTrack(a.sid,e))}}),!0)}setActiveAgent(a){var b,c,d,e;this.firstActiveAgent=a,a&&!this.firstActiveAgent&&(this.firstActiveAgent=a),a?null==(c=null==(b=this.activeAgentFuture)?void 0:b.resolve)||c.call(b,a):null==(e=null==(d=this.activeAgentFuture)?void 0:d.reject)||e.call(d,Error("Agent disconnected")),this.activeAgentFuture=void 0}waitUntilActiveAgentPresent(){return this.firstActiveAgent?Promise.resolve(this.firstActiveAgent):(this.activeAgentFuture||(this.activeAgentFuture=new fo),this.activeAgentFuture.promise)}getPublicationForTrack(a){let b;return this.trackPublications.forEach(c=>{let d=c.track;d&&(a instanceof MediaStreamTrack?(fy(d)||fx(d))&&d.mediaStreamTrack===a&&(b=c):a===d&&(b=c))}),b}waitForPendingPublicationOfSource(a){return dr(this,void 0,void 0,function*(){let b=Date.now();for(;Date.now()<b+1e4;){let b=Array.from(this.pendingPublishPromises.entries()).find(b=>{let[c]=b;return c.source===a});if(b)return b[1];yield e$(20)}})}}class gV extends gQ{constructor(a,b,c,d){super(a,b.sid,b.name,d),this.track=void 0,this.allowed=!0,this.requestedDisabled=void 0,this.visible=!0,this.handleEnded=a=>{this.setTrack(void 0),this.emit(v.Ended,a)},this.handleVisibilityChange=a=>{this.log.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(a),this.logContext),this.visible=a,this.emitTrackUpdate()},this.handleVideoDimensionsChange=a=>{this.log.debug("adaptivestream video dimensions ".concat(a.width,"x").concat(a.height),this.logContext),this.videoDimensionsAdaptiveStream=a,this.emitTrackUpdate()},this.subscribed=c,this.updateInfo(b)}setSubscribed(a){let b=this.subscriptionStatus,c=this.permissionStatus;this.subscribed=a,a&&(this.allowed=!0);let d=new cG({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new bP({participantSid:"",trackSids:[this.trackSid]})]});this.emit(v.UpdateSubscription,d),this.emitSubscriptionUpdateIfChanged(b),this.emitPermissionUpdateIfChanged(c)}get subscriptionStatus(){return!1===this.subscribed?gQ.SubscriptionStatus.Unsubscribed:super.isSubscribed?gQ.SubscriptionStatus.Subscribed:gQ.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?gQ.PermissionStatus.Allowed:gQ.PermissionStatus.NotAllowed}get isSubscribed(){return!1!==this.subscribed&&super.isSubscribed}get isDesired(){return!1!==this.subscribed}get isEnabled(){return void 0!==this.requestedDisabled?!this.requestedDisabled:!this.isAdaptiveStream||this.visible}get isLocal(){return!1}setEnabled(a){this.isManualOperationAllowed()&&!a!==this.requestedDisabled&&(this.requestedDisabled=!a,this.emitTrackUpdate())}setVideoQuality(a){this.isManualOperationAllowed()&&this.requestedMaxQuality!==a&&(this.requestedMaxQuality=a,this.requestedVideoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(a){var b,c;this.isManualOperationAllowed()&&((null==(b=this.requestedVideoDimensions)?void 0:b.width)!==a.width||(null==(c=this.requestedVideoDimensions)?void 0:c.height)!==a.height)&&(fA(this.track)&&(this.requestedVideoDimensions=a),this.requestedMaxQuality=void 0,this.emitTrackUpdate())}setVideoFPS(a){this.isManualOperationAllowed()&&fA(this.track)&&this.fps!==a&&(this.fps=a,this.emitTrackUpdate())}get videoQuality(){var a;return null!=(a=this.requestedMaxQuality)?a:y.HIGH}setTrack(a){let b=this.subscriptionStatus,c=this.permissionStatus,d=this.track;d!==a&&(d&&(d.off(v.VideoDimensionsChanged,this.handleVideoDimensionsChange),d.off(v.VisibilityChanged,this.handleVisibilityChange),d.off(v.Ended,this.handleEnded),d.detach(),d.stopMonitor(),this.emit(v.Unsubscribed,d)),super.setTrack(a),a&&(a.sid=this.trackSid,a.on(v.VideoDimensionsChanged,this.handleVideoDimensionsChange),a.on(v.VisibilityChanged,this.handleVisibilityChange),a.on(v.Ended,this.handleEnded),this.emit(v.Subscribed,a)),this.emitPermissionUpdateIfChanged(c),this.emitSubscriptionUpdateIfChanged(b))}setAllowed(a){let b=this.subscriptionStatus,c=this.permissionStatus;this.allowed=a,this.emitPermissionUpdateIfChanged(c),this.emitSubscriptionUpdateIfChanged(b)}setSubscriptionError(a){this.emit(v.SubscriptionFailed,a)}updateInfo(a){super.updateInfo(a);let b=this.metadataMuted;this.metadataMuted=a.muted,this.track?this.track.setMuted(a.muted):b!==a.muted&&this.emit(a.muted?v.Muted:v.Unmuted)}emitSubscriptionUpdateIfChanged(a){let b=this.subscriptionStatus;a!==b&&this.emit(v.SubscriptionStatusChanged,b,a)}emitPermissionUpdateIfChanged(a){this.permissionStatus!==a&&this.emit(v.SubscriptionPermissionChanged,this.permissionStatus,a)}isManualOperationAllowed(){return!!this.isDesired||(this.log.warn("cannot update track settings when not subscribed",this.logContext),!1)}get isAdaptiveStream(){return fA(this.track)&&this.track.isAdaptiveStream}emitTrackUpdate(){let a=new cH({trackSids:[this.trackSid],disabled:!this.isEnabled,fps:this.fps});if(this.kind===eW.Kind.Video){let e=this.requestedVideoDimensions;if(void 0!==this.videoDimensionsAdaptiveStream)if(e)eU(this.videoDimensionsAdaptiveStream,e)&&(this.log.debug("using adaptive stream dimensions instead of requested",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),e=this.videoDimensionsAdaptiveStream);else if(void 0!==this.requestedMaxQuality&&this.trackInfo){var b,c,d;let a=(b=this.trackInfo,c=this.requestedMaxQuality,null==(d=b.layers)?void 0:d.find(a=>a.quality===c));a&&eU(this.videoDimensionsAdaptiveStream,a)&&(this.log.debug("using adaptive stream dimensions instead of max quality layer",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),e=this.videoDimensionsAdaptiveStream)}else this.log.debug("using adaptive stream dimensions",Object.assign(Object.assign({},this.logContext),this.videoDimensionsAdaptiveStream)),e=this.videoDimensionsAdaptiveStream;e?(a.width=Math.ceil(e.width),a.height=Math.ceil(e.height)):void 0!==this.requestedMaxQuality?(this.log.debug("using requested max quality",Object.assign(Object.assign({},this.logContext),{quality:this.requestedMaxQuality})),a.quality=this.requestedMaxQuality):(this.log.debug("using default quality",Object.assign(Object.assign({},this.logContext),{quality:y.HIGH})),a.quality=y.HIGH)}this.emit(v.UpdateSettings,a)}}class gW extends gT{static fromParticipantInfo(a,b,c){return new gW(a,b.sid,b.identity,b.name,b.metadata,b.attributes,c,b.kind)}get logContext(){return Object.assign(Object.assign({},super.logContext),{rpID:this.sid,remoteParticipant:this.identity})}constructor(a,b,c,d,e,f,g){let h=arguments.length>7&&void 0!==arguments[7]?arguments[7]:bt.STANDARD;super(b,c||"",d,e,f,g,h),this.signalClient=a,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.volumeMap=new Map}addTrackPublication(a){super.addTrackPublication(a),a.on(v.UpdateSettings,b=>{this.log.debug("send update settings",Object.assign(Object.assign(Object.assign({},this.logContext),eS(a)),{settings:b})),this.signalClient.sendUpdateTrackSettings(b)}),a.on(v.UpdateSubscription,a=>{a.participantTracks.forEach(a=>{a.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(a)}),a.on(v.SubscriptionPermissionChanged,b=>{this.emit(t.TrackSubscriptionPermissionChanged,a,b)}),a.on(v.SubscriptionStatusChanged,b=>{this.emit(t.TrackSubscriptionStatusChanged,a,b)}),a.on(v.Subscribed,b=>{this.emit(t.TrackSubscribed,b,a)}),a.on(v.Unsubscribed,b=>{this.emit(t.TrackUnsubscribed,b,a)}),a.on(v.SubscriptionFailed,b=>{this.emit(t.TrackSubscriptionFailed,a.trackSid,b)})}getTrackPublication(a){let b=super.getTrackPublication(a);if(b)return b}getTrackPublicationByName(a){let b=super.getTrackPublicationByName(a);if(b)return b}setVolume(a){let b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.Source.Microphone;this.volumeMap.set(b,a);let c=this.getTrackPublication(b);c&&c.track&&c.track.setVolume(a)}getVolume(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:eW.Source.Microphone,b=this.getTrackPublication(a);return b&&b.track?b.track.getVolume():this.volumeMap.get(a)}addSubscribedMediaTrack(a,b,c,d,e,f){let g,h=this.getTrackPublicationBySid(b);if(h||b.startsWith("TR")||this.trackPublications.forEach(b=>{h||a.kind!==b.kind.toString()||(h=b)}),!h){if(0===f){this.log.error("could not find published track",Object.assign(Object.assign({},this.logContext),{trackSid:b})),this.emit(t.TrackSubscriptionFailed,b);return}void 0===f&&(f=20),setTimeout(()=>{this.addSubscribedMediaTrack(a,b,c,d,e,f-1)},150);return}if("ended"===a.readyState){this.log.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",Object.assign(Object.assign({},this.logContext),eS(h))),this.emit(t.TrackSubscriptionFailed,b);return}return(g="video"===a.kind?new gM(a,b,d,e):new gL(a,b,d,this.audioContext,this.audioOutput)).source=h.source,g.isMuted=h.isMuted,g.setMediaStream(c),g.start(),h.setTrack(g),this.volumeMap.has(h.source)&&fz(g)&&fv(g)&&g.setVolume(this.volumeMap.get(h.source)),h}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(a){return this.trackPublications.get(a)}updateInfo(a){if(!super.updateInfo(a))return!1;let b=new Map,c=new Map;return a.tracks.forEach(a=>{var d,e;let f=this.getTrackPublicationBySid(a.sid);if(f)f.updateInfo(a);else{let b=eW.kindFromProto(a.type);if(!b)return;(f=new gV(b,a,null==(d=this.signalClient.connectOptions)?void 0:d.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:null==(e=this.loggerOptions)?void 0:e.loggerName})).updateInfo(a),c.set(a.sid,f);let g=Array.from(this.trackPublications.values()).find(a=>a.source===(null==f?void 0:f.source));g&&f.source!==eW.Source.Unknown&&this.log.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(f.source),Object.assign(Object.assign({},this.logContext),{oldTrack:eS(g),newTrack:eS(f)})),this.addTrackPublication(f)}b.set(a.sid,f)}),this.trackPublications.forEach(a=>{b.has(a.trackSid)||(this.log.trace("detected removed track on remote participant, unpublishing",Object.assign(Object.assign({},this.logContext),eS(a))),this.unpublishTrack(a.trackSid,!0))}),c.forEach(a=>{this.emit(t.TrackPublished,a)}),!0}unpublishTrack(a,b){let c=this.trackPublications.get(a);if(!c)return;let{track:d}=c;switch(d&&(d.stop(),c.setTrack(void 0)),this.trackPublications.delete(a),c.kind){case eW.Kind.Audio:this.audioTrackPublications.delete(a);break;case eW.Kind.Video:this.videoTrackPublications.delete(a)}b&&this.emit(t.TrackUnpublished,c)}setAudioOutput(a){return dr(this,void 0,void 0,function*(){this.audioOutput=a;let b=[];this.audioTrackPublications.forEach(c=>{var d;fv(c.track)&&fz(c.track)&&b.push(c.track.setSinkId(null!=(d=a.deviceId)?d:"default"))}),yield Promise.all(b)})}emit(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];return this.log.trace("participant event",Object.assign(Object.assign({},this.logContext),{event:a,args:c})),super.emit(a,...c)}}!function(a){a.Disconnected="disconnected",a.Connecting="connecting",a.Connected="connected",a.Reconnecting="reconnecting",a.SignalReconnecting="signalReconnecting"}(O||(O={}));class gX extends du.EventEmitter{get hasE2EESetup(){return void 0!==this.e2eeManager}constructor(a){var b,c,d,e,f;if(super(),b=this,this.state=O.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.isVideoPlaybackBlocked=!1,this.log=dl,this.bufferedEvents=[],this.isResuming=!1,this.rpcHandlers=new Map,this.connect=(a,b,c)=>dr(this,void 0,void 0,function*(){var d;if(!("undefined"!=typeof RTCPeerConnection&&(e_()||e0())))if(e9())throw Error("WebRTC isn't detected, have you called registerGlobals?");else throw Error("LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.");let e=yield this.disconnectLock.lock();if(this.state===O.Connected)return this.log.info("already connected to room ".concat(this.name),this.logContext),e(),Promise.resolve();if(this.connectFuture)return e(),this.connectFuture.promise;this.setAndEmitConnectionState(O.Connecting),(null==(d=this.regionUrlProvider)?void 0:d.getServerUrl().toString())!==fB(a)&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),fa(new URL(a))&&(void 0===this.regionUrlProvider?this.regionUrlProvider=new f7(a,b):this.regionUrlProvider.updateToken(b),this.regionUrlProvider.fetchRegionSettings().then(a=>{var b;null==(b=this.regionUrlProvider)||b.setServerReportedRegions(a)}).catch(a=>{this.log.warn("could not fetch region settings",Object.assign(Object.assign({},this.logContext),{error:a}))}));let f=(d,g,h)=>dr(this,void 0,void 0,function*(){var i,j;this.abortController&&this.abortController.abort();let k=new AbortController;this.abortController=k,null==e||e();try{if(yield fH.getInstance().getBackOffPromise(a),k.signal.aborted)throw et.cancelled("Connection attempt aborted");yield this.attemptConnection(null!=h?h:a,b,c,k),this.abortController=void 0,d()}catch(b){if(this.regionUrlProvider&&b instanceof et&&b.reason!==p.Cancelled&&b.reason!==p.NotAllowed){let c=null;try{this.log.debug("Fetching next region"),c=yield this.regionUrlProvider.getNextBestRegionUrl(null==(i=this.abortController)?void 0:i.signal)}catch(a){if(a instanceof et&&(401===a.status||a.reason===p.Cancelled)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),g(a);return}}[p.InternalError,p.ServerUnreachable,p.Timeout].includes(b.reason)&&(this.log.debug("Adding failed connection attempt to back off"),fH.getInstance().addFailedConnectionAttempt(a)),!c||(null==(j=this.abortController)?void 0:j.signal.aborted)?(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,fr(b)),g(b)):(this.log.info("Initial connection failed with ConnectionError: ".concat(b.message,". Retrying with another region: ").concat(c),this.logContext),this.recreateEngine(),yield f(d,g,c))}else{let a=bk.UNKNOWN_REASON;b instanceof et&&(a=fr(b)),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,a),g(b)}}}),g=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new fo((a,b)=>{f(a,b,g)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(a,b,c,d,e,f)=>dr(this,void 0,void 0,function*(){var g,h,i;let j=yield c.join(a,b,{autoSubscribe:d.autoSubscribe,adaptiveStream:"object"==typeof e.adaptiveStream||e.adaptiveStream,maxRetries:d.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:d.websocketTimeout},f.signal,!e.singlePeerConnection),k=j.serverInfo;if(k||(k={version:j.serverVersion,region:j.serverRegion}),this.serverInfo=k,this.log.debug("connected to Livekit Server ".concat(Object.entries(k).map(a=>{let[b,c]=a;return"".concat(b,": ").concat(c)}).join(", ")),{room:null==(g=j.room)?void 0:g.name,roomSid:null==(h=j.room)?void 0:h.sid,identity:null==(i=j.participant)?void 0:i.identity}),!k.version)throw new ew("unknown server version");return"0.15.1"===k.version&&this.options.dynacast&&(this.log.debug("disabling dynacast due to server version",this.logContext),e.dynacast=!1),j}),this.applyJoinResponse=a=>{let b=a.participant;if(this.localParticipant.sid=b.sid,this.localParticipant.identity=b.identity,this.localParticipant.setEnabledPublishCodecs(a.enabledPublishCodecs),this.e2eeManager)try{this.e2eeManager.setSifTrailer(a.sifTrailer)}catch(a){this.log.error(a instanceof Error?a.message:"Could not set SifTrailer",Object.assign(Object.assign({},this.logContext),{error:a}))}this.handleParticipantUpdates([b,...a.otherParticipants]),a.room&&this.handleRoomUpdate(a.room)},this.attemptConnection=(a,b,c,d)=>dr(this,void 0,void 0,function*(){var e,f;this.state===O.Reconnecting||this.isResuming||(null==(e=this.engine)?void 0:e.pendingReconnect)?(this.log.info("Reconnection attempt replaced by new connection attempt",this.logContext),this.recreateEngine()):this.maybeCreateEngine(),(null==(f=this.regionUrlProvider)?void 0:f.isCloud())&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},f5),c),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let c=yield this.connectSignal(a,b,this.engine,this.connOptions,this.options,d);this.applyJoinResponse(c),this.setupLocalParticipantEvents(),this.emit(s.SignalConnected)}catch(b){yield this.engine.close(),this.recreateEngine();let a=d.signal.aborted?et.cancelled("Signal connection aborted"):et.serverUnreachable("could not establish signal connection");throw b instanceof Error&&(a.message="".concat(a.message,": ").concat(b.message)),b instanceof et&&(a.reason=b.reason,a.status=b.status),this.log.debug("error trying to establish signal connection",Object.assign(Object.assign({},this.logContext),{error:b})),a}if(d.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),et.cancelled("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,d)}catch(a){throw yield this.engine.close(),this.recreateEngine(),a}e8()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),e8()&&window.addEventListener("freeze",this.onPageLeave),this.setAndEmitConnectionState(O.Connected),this.emit(s.Connected),fH.getInstance().resetFailedConnectionAttempts(a),this.registerConnectionReconcile(),this.regionUrlProvider&&this.regionUrlProvider.notifyConnected()}),this.disconnect=function(){for(var a=arguments.length,c=Array(a),d=0;d<a;d++)c[d]=arguments[d];return dr(b,[...c],void 0,function(){var a=this;let b=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){var c,d,e;let f=yield a.disconnectLock.lock();try{if(a.state===O.Disconnected)return void a.log.debug("already disconnected",a.logContext);if(a.log.info("disconnect from room",Object.assign({},a.logContext)),a.state===O.Connecting||a.state===O.Reconnecting||a.isResuming){let b="Abort connection attempt due to user initiated disconnect";a.log.warn(b,a.logContext),null==(c=a.abortController)||c.abort(b),null==(e=null==(d=a.connectFuture)?void 0:d.reject)||e.call(d,et.cancelled("Client initiated disconnect")),a.connectFuture=void 0}a.engine&&(a.engine.client.isDisconnected||(yield a.engine.client.sendLeave()),yield a.engine.close()),a.handleDisconnect(b,bk.CLIENT_INITIATED),a.engine=void 0}finally{f()}}()})},this.onPageLeave=()=>dr(this,void 0,void 0,function*(){this.log.info("Page leave detected, disconnecting",this.logContext),yield this.disconnect()}),this.startAudio=()=>dr(this,void 0,void 0,function*(){let a=[],b=eo();if(b&&"iOS"===b.os){let b="livekit-dummy-audio-el",c=document.getElementById(b);if(!c){(c=document.createElement("audio")).id=b,c.autoplay=!0,c.hidden=!0;let a=fn();a.enabled=!0;let d=new MediaStream([a]);c.srcObject=d,document.addEventListener("visibilitychange",()=>{c&&(c.srcObject=document.hidden?null:d,document.hidden||(this.log.debug("page visible again, triggering startAudio to resume playback and update playback status",this.logContext),this.startAudio()))}),document.body.append(c),this.once(s.Disconnected,()=>{null==c||c.remove(),c=null})}a.push(c)}this.remoteParticipants.forEach(b=>{b.audioTrackPublications.forEach(b=>{b.track&&b.track.attachedElements.forEach(b=>{a.push(b)})})});try{yield Promise.all([this.acquireAudioContext(),...a.map(a=>(a.muted=!1,a.play()))]),this.handleAudioPlaybackStarted()}catch(a){throw this.handleAudioPlaybackFailed(a),a}}),this.startVideo=()=>dr(this,void 0,void 0,function*(){let a=[];for(let b of this.remoteParticipants.values())b.videoTrackPublications.forEach(b=>{var c;null==(c=b.track)||c.attachedElements.forEach(b=>{a.includes(b)||a.push(b)})});yield Promise.all(a.map(a=>a.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(a=>{"NotAllowedError"===a.name?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler",this.logContext)})}),this.handleRestarting=()=>{for(let a of(this.clearConnectionReconcile(),this.isResuming=!1,this.remoteParticipants.values()))this.handleParticipantDisconnected(a.identity,a);this.setAndEmitConnectionState(O.Reconnecting)&&this.emit(s.Reconnecting)},this.handleSignalRestarted=a=>dr(this,void 0,void 0,function*(){this.log.debug("signal reconnected to server, region ".concat(a.serverRegion),Object.assign(Object.assign({},this.logContext),{region:a.serverRegion})),this.bufferedEvents=[],this.applyJoinResponse(a);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(a){this.log.error("error trying to re-publish tracks after reconnection",Object.assign(Object.assign({},this.logContext),{error:a}))}try{yield this.engine.waitForRestarted(),this.log.debug("fully reconnected to server",Object.assign(Object.assign({},this.logContext),{region:a.serverRegion}))}catch(a){return}this.setAndEmitConnectionState(O.Connected),this.emit(s.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=a=>{a.forEach(a=>{var b;if(a.identity===this.localParticipant.identity)return void this.localParticipant.updateInfo(a);""===a.identity&&(a.identity=null!=(b=this.sidToIdentity.get(a.sid))?b:"");let c=this.remoteParticipants.get(a.identity);a.state===bs.DISCONNECTED?this.handleParticipantDisconnected(a.identity,c):c=this.getOrCreateParticipant(a.identity,a)})},this.handleActiveSpeakersUpdate=a=>{let b=[],c={};a.forEach(a=>{if(c[a.sid]=!0,a.sid===this.localParticipant.sid)this.localParticipant.audioLevel=a.level,this.localParticipant.setIsSpeaking(!0),b.push(this.localParticipant);else{let c=this.getRemoteParticipantBySid(a.sid);c&&(c.audioLevel=a.level,c.setIsSpeaking(!0),b.push(c))}}),c[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach(a=>{c[a.sid]||(a.audioLevel=0,a.setIsSpeaking(!1))}),this.activeSpeakers=b,this.emitWhenConnected(s.ActiveSpeakersChanged,b)},this.handleSpeakersChanged=a=>{let b=new Map;this.activeSpeakers.forEach(a=>{let c=this.remoteParticipants.get(a.identity);c&&c.sid!==a.sid||b.set(a.sid,a)}),a.forEach(a=>{let c=this.getRemoteParticipantBySid(a.sid);a.sid===this.localParticipant.sid&&(c=this.localParticipant),c&&(c.audioLevel=a.level,c.setIsSpeaking(a.active),a.active?b.set(a.sid,c):b.delete(a.sid))});let c=Array.from(b.values());c.sort((a,b)=>b.audioLevel-a.audioLevel),this.activeSpeakers=c,this.emitWhenConnected(s.ActiveSpeakersChanged,c)},this.handleStreamStateUpdate=a=>{a.streamStates.forEach(a=>{let b=this.getRemoteParticipantBySid(a.participantSid);if(!b)return;let c=b.getTrackPublicationBySid(a.trackSid);if(!c||!c.track)return;let d=eW.streamStateFromProto(a.state);c.track.setStreamState(d),d!==c.track.streamState&&(b.emit(t.TrackStreamStateChanged,c,c.track.streamState),this.emitWhenConnected(s.TrackStreamStateChanged,c,c.track.streamState,b))})},this.handleSubscriptionPermissionUpdate=a=>{let b=this.getRemoteParticipantBySid(a.participantSid);if(!b)return;let c=b.getTrackPublicationBySid(a.trackSid);c&&c.setAllowed(a.allowed)},this.handleSubscriptionError=a=>{let b=Array.from(this.remoteParticipants.values()).find(b=>b.trackPublications.has(a.trackSid));if(!b)return;let c=b.getTrackPublicationBySid(a.trackSid);c&&c.setSubscriptionError(a.err)},this.handleDataPacket=(a,b)=>{let c=this.remoteParticipants.get(a.participantIdentity);if("user"===a.value.case)this.handleUserPacket(c,a.value.value,a.kind,b);else if("transcription"===a.value.case)this.handleTranscription(c,a.value.value);else if("sipDtmf"===a.value.case)this.handleSipDtmf(c,a.value.value);else if("chatMessage"===a.value.case)this.handleChatMessage(c,a.value.value);else if("metrics"===a.value.case)this.handleMetrics(a.value.value,c);else if("streamHeader"===a.value.case||"streamChunk"===a.value.case||"streamTrailer"===a.value.case)this.handleDataStream(a,b);else if("rpcRequest"===a.value.case){let b=a.value.value;this.handleIncomingRpcRequest(a.participantIdentity,b.id,b.method,b.payload,b.responseTimeoutMs,b.version)}},this.handleUserPacket=(a,b,c,d)=>{this.emit(s.DataReceived,b.payload,a,c,b.topic,d),null==a||a.emit(t.DataReceived,b.payload,c,d)},this.handleSipDtmf=(a,b)=>{this.emit(s.SipDTMFReceived,b,a),null==a||a.emit(t.SipDTMFReceived,b)},this.handleTranscription=(a,b)=>{let c=b.transcribedParticipantIdentity===this.localParticipant.identity?this.localParticipant:this.getParticipantByIdentity(b.transcribedParticipantIdentity),d=null==c?void 0:c.trackPublications.get(b.trackId),e=function(a,b){return a.segments.map(a=>{var c;let{id:d,text:e,language:f,startTime:g,endTime:h,final:i}=a,j=null!=(c=b.get(d))?c:Date.now(),k=Date.now();return i?b.delete(d):b.set(d,j),{id:d,text:e,startTime:Number.parseInt(g.toString()),endTime:Number.parseInt(h.toString()),final:i,language:f,firstReceivedTime:j,lastReceivedTime:k}})}(b,this.transcriptionReceivedTimes);null==d||d.emit(v.TranscriptionReceived,e),null==c||c.emit(t.TranscriptionReceived,e,d),this.emit(s.TranscriptionReceived,e,c,d)},this.handleChatMessage=(a,b)=>{let c=function(a){let{id:b,timestamp:c,message:d,editTimestamp:e}=a;return{id:b,timestamp:Number.parseInt(c.toString()),editTimestamp:e?Number.parseInt(e.toString()):void 0,message:d}}(b);this.emit(s.ChatMessage,c,a)},this.handleMetrics=(a,b)=>{this.emit(s.MetricsReceived,a,b)},this.handleDataStream=(a,b)=>{this.incomingDataStreamManager.handleDataStreamPacket(a,b)},this.bufferedSegments=new Map,this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(s.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=a=>{this.log.warn("could not playback audio",Object.assign(Object.assign({},this.logContext),{error:a})),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(s.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(s.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(s.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>dr(this,void 0,void 0,function*(){var a;(null==(a=eo())?void 0:a.os)!=="iOS"&&(yield this.selectDefaultDevices()),this.emit(s.MediaDevicesChanged)}),this.handleRoomUpdate=a=>{let b=this.roomInfo;this.roomInfo=a,b&&b.metadata!==a.metadata&&this.emitWhenConnected(s.RoomMetadataChanged,a.metadata),(null==b?void 0:b.activeRecording)!==a.activeRecording&&this.emitWhenConnected(s.RecordingStatusChanged,a.activeRecording)},this.handleConnectionQualityUpdate=a=>{a.updates.forEach(a=>{if(a.participantSid===this.localParticipant.sid)return void this.localParticipant.setConnectionQuality(a.quality);let b=this.getRemoteParticipantBySid(a.participantSid);b&&b.setConnectionQuality(a.quality)})},this.onLocalParticipantMetadataChanged=a=>{this.emit(s.ParticipantMetadataChanged,a,this.localParticipant)},this.onLocalParticipantNameChanged=a=>{this.emit(s.ParticipantNameChanged,a,this.localParticipant)},this.onLocalAttributesChanged=a=>{this.emit(s.ParticipantAttributesChanged,a,this.localParticipant)},this.onLocalTrackMuted=a=>{this.emit(s.TrackMuted,a,this.localParticipant)},this.onLocalTrackUnmuted=a=>{this.emit(s.TrackUnmuted,a,this.localParticipant)},this.onTrackProcessorUpdate=a=>{var b;null==(b=null==a?void 0:a.onPublish)||b.call(a,this)},this.onLocalTrackPublished=a=>dr(this,void 0,void 0,function*(){var b,c,d,e,f,g;null==(b=a.track)||b.on(v.TrackProcessorUpdate,this.onTrackProcessorUpdate),null==(c=a.track)||c.on(v.Restarted,this.onLocalTrackRestarted),null==(f=null==(e=null==(d=a.track)?void 0:d.getProcessor())?void 0:e.onPublish)||f.call(e,this),this.emit(s.LocalTrackPublished,a,this.localParticipant),fy(a.track)&&(yield a.track.checkForSilence())&&this.emit(s.LocalAudioSilenceDetected,a);let h=yield null==(g=a.track)?void 0:g.getDeviceId(!1),i=eQ(a.source);i&&h&&h!==this.localParticipant.activeDeviceMap.get(i)&&(this.localParticipant.activeDeviceMap.set(i,h),this.emit(s.ActiveDeviceChanged,i,h))}),this.onLocalTrackUnpublished=a=>{var b,c;null==(b=a.track)||b.off(v.TrackProcessorUpdate,this.onTrackProcessorUpdate),null==(c=a.track)||c.off(v.Restarted,this.onLocalTrackRestarted),this.emit(s.LocalTrackUnpublished,a,this.localParticipant)},this.onLocalTrackRestarted=a=>dr(this,void 0,void 0,function*(){let b=yield a.getDeviceId(!1),c=eQ(a.source);c&&b&&b!==this.localParticipant.activeDeviceMap.get(c)&&(this.log.debug("local track restarted, setting ".concat(c," ").concat(b," active"),this.logContext),this.localParticipant.activeDeviceMap.set(c,b),this.emit(s.ActiveDeviceChanged,c,b))}),this.onLocalConnectionQualityChanged=a=>{this.emit(s.ConnectionQualityChanged,a,this.localParticipant)},this.onMediaDevicesError=(a,b)=>{this.emit(s.MediaDevicesError,a,b)},this.onLocalParticipantPermissionsChanged=a=>{this.emit(s.ParticipantPermissionsChanged,a,this.localParticipant)},this.onLocalChatMessageSent=a=>{this.emit(s.ChatMessage,a,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},f4),a),this.log=dm(null!=(c=this.options.loggerName)?c:m.Room),this.transcriptionReceivedTimes=new Map,this.options.audioCaptureDefaults=Object.assign(Object.assign({},f2),null==a?void 0:a.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},f3),null==a?void 0:a.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},f1),null==a?void 0:a.publishDefaults),this.maybeCreateEngine(),this.incomingDataStreamManager=new gF,this.outgoingDataStreamManager=new gJ(this.engine,this.log),this.disconnectLock=new S,this.localParticipant=new gU("","",this.engine,this.options,this.rpcHandlers,this.outgoingDataStreamManager),(this.options.e2ee||this.options.encryption)&&this.setupE2EE(),this.engine.e2eeManager=this.e2eeManager,this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",fp(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",fp(this.options.audioCaptureDefaults.deviceId)),(null==(d=this.options.audioOutput)?void 0:d.deviceId)&&this.switchActiveDevice("audiooutput",fp(this.options.audioOutput.deviceId)).catch(a=>this.log.warn("Could not set audio output: ".concat(a.message),this.logContext)),e8()){let a=new AbortController;null==(f=null==(e=navigator.mediaDevices)?void 0:e.addEventListener)||f.call(e,"devicechange",this.handleDeviceChange,{signal:a.signal}),gX.cleanupRegistry&&gX.cleanupRegistry.register(this,()=>{a.abort()})}}registerTextStreamHandler(a,b){return this.incomingDataStreamManager.registerTextStreamHandler(a,b)}unregisterTextStreamHandler(a){return this.incomingDataStreamManager.unregisterTextStreamHandler(a)}registerByteStreamHandler(a,b){return this.incomingDataStreamManager.registerByteStreamHandler(a,b)}unregisterByteStreamHandler(a){return this.incomingDataStreamManager.unregisterByteStreamHandler(a)}registerRpcMethod(a,b){if(this.rpcHandlers.has(a))throw Error("RPC handler already registered for method ".concat(a,", unregisterRpcMethod before trying to register again"));this.rpcHandlers.set(a,b)}unregisterRpcMethod(a){this.rpcHandlers.delete(a)}setE2EEEnabled(a){return dr(this,void 0,void 0,function*(){if(this.e2eeManager)yield Promise.all([this.localParticipant.setE2EEEnabled(a)]),""!==this.localParticipant.identity&&this.e2eeManager.setParticipantCryptorEnabled(a,this.localParticipant.identity);else throw Error("e2ee not configured, please set e2ee settings within the room options")})}setupE2EE(){var a;let b=!!this.options.encryption,c=this.options.encryption||this.options.e2ee;c&&("e2eeManager"in c?(this.e2eeManager=c.e2eeManager,this.e2eeManager.isDataChannelEncryptionEnabled=b):this.e2eeManager=new fG(c,b),this.e2eeManager.on(B.ParticipantEncryptionStatusChanged,(a,b)=>{b.isLocal&&(this.isE2EEEnabled=a),this.emit(s.ParticipantEncryptionStatusChanged,a,b)}),this.e2eeManager.on(B.EncryptionError,(a,b)=>{let c=b?this.getParticipantByIdentity(b):void 0;this.emit(s.EncryptionError,a,c)}),null==(a=this.e2eeManager)||a.setup(this))}get logContext(){var a;return{room:this.name,roomID:null==(a=this.roomInfo)?void 0:a.sid,participant:this.localParticipant.identity,pID:this.localParticipant.sid}}get isRecording(){var a,b;return null!=(b=null==(a=this.roomInfo)?void 0:a.activeRecording)&&b}getSid(){return this.state===O.Disconnected?em.resolve(""):this.roomInfo&&""!==this.roomInfo.sid?em.resolve(this.roomInfo.sid):new em((a,b)=>{let c=b=>{""!==b.sid&&(this.engine.off(u.RoomUpdate,c),a(b.sid))};this.engine.on(u.RoomUpdate,c),this.once(s.Disconnected,()=>{this.engine.off(u.RoomUpdate,c),b(new ex("Room disconnected before room server id was available"))})})}get name(){var a,b;return null!=(b=null==(a=this.roomInfo)?void 0:a.name)?b:""}get metadata(){var a;return null==(a=this.roomInfo)?void 0:a.metadata}get numParticipants(){var a,b;return null!=(b=null==(a=this.roomInfo)?void 0:a.numParticipants)?b:0}get numPublishers(){var a,b;return null!=(b=null==(a=this.roomInfo)?void 0:a.numPublishers)?b:0}maybeCreateEngine(){(!this.engine||this.engine.isClosed)&&(this.engine=new gA(this.options),this.engine.e2eeManager=this.e2eeManager,this.engine.on(u.ParticipantUpdate,this.handleParticipantUpdates).on(u.RoomUpdate,this.handleRoomUpdate).on(u.SpeakersChanged,this.handleSpeakersChanged).on(u.StreamStateChanged,this.handleStreamStateUpdate).on(u.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(u.SubscriptionError,this.handleSubscriptionError).on(u.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(u.MediaTrackAdded,(a,b,c)=>{this.onTrackAdded(a,b,c)}).on(u.Disconnected,a=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,a)}).on(u.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(u.DataPacketReceived,this.handleDataPacket).on(u.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.info("Resuming signal connection",this.logContext),this.setAndEmitConnectionState(O.SignalReconnecting)&&this.emit(s.SignalReconnecting)}).on(u.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.info("Resumed signal connection",this.logContext),this.updateSubscriptions(),this.emitBufferedEvents(),this.setAndEmitConnectionState(O.Connected)&&this.emit(s.Reconnected)}).on(u.SignalResumed,()=>{this.bufferedEvents=[],(this.state===O.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(u.Restarting,this.handleRestarting).on(u.SignalRestarted,this.handleSignalRestarted).on(u.Offline,()=>{this.setAndEmitConnectionState(O.Reconnecting)&&this.emit(s.Reconnecting)}).on(u.DCBufferStatusChanged,(a,b)=>{this.emit(s.DCBufferStatusChanged,a,b)}).on(u.LocalTrackSubscribed,a=>{let b=this.localParticipant.getTrackPublications().find(b=>{let{trackSid:c}=b;return c===a});if(!b)return void this.log.warn("could not find local track subscription for subscribed event",this.logContext);this.localParticipant.emit(t.LocalTrackSubscribed,b),this.emitWhenConnected(s.LocalTrackSubscribed,b,this.localParticipant)}).on(u.RoomMoved,a=>{this.log.debug("room moved",a),a.room&&this.handleRoomUpdate(a.room),this.remoteParticipants.forEach((a,b)=>{this.handleParticipantDisconnected(b,a)}),this.emit(s.Moved,a.room.name),a.participant?this.handleParticipantUpdates([a.participant,...a.otherParticipants]):this.handleParticipantUpdates(a.otherParticipants)}),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine),this.outgoingDataStreamManager&&this.outgoingDataStreamManager.setupEngine(this.engine))}static getLocalDevices(a){let b=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return fJ.getInstance().getDevices(a,b)}prepareConnection(a,b){return dr(this,void 0,void 0,function*(){if(this.state===O.Disconnected){this.log.debug("prepareConnection to ".concat(a),this.logContext);try{if(fa(new URL(a))&&b){this.regionUrlProvider=new f7(a,b);let c=yield this.regionUrlProvider.getNextBestRegionUrl();c&&this.state===O.Disconnected&&(this.regionUrl=c,yield fetch(fq(c),{method:"HEAD"}),this.log.debug("prepared connection to ".concat(c),this.logContext))}else yield fetch(fq(a),{method:"HEAD"})}catch(a){this.log.warn("could not prepare connection",Object.assign(Object.assign({},this.logContext),{error:a}))}}})}getParticipantByIdentity(a){return this.localParticipant.identity===a?this.localParticipant:this.remoteParticipants.get(a)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(a,b){return dr(this,void 0,void 0,function*(){let c,d=()=>dr(this,void 0,void 0,function*(){});switch(a){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"speaker":c=new c4({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":c=new c4({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":c=new c4({scenario:{case:"serverLeave",value:!0}});break;case"migration":c=new c4({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"disconnect-signal-on-resume":d=()=>dr(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),c=new c4({scenario:{case:"disconnectSignalOnResume",value:!0}});break;case"disconnect-signal-on-resume-no-messages":d=()=>dr(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),c=new c4({scenario:{case:"disconnectSignalOnResumeNoMessages",value:!0}});break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":c=new c4({scenario:{case:"switchCandidateProtocol",value:"force-tls"===a?2:1}}),d=()=>dr(this,void 0,void 0,function*(){let a=this.engine.client.onLeave;a&&a(new cK({reason:bk.CLIENT_INITIATED,action:cL.RECONNECT}))});break;case"subscriber-bandwidth":if(void 0===b||"number"!=typeof b)throw Error("subscriber-bandwidth requires a number as argument");c=new c4({scenario:{case:"subscriberBandwidth",value:ft(b)}});break;case"leave-full-reconnect":c=new c4({scenario:{case:"leaveRequestFullReconnect",value:!0}})}c&&(yield this.engine.client.sendSimulateScenario(c),yield d())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(a){return this.localParticipant.activeDeviceMap.get(a)}switchActiveDevice(a,b){return dr(this,arguments,void 0,function(a,b){var c=this;let d=!(arguments.length>2)||void 0===arguments[2]||arguments[2];return function*(){var e,f,g,h,i,j;let k=!0,l=!1,m=d?{exact:b}:b;if("audioinput"===a){l=0===c.localParticipant.audioTrackPublications.size;let b=null!=(e=c.getActiveDevice(a))?e:c.options.audioCaptureDefaults.deviceId;c.options.audioCaptureDefaults.deviceId=m;let d=Array.from(c.localParticipant.audioTrackPublications.values()).filter(a=>a.source===eW.Source.Microphone);try{k=(yield Promise.all(d.map(a=>{var b;return null==(b=a.audioTrack)?void 0:b.setDeviceId(m)}))).every(a=>!0===a)}catch(a){throw c.options.audioCaptureDefaults.deviceId=b,a}let f=d.some(a=>{var b,c;return null!=(c=null==(b=a.track)?void 0:b.isMuted)&&c});k&&f&&(l=!0)}else if("videoinput"===a){l=0===c.localParticipant.videoTrackPublications.size;let b=null!=(f=c.getActiveDevice(a))?f:c.options.videoCaptureDefaults.deviceId;c.options.videoCaptureDefaults.deviceId=m;let d=Array.from(c.localParticipant.videoTrackPublications.values()).filter(a=>a.source===eW.Source.Camera);try{k=(yield Promise.all(d.map(a=>{var b;return null==(b=a.videoTrack)?void 0:b.setDeviceId(m)}))).every(a=>!0===a)}catch(a){throw c.options.videoCaptureDefaults.deviceId=b,a}let e=d.some(a=>{var b,c;return null!=(c=null==(b=a.track)?void 0:b.isMuted)&&c});k&&e&&(l=!0)}else if("audiooutput"===a){if(l=!0,!e2()&&!c.options.webAudioMix||c.options.webAudioMix&&c.audioContext&&!("setSinkId"in c.audioContext))throw Error("cannot switch audio output, the current browser does not support it");c.options.webAudioMix&&(b=null!=(g=yield fJ.getInstance().normalizeDeviceId("audiooutput",b))?g:""),null!=(j=c.options).audioOutput||(j.audioOutput={});let d=null!=(h=c.getActiveDevice(a))?h:c.options.audioOutput.deviceId;c.options.audioOutput.deviceId=b;try{c.options.webAudioMix&&(null==(i=c.audioContext)||i.setSinkId(b)),yield Promise.all(Array.from(c.remoteParticipants.values()).map(a=>a.setAudioOutput({deviceId:b})))}catch(a){throw c.options.audioOutput.deviceId=d,a}}return l&&(c.localParticipant.activeDeviceMap.set(a,b),c.emit(s.ActiveDeviceChanged,a,b)),k}()})}setupLocalParticipantEvents(){this.localParticipant.on(t.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(t.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(t.AttributesChanged,this.onLocalAttributesChanged).on(t.TrackMuted,this.onLocalTrackMuted).on(t.TrackUnmuted,this.onLocalTrackUnmuted).on(t.LocalTrackPublished,this.onLocalTrackPublished).on(t.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(t.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(t.MediaDevicesError,this.onMediaDevicesError).on(t.AudioStreamAcquired,this.startAudio).on(t.ChatMessage,this.onLocalChatMessageSent).on(t.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var a;null==(a=this.engine)||a.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(a,b,c){let d;if(this.state===O.Connecting||this.state===O.Reconnecting){let d=()=>{this.log.debug("deferring on track for later",{mediaTrackId:a.id,mediaStreamId:b.id,tracksInStream:b.getTracks().map(a=>a.id)}),this.onTrackAdded(a,b,c),e()},e=()=>{this.off(s.Reconnected,d),this.off(s.Connected,d),this.off(s.Disconnected,e)};this.once(s.Reconnected,d),this.once(s.Connected,d),this.once(s.Disconnected,e);return}if(this.state===O.Disconnected)return void this.log.warn("skipping incoming track after Room disconnected",this.logContext);if("ended"===a.readyState)return void this.log.info("skipping incoming track as it already ended",this.logContext);let e=function(a){let b=a.split("|");return b.length>1?[b[0],a.substr(b[0].length+1)]:[a,""]}(b.id),f=e[0],g=e[1],h=a.id;if(g&&g.startsWith("TR")&&(h=g),f===this.localParticipant.sid)return void this.log.warn("tried to create RemoteParticipant for local participant",this.logContext);let i=Array.from(this.remoteParticipants.values()).find(a=>a.sid===f);if(!i)return void this.log.error("Tried to add a track for a participant, that's not present. Sid: ".concat(f),this.logContext);if(!h.startsWith("TR")){let a=this.engine.getTrackIdForReceiver(c);if(!a)return void this.log.error("Tried to add a track whose 'sid' could not be found for a participant, that's not present. Sid: ".concat(f),this.logContext);h=a}h.startsWith("TR")||this.log.warn("Tried to add a track whose 'sid' could not be determined for a participant, that's not present. Sid: ".concat(f,", streamId: ").concat(g,", trackId: ").concat(h),Object.assign(Object.assign({},this.logContext),{rpID:f,streamId:g,trackId:h})),this.options.adaptiveStream&&(d="object"==typeof this.options.adaptiveStream?this.options.adaptiveStream:{});let j=i.addSubscribedMediaTrack(a,h,b,c,d);(null==j?void 0:j.isEncrypted)&&!this.e2eeManager&&this.emit(s.EncryptionError,Error("Encrypted ".concat(j.source," track received from participant ").concat(i.sid,", but room does not have encryption enabled!")))}handleDisconnect(){var a,b;let c=!(arguments.length>0)||void 0===arguments[0]||arguments[0],d=arguments.length>1?arguments[1]:void 0;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.transcriptionReceivedTimes.clear(),this.incomingDataStreamManager.clearControllers(),this.state!==O.Disconnected){this.regionUrl=void 0,this.regionUrlProvider&&this.regionUrlProvider.notifyDisconnected();try{this.remoteParticipants.forEach(a=>{a.trackPublications.forEach(b=>{a.unpublishTrack(b.trackSid)})}),this.localParticipant.trackPublications.forEach(a=>{var b,d,e;a.track&&this.localParticipant.unpublishTrack(a.track,c),c?(null==(b=a.track)||b.detach(),null==(d=a.track)||d.stop()):null==(e=a.track)||e.stopMonitor()}),this.localParticipant.off(t.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(t.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(t.AttributesChanged,this.onLocalAttributesChanged).off(t.TrackMuted,this.onLocalTrackMuted).off(t.TrackUnmuted,this.onLocalTrackUnmuted).off(t.LocalTrackPublished,this.onLocalTrackPublished).off(t.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(t.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(t.MediaDevicesError,this.onMediaDevicesError).off(t.AudioStreamAcquired,this.startAudio).off(t.ChatMessage,this.onLocalChatMessageSent).off(t.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&"boolean"==typeof this.options.webAudioMix&&(this.audioContext.close(),this.audioContext=void 0),e8()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),null==(b=null==(a=navigator.mediaDevices)?void 0:a.removeEventListener)||b.call(a,"devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(O.Disconnected),this.emit(s.Disconnected,d)}}}handleParticipantDisconnected(a,b){var c;this.remoteParticipants.delete(a),b&&(this.incomingDataStreamManager.validateParticipantHasNoActiveDataStreams(a),b.trackPublications.forEach(a=>{b.unpublishTrack(a.trackSid,!0)}),this.emit(s.ParticipantDisconnected,b),b.setDisconnected(),null==(c=this.localParticipant)||c.handleParticipantDisconnected(b.identity))}handleIncomingRpcRequest(a,b,c,d,e,f){return dr(this,void 0,void 0,function*(){if(yield this.engine.publishRpcAck(a,b),1!==f)return void(yield this.engine.publishRpcResponse(a,b,null,f8.builtIn("UNSUPPORTED_VERSION")));let g=this.rpcHandlers.get(c);if(!g)return void(yield this.engine.publishRpcResponse(a,b,null,f8.builtIn("UNSUPPORTED_METHOD")));let h=null,i=null;try{let f=yield g({requestId:b,callerIdentity:a,payload:d,responseTimeout:e});f9(f)>15360?(h=f8.builtIn("RESPONSE_PAYLOAD_TOO_LARGE"),this.log.warn("RPC Response payload too large for ".concat(c))):i=f}catch(a){a instanceof f8?h=a:(this.log.warn("Uncaught error returned by RPC handler for ".concat(c,". Returning APPLICATION_ERROR instead."),a),h=f8.builtIn("APPLICATION_ERROR"))}yield this.engine.publishRpcResponse(a,b,i,h)})}selectDefaultDevices(){return dr(this,void 0,void 0,function*(){var a,b,c;let d=fJ.getInstance().previousDevices,e=yield fJ.getInstance().getDevices(void 0,!1),f=eo();if((null==f?void 0:f.name)==="Chrome"&&"iOS"!==f.os)for(let a of e){let b=d.find(b=>b.deviceId===a.deviceId);b&&""!==b.label&&b.kind===a.kind&&b.label!==a.label&&"default"===this.getActiveDevice(a.kind)&&this.emit(s.ActiveDeviceChanged,a.kind,a.deviceId)}for(let f of["audiooutput","audioinput","videoinput"]){let g="audioinput"===f?eW.Source.Microphone:"videoinput"===f?eW.Source.Camera:eW.Source.Unknown,h=this.localParticipant.getTrackPublication(g);if(h&&(null==(a=h.track)?void 0:a.isUserProvided))continue;let i=e.filter(a=>a.kind===f),j=this.getActiveDevice(f);if(j===(null==(b=d.filter(a=>a.kind===f)[0])?void 0:b.deviceId)&&i.length>0&&(null==(c=i[0])?void 0:c.deviceId)!==j){yield this.switchActiveDevice(f,i[0].deviceId);continue}("audioinput"!==f||e6())&&"videoinput"!==f&&(!(i.length>0)||i.find(a=>a.deviceId===this.getActiveDevice(f))||"audiooutput"===f&&e6()||(yield this.switchActiveDevice(f,i[0].deviceId)))}})}acquireAudioContext(){return dr(this,void 0,void 0,function*(){var a,b;if("boolean"!=typeof this.options.webAudioMix&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:this.audioContext&&"closed"!==this.audioContext.state||(this.audioContext=null!=(a=eP())?a:void 0),this.options.webAudioMix&&this.remoteParticipants.forEach(a=>a.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext),this.audioContext&&"suspended"===this.audioContext.state)try{yield Promise.race([this.audioContext.resume(),e$(200)])}catch(a){this.log.warn("Could not resume audio context",Object.assign(Object.assign({},this.logContext),{error:a}))}let c=(null==(b=this.audioContext)?void 0:b.state)==="running";c!==this.canPlaybackAudio&&(this.audioEnabled=c,this.emit(s.AudioPlaybackStatusChanged,c))})}createParticipant(a,b){var c;let d;return d=b?gW.fromParticipantInfo(this.engine.client,b,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}):new gW(this.engine.client,"",a,void 0,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&d.setAudioContext(this.audioContext),(null==(c=this.options.audioOutput)?void 0:c.deviceId)&&d.setAudioOutput(this.options.audioOutput).catch(a=>this.log.warn("Could not set audio output: ".concat(a.message),this.logContext)),d}getOrCreateParticipant(a,b){if(this.remoteParticipants.has(a)){let c=this.remoteParticipants.get(a);return b&&c.updateInfo(b)&&this.sidToIdentity.set(b.sid,b.identity),c}let c=this.createParticipant(a,b);return this.remoteParticipants.set(a,c),this.sidToIdentity.set(b.sid,b.identity),this.emitWhenConnected(s.ParticipantConnected,c),c.on(t.TrackPublished,a=>{this.emitWhenConnected(s.TrackPublished,a,c)}).on(t.TrackSubscribed,(a,b)=>{a.kind===eW.Kind.Audio?(a.on(v.AudioPlaybackStarted,this.handleAudioPlaybackStarted),a.on(v.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):a.kind===eW.Kind.Video&&(a.on(v.VideoPlaybackFailed,this.handleVideoPlaybackFailed),a.on(v.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emit(s.TrackSubscribed,a,b,c)}).on(t.TrackUnpublished,a=>{this.emit(s.TrackUnpublished,a,c)}).on(t.TrackUnsubscribed,(a,b)=>{this.emit(s.TrackUnsubscribed,a,b,c)}).on(t.TrackMuted,a=>{this.emitWhenConnected(s.TrackMuted,a,c)}).on(t.TrackUnmuted,a=>{this.emitWhenConnected(s.TrackUnmuted,a,c)}).on(t.ParticipantMetadataChanged,a=>{this.emitWhenConnected(s.ParticipantMetadataChanged,a,c)}).on(t.ParticipantNameChanged,a=>{this.emitWhenConnected(s.ParticipantNameChanged,a,c)}).on(t.AttributesChanged,a=>{this.emitWhenConnected(s.ParticipantAttributesChanged,a,c)}).on(t.ConnectionQualityChanged,a=>{this.emitWhenConnected(s.ConnectionQualityChanged,a,c)}).on(t.ParticipantPermissionsChanged,a=>{this.emitWhenConnected(s.ParticipantPermissionsChanged,a,c)}).on(t.TrackSubscriptionStatusChanged,(a,b)=>{this.emitWhenConnected(s.TrackSubscriptionStatusChanged,a,b,c)}).on(t.TrackSubscriptionFailed,(a,b)=>{this.emit(s.TrackSubscriptionFailed,a,c,b)}).on(t.TrackSubscriptionPermissionChanged,(a,b)=>{this.emitWhenConnected(s.TrackSubscriptionPermissionChanged,a,b,c)}).on(t.Active,()=>{this.emitWhenConnected(s.ParticipantActive,c),c.kind===bt.AGENT&&this.localParticipant.setActiveAgent(c)}),b&&c.updateInfo(b),c}sendSyncState(){let a=Array.from(this.remoteParticipants.values()).reduce((a,b)=>(a.push(...b.getTrackPublications()),a),[]),b=this.localParticipant.getTrackPublications();this.engine.sendSyncState(a,b)}updateSubscriptions(){for(let b of this.remoteParticipants.values())for(let c of b.videoTrackPublications.values()){var a;c.isSubscribed&&(a=c)&&!a.isLocal&&c.emitTrackUpdate()}}getRemoteParticipantBySid(a){let b=this.sidToIdentity.get(a);if(b)return this.remoteParticipants.get(b)}registerConnectionReconcile(){this.clearConnectionReconcile();let a=0;this.connectionReconcileInterval=eD.setInterval(()=>{this.engine&&!this.engine.isClosed&&this.engine.verifyTransport()?a=0:(a++,this.log.warn("detected connection state mismatch",Object.assign(Object.assign({},this.logContext),{numFailures:a,engine:this.engine?{closed:this.engine.isClosed,transportsConnected:this.engine.verifyTransport()}:void 0})),a>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,bk.STATE_MISMATCH)))},4e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&eD.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(a){return a!==this.state&&(this.state=a,this.emit(s.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(a=>{let[b,c]=a;this.emit(b,...c)}),this.bufferedEvents=[]}emitWhenConnected(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];if(this.state===O.Reconnecting||this.isResuming||!this.engine||this.engine.pendingReconnect)this.bufferedEvents.push([a,c]);else if(this.state===O.Connected)return this.emit(a,...c);return!1}simulateParticipants(a){return dr(this,void 0,void 0,function*(){var b,c,d,e;let f=Object.assign({audio:!0,video:!0,useRealTracks:!1},a.publish),g=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},a.participants);if(this.handleDisconnect(),this.roomInfo=new bo({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:aj.parse(new Date().getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new br({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(s.SignalConnected),this.emit(s.Connected),this.setAndEmitConnectionState(O.Connected),f.video){let a=new gR(eW.Kind.Video,new bx({source:bg.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:bf.AUDIO,name:"video-dummy"}),new gt(f.useRealTracks&&(null==(b=window.navigator.mediaDevices)?void 0:b.getUserMedia)?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:fm(160*(null!=(c=g.aspectRatios[0])?c:1),160,!0,!0),void 0,!1,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(a),this.localParticipant.emit(t.LocalTrackPublished,a)}if(f.audio){let a=new gR(eW.Kind.Audio,new bx({source:bg.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:bf.AUDIO}),new gh(f.useRealTracks&&(null==(d=navigator.mediaDevices)?void 0:d.getUserMedia)?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:fn(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(a),this.localParticipant.emit(t.LocalTrackPublished,a)}for(let a=0;a<g.count-1;a+=1){let b=new br({sid:Math.floor(1e4*Math.random()).toString(),identity:"simulated-".concat(a),state:bs.ACTIVE,tracks:[],joinedAt:aj.parse(Date.now())}),c=this.getOrCreateParticipant(b.identity,b);if(g.video){let d=fm(160*(null!=(e=g.aspectRatios[a%g.aspectRatios.length])?e:1),160,!1,!0),f=new bx({source:bg.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:bf.AUDIO});c.addSubscribedMediaTrack(d,f.sid,new MediaStream([d]),new RTCRtpReceiver),b.tracks=[...b.tracks,f]}if(g.audio){let a=fn(),d=new bx({source:bg.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:bf.AUDIO});c.addSubscribedMediaTrack(a,d.sid,new MediaStream([a]),new RTCRtpReceiver),b.tracks=[...b.tracks,d]}c.updateInfo(b)}})}emit(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];if(a!==s.ActiveSpeakersChanged&&a!==s.TranscriptionReceived){let b=(function a(b){return b.map(b=>{if(b)return Array.isArray(b)?a(b):"object"==typeof b?"logContext"in b?b.logContext:void 0:b})})(c).filter(a=>void 0!==a);(a===s.TrackSubscribed||a===s.TrackUnsubscribed)&&this.log.trace("subscribe trace: ".concat(a),Object.assign(Object.assign({},this.logContext),{event:a,args:b})),this.log.debug("room event ".concat(a),Object.assign(Object.assign({},this.logContext),{event:a,args:b}))}return super.emit(a,...c)}}gX.cleanupRegistry="undefined"!=typeof FinalizationRegistry&&new FinalizationRegistry(a=>{a()}),!function(a){a[a.IDLE=0]="IDLE",a[a.RUNNING=1]="RUNNING",a[a.SKIPPED=2]="SKIPPED",a[a.SUCCESS=3]="SUCCESS",a[a.FAILED=4]="FAILED"}(P||(P={}));class gY extends du.EventEmitter{constructor(a,b){let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.status=P.IDLE,this.logs=[],this.options={},this.url=a,this.token=b,this.name=this.constructor.name,this.room=new gX(c.roomOptions),this.connectOptions=c.connectOptions,this.options=c}run(a){return dr(this,void 0,void 0,function*(){if(this.status!==P.IDLE)throw Error("check is running already");this.setStatus(P.RUNNING);try{yield this.perform()}catch(a){a instanceof Error&&(this.options.errorsAsWarnings?this.appendWarning(a.message):this.appendError(a.message))}return yield this.disconnect(),yield new Promise(a=>setTimeout(a,500)),this.status!==P.SKIPPED&&this.setStatus(this.isSuccess()?P.SUCCESS:P.FAILED),a&&a(),this.getInfo()})}isSuccess(){return!this.logs.some(a=>"error"===a.level)}connect(a){return dr(this,void 0,void 0,function*(){return this.room.state===O.Connected||(a||(a=this.url),yield this.room.connect(a,this.token,this.connectOptions)),this.room})}disconnect(){return dr(this,void 0,void 0,function*(){this.room&&this.room.state!==O.Disconnected&&(yield this.room.disconnect(),yield new Promise(a=>setTimeout(a,500)))})}skip(){this.setStatus(P.SKIPPED)}switchProtocol(a){return dr(this,void 0,void 0,function*(){let b=!1,c=!1;if(this.room.on(s.Reconnecting,()=>{b=!0}),this.room.once(s.Reconnected,()=>{c=!0}),this.room.simulateScenario("force-".concat(a)),yield new Promise(a=>setTimeout(a,1e3)),!b)return;let d=Date.now()+1e4;for(;Date.now()<d;){if(c)return;yield e$(100)}throw Error("Could not reconnect using ".concat(a," protocol after 10 seconds"))})}appendMessage(a){this.logs.push({level:"info",message:a}),this.emit("update",this.getInfo())}appendWarning(a){this.logs.push({level:"warning",message:a}),this.emit("update",this.getInfo())}appendError(a){this.logs.push({level:"error",message:a}),this.emit("update",this.getInfo())}setStatus(a){this.status=a,this.emit("update",this.getInfo())}get engine(){var a;return null==(a=this.room)?void 0:a.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}function gZ(a,b,c){var d;return(b="symbol"==typeof(d=function(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b);if("object"!=typeof d)return d;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}(b,"string"))?d:d+"")in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}du.EventEmitter,new TextEncoder,new TextDecoder;class g$ extends Error{constructor(a,b){var c;super(a,b),gZ(this,"code","ERR_JOSE_GENERIC"),this.name=this.constructor.name,null==(c=Error.captureStackTrace)||c.call(Error,this,this.constructor)}}gZ(g$,"code","ERR_JOSE_GENERIC");class g_ extends g${constructor(a,b){let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unspecified";super(a,{cause:{claim:c,reason:d,payload:b}}),gZ(this,"code","ERR_JWT_CLAIM_VALIDATION_FAILED"),gZ(this,"claim",void 0),gZ(this,"reason",void 0),gZ(this,"payload",void 0),this.claim=c,this.reason=d,this.payload=b}}gZ(g_,"code","ERR_JWT_CLAIM_VALIDATION_FAILED");class g0 extends g${constructor(a,b){let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified",d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"unspecified";super(a,{cause:{claim:c,reason:d,payload:b}}),gZ(this,"code","ERR_JWT_EXPIRED"),gZ(this,"claim",void 0),gZ(this,"reason",void 0),gZ(this,"payload",void 0),this.claim=c,this.reason=d,this.payload=b}}gZ(g0,"code","ERR_JWT_EXPIRED");class g1 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JOSE_ALG_NOT_ALLOWED")}}gZ(g1,"code","ERR_JOSE_ALG_NOT_ALLOWED");class g2 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JOSE_NOT_SUPPORTED")}}gZ(g2,"code","ERR_JOSE_NOT_SUPPORTED");class g3 extends g${constructor(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"decryption operation failed",b=arguments.length>1?arguments[1]:void 0;super(a,b),gZ(this,"code","ERR_JWE_DECRYPTION_FAILED")}}gZ(g3,"code","ERR_JWE_DECRYPTION_FAILED");class g4 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JWE_INVALID")}}gZ(g4,"code","ERR_JWE_INVALID");class g5 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JWS_INVALID")}}gZ(g5,"code","ERR_JWS_INVALID");class g6 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JWT_INVALID")}}gZ(g6,"code","ERR_JWT_INVALID");class g7 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JWK_INVALID")}}gZ(g7,"code","ERR_JWK_INVALID");class g8 extends g${constructor(){super(...arguments),gZ(this,"code","ERR_JWKS_INVALID")}}gZ(g8,"code","ERR_JWKS_INVALID");class g9 extends g${constructor(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"no applicable key found in the JSON Web Key Set",b=arguments.length>1?arguments[1]:void 0;super(a,b),gZ(this,"code","ERR_JWKS_NO_MATCHING_KEY")}}gZ(g9,"code","ERR_JWKS_NO_MATCHING_KEY");class ha extends g${constructor(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"multiple matching keys found in the JSON Web Key Set",b=arguments.length>1?arguments[1]:void 0;super(a,b),gZ(this,Symbol.asyncIterator,void 0),gZ(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}}gZ(ha,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS");class hb extends g${constructor(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"request timed out",b=arguments.length>1?arguments[1]:void 0;super(a,b),gZ(this,"code","ERR_JWKS_TIMEOUT")}}gZ(hb,"code","ERR_JWKS_TIMEOUT");class hc extends g${constructor(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"signature verification failed",b=arguments.length>1?arguments[1]:void 0;super(a,b),gZ(this,"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED")}}gZ(hc,"code","ERR_JWS_SIGNATURE_VERIFICATION_FAILED")},75338:(a,b,c)=>{a.exports=c(49754).vendored["react-rsc"].ReactJsxRuntime},81171:(a,b,c)=>{c.d(b,{$:()=>d});function d(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d}},86802:(a,b,c)=>{c.d(b,{b3:()=>d.b}),c(14230);var d=c(34603);c(35916)}};
|