autoglm-gui 0.2.3__py3-none-any.whl → 0.3.1__py3-none-any.whl
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.
- AutoGLM_GUI/server.py +30 -0
- AutoGLM_GUI/static/assets/{about-uuv-AkSr.js → about-C71SI8ZQ.js} +1 -1
- AutoGLM_GUI/static/assets/chat-C6WtEfKW.js +14 -0
- AutoGLM_GUI/static/assets/{index-B6TfcGH7.js → index-DUCan6m6.js} +1 -1
- AutoGLM_GUI/static/assets/index-Dd1xMRCa.css +1 -0
- AutoGLM_GUI/static/assets/{index-BhEqSAe_.js → index-RqglIZxV.js} +6 -6
- AutoGLM_GUI/static/index.html +2 -2
- {autoglm_gui-0.2.3.dist-info → autoglm_gui-0.3.1.dist-info}/METADATA +20 -2
- {autoglm_gui-0.2.3.dist-info → autoglm_gui-0.3.1.dist-info}/RECORD +12 -12
- AutoGLM_GUI/static/assets/chat-Bl1mU48-.js +0 -4
- AutoGLM_GUI/static/assets/index-BCzw2xc6.css +0 -1
- {autoglm_gui-0.2.3.dist-info → autoglm_gui-0.3.1.dist-info}/WHEEL +0 -0
- {autoglm_gui-0.2.3.dist-info → autoglm_gui-0.3.1.dist-info}/entry_points.txt +0 -0
- {autoglm_gui-0.2.3.dist-info → autoglm_gui-0.3.1.dist-info}/licenses/LICENSE +0 -0
AutoGLM_GUI/static/index.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>AutoGLM GUI</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-RqglIZxV.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Dd1xMRCa.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="app"></div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autoglm-gui
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Web GUI for AutoGLM Phone Agent - AI-powered Android automation
|
|
5
5
|
Project-URL: Homepage, https://github.com/suyiiyii/AutoGLM-GUI
|
|
6
6
|
Project-URL: Repository, https://github.com/suyiiyii/AutoGLM-GUI
|
|
@@ -36,7 +36,8 @@ AutoGLM 手机助手的现代化 Web 图形界面 - 让 AI 自动化操作 Andro
|
|
|
36
36
|
## ✨ 特性
|
|
37
37
|
|
|
38
38
|
- **对话式任务管理** - 通过聊天界面控制 Android 设备
|
|
39
|
-
- **实时屏幕预览** -
|
|
39
|
+
- **实时屏幕预览** - 基于 scrcpy 的低延迟视频流,随时查看设备正在执行的操作
|
|
40
|
+
- **直接操控手机** - 在实时画面上直接点击操作,支持精准坐标转换和视觉反馈
|
|
40
41
|
- **零配置部署** - 支持任何 OpenAI 兼容的 LLM API
|
|
41
42
|
- **ADB 深度集成** - 通过 Android Debug Bridge 直接控制设备
|
|
42
43
|
|
|
@@ -123,10 +124,27 @@ uv run autoglm-gui --base-url http://localhost:8080/v1
|
|
|
123
124
|
|
|
124
125
|
## 📖 使用说明
|
|
125
126
|
|
|
127
|
+
### AI 自动化模式
|
|
128
|
+
|
|
126
129
|
1. **连接设备** - 启用 USB 调试并通过 ADB 连接设备
|
|
127
130
|
2. **对话** - 描述你想要做什么(例如:"去美团点一杯霸王茶姬的伯牙绝弦")
|
|
128
131
|
3. **观察** - Agent 会逐步执行操作
|
|
129
132
|
|
|
133
|
+
### 手动控制模式
|
|
134
|
+
|
|
135
|
+
除了 AI 自动化,你也可以直接在实时画面上操控手机:
|
|
136
|
+
|
|
137
|
+
1. **实时画面** - 界面右侧显示手机屏幕的实时视频流(基于 scrcpy)
|
|
138
|
+
2. **点击操作** - 直接点击画面中的任意位置,操作会立即发送到手机
|
|
139
|
+
3. **视觉反馈** - 每次点击都会显示涟漪动画和成功提示
|
|
140
|
+
4. **精准转换** - 自动处理屏幕缩放和坐标转换,确保点击位置准确
|
|
141
|
+
|
|
142
|
+
**技术细节**:
|
|
143
|
+
- 使用 scrcpy 提供低延迟(~30-50ms)的 H.264 视频流
|
|
144
|
+
- 前端自动获取设备实际分辨率(如 1080x2400)
|
|
145
|
+
- 智能处理视频流缩放(如 576x1280)与设备分辨率的映射
|
|
146
|
+
- 支持 letterbox 黑边的精确坐标计算
|
|
147
|
+
|
|
130
148
|
## 🛠️ 开发指南
|
|
131
149
|
|
|
132
150
|
```bash
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
AutoGLM_GUI/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
AutoGLM_GUI/__main__.py,sha256=jinPYge6MvGaDZPdTZa4rtc7vUx39WZg_x6NXMjOuSs,4917
|
|
3
3
|
AutoGLM_GUI/scrcpy_stream.py,sha256=A6SPQzCWPg2mqVUeLB5WGNnKitYAC7ozEwoojEbJE5o,19800
|
|
4
|
-
AutoGLM_GUI/server.py,sha256=
|
|
4
|
+
AutoGLM_GUI/server.py,sha256=w8y6T8HS0Jr0_R7siEMOZA-BZtr2BEjG74LPMCtYSMM,15642
|
|
5
5
|
AutoGLM_GUI/adb_plus/__init__.py,sha256=GVRx9G0QG_TxbEQc1FCx8eA2UCPvZeIC4kC3amoQzYk,180
|
|
6
6
|
AutoGLM_GUI/adb_plus/screenshot.py,sha256=TR0ortVd48LZ_evbBUkdnFmS1Us12hbpvUEwkNlUov8,3245
|
|
7
|
-
AutoGLM_GUI/static/index.html,sha256=
|
|
8
|
-
AutoGLM_GUI/static/assets/about-
|
|
9
|
-
AutoGLM_GUI/static/assets/chat-
|
|
10
|
-
AutoGLM_GUI/static/assets/index-
|
|
11
|
-
AutoGLM_GUI/static/assets/index-
|
|
12
|
-
AutoGLM_GUI/static/assets/index-
|
|
7
|
+
AutoGLM_GUI/static/index.html,sha256=O0YVCV2IG4HfG8mujiMyYoM3Xy8AS81mG8HgDRYwoek,395
|
|
8
|
+
AutoGLM_GUI/static/assets/about-C71SI8ZQ.js,sha256=FtXcoOlpgThgK84FdBIk4D6EVfD-yfXgDyio1j5Yso8,155
|
|
9
|
+
AutoGLM_GUI/static/assets/chat-C6WtEfKW.js,sha256=ZDUldDljK-YOdLDy5WW3reDbtBtOwa_BRJt_neqvML8,64443
|
|
10
|
+
AutoGLM_GUI/static/assets/index-DUCan6m6.js,sha256=TRJ_rPSpRs4U9R5uBdAZSYgNHjvnoFile_X9rGfe7qw,228
|
|
11
|
+
AutoGLM_GUI/static/assets/index-Dd1xMRCa.css,sha256=LrnOX3e1Mf_UoQjeUG5X6ZKifKtM0tXkGE5z_74iTeM,19524
|
|
12
|
+
AutoGLM_GUI/static/assets/index-RqglIZxV.js,sha256=U3N8V1ip0bPiV6HefdTWpwPD30HxZiljLjQk0iNKM3A,277301
|
|
13
13
|
phone_agent/__init__.py,sha256=6_AwafPDiJsEVstiMcfj-HbvpuxWTC2di6MVbQzHK6s,287
|
|
14
14
|
phone_agent/agent.py,sha256=mvw_nDupyqjCjS8WekI9v11G6IMAOdK8Tx1vbi80Gdk,8124
|
|
15
15
|
phone_agent/actions/__init__.py,sha256=YiAMeBMVhRfmDOf0hQ_1FEBSV5ApcnHPQ05gHjA_weQ,160
|
|
@@ -28,8 +28,8 @@ phone_agent/config/prompts_zh.py,sha256=vSWo5_qlWwNHVYUxrePBiL2FmJFnQG0Jpb1NsVsV
|
|
|
28
28
|
phone_agent/model/__init__.py,sha256=w6yFkla9VoUvX5vZkTWa7Z5Bg5_lfA9AajrLjZsdL24,149
|
|
29
29
|
phone_agent/model/client.py,sha256=6EM7BIdj9UvqPG9YmgwSGWVxensH5HDfCSAgHDeBgeo,5842
|
|
30
30
|
scrcpy-server-v3.3.3,sha256=fnAyO6fyWWSd1KzOl6xP77roECssbZHi575hP9U1S-A,90164
|
|
31
|
-
autoglm_gui-0.
|
|
32
|
-
autoglm_gui-0.
|
|
33
|
-
autoglm_gui-0.
|
|
34
|
-
autoglm_gui-0.
|
|
35
|
-
autoglm_gui-0.
|
|
31
|
+
autoglm_gui-0.3.1.dist-info/METADATA,sha256=r4Zq0KhWHMJBnPABPbzggjsHAQEw5RTOaP-cIP-JSKE,5503
|
|
32
|
+
autoglm_gui-0.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
33
|
+
autoglm_gui-0.3.1.dist-info/entry_points.txt,sha256=sz4rBO_kgrYmOiT0QnhCCv0b9QqBdWyCjugJgY8AEOI,58
|
|
34
|
+
autoglm_gui-0.3.1.dist-info/licenses/LICENSE,sha256=0IkSHDewdtmXnmYzTNq4U47EJYjTuhjQNpT0bZKuqWc,11342
|
|
35
|
+
autoglm_gui-0.3.1.dist-info/RECORD,,
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{g as Le,a as Re,r as y,j as c,b as Ie,i as we,c as Oe,d as Me,s as Ge}from"./index-BhEqSAe_.js";var pe={exports:{}};const ze={},He=Object.freeze(Object.defineProperty({__proto__:null,default:ze},Symbol.toStringTag,{value:"Module"})),Ve=Le(He);var Ke=pe.exports,Fe;function We(){return Fe||(Fe=1,(function(Q,H){(function(V,T){Q.exports=T(Ve)})(Ke,(function(V){function T(n,s){(s==null||s>n.length)&&(s=n.length);for(var e=0,t=Array(s);e<s;e++)t[e]=n[e];return t}function N(n){if(Array.isArray(n))return n}function B(n){if(Array.isArray(n))return T(n)}function O(n){if(n===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return n}function m(n,s){if(!(n instanceof s))throw new TypeError("Cannot call a class as a function")}function Z(n,s){for(var e=0;e<s.length;e++){var t=s[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(n,J(t.key),t)}}function v(n,s,e){return s&&Z(n.prototype,s),e&&Z(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}function g(n,s){var e=typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=Y(n))||s){e&&(n=e);var t=0,r=function(){};return{s:r,n:function(){return t>=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(l){throw l},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,a=!0,o=!1;return{s:function(){e=e.call(n)},n:function(){var l=e.next();return a=l.done,l},e:function(l){o=!0,i=l},f:function(){try{a||e.return==null||e.return()}finally{if(o)throw i}}}}function R(n){var s=W();return function(){var e,t=G(n);if(s){var r=G(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return q(this,e)}}function S(n,s,e){return(s=J(s))in n?Object.defineProperty(n,s,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[s]=e,n}function G(n){return G=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(s){return s.__proto__||Object.getPrototypeOf(s)},G(n)}function C(n,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");n.prototype=Object.create(s&&s.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),Object.defineProperty(n,"prototype",{writable:!1}),s&&w(n,s)}function W(){try{var n=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(W=function(){return!!n})()}function $(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function X(n,s){var e=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(e!=null){var t,r,i,a,o=[],l=!0,u=!1;try{if(i=(e=e.call(n)).next,s!==0)for(;!(l=(t=i.call(e)).done)&&(o.push(t.value),o.length!==s);l=!0);}catch(f){u=!0,r=f}finally{try{if(!l&&e.return!=null&&(a=e.return(),Object(a)!==a))return}finally{if(u)throw r}}return o}}function ee(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
3
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function te(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
4
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function q(n,s){if(s&&(typeof s=="object"||typeof s=="function"))return s;if(s!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return O(n)}function w(n,s){return w=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},w(n,s)}function E(n,s){return N(n)||X(n,s)||Y(n,s)||ee()}function U(n){return B(n)||$(n)||Y(n)||te()}function z(n,s){if(typeof n!="object"||!n)return n;var e=n[Symbol.toPrimitive];if(e!==void 0){var t=e.call(n,s);if(typeof t!="object")return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}function J(n){var s=z(n,"string");return typeof s=="symbol"?s:s+""}function K(n){"@babel/helpers - typeof";return K=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},K(n)}function Y(n,s){if(n){if(typeof n=="string")return T(n,s);var e={}.toString.call(n).slice(8,-1);return e==="Object"&&n.constructor&&(e=n.constructor.name),e==="Map"||e==="Set"?Array.from(n):e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?T(n,s):void 0}}var ae,ce;function ye(n,s){ae=n,ce=s}function x(n){if(ae){for(var s=arguments.length,e=new Array(s>1?s-1:0),t=1;t<s;t++)e[t-1]=arguments[t];ae.apply(void 0,[n].concat(e))}}function A(n){if(ce){for(var s=arguments.length,e=new Array(s>1?s-1:0),t=1;t<s;t++)e[t-1]=arguments[t];ce.apply(void 0,[n].concat(e))}}var j=(function(){function n(s){m(this,n),this.listener={},this.type=s|""}return v(n,[{key:"on",value:function(e,t){return this.listener[e]||(this.listener[e]=[]),this.listener[e].push(t),!0}},{key:"off",value:function(e,t){if(this.listener[e]){var r=this.listener[e].indexOf(t);return r>-1&&this.listener[e].splice(r,1),!0}return!1}},{key:"offAll",value:function(){this.listener={}}},{key:"dispatch",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return this.listener[e]?(this.listener[e].map(function(a){a.apply(null,r)}),!0):!1}}]),n})(),oe=(function(){function n(){m(this,n)}return v(n,null,[{key:"init",value:function(){n.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],hev1:[],hvcC:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};var e;for(e in n.types)n.types.hasOwnProperty(e)&&(n.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);var t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),r=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);n.HDLR_TYPES={video:t,audio:r};var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),a=new Uint8Array([0,0,0,0,0,0,0,0]);n.STTS=n.STSC=n.STCO=a,n.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),n.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),n.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),n.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var o=new Uint8Array([105,115,111,109]),l=new Uint8Array([97,118,99,49]),u=new Uint8Array([0,0,0,1]);n.FTYP=n.box(n.types.ftyp,o,u,o,l),n.DINF=n.box(n.types.dinf,n.box(n.types.dref,i))}},{key:"box",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];for(var a=8,o=r.length,l=o,u;o--;)a+=r[o].byteLength;for(u=new Uint8Array(a),u[0]=a>>24&255,u[1]=a>>16&255,u[2]=a>>8&255,u[3]=a&255,u.set(e,4),o=0,a=8;o<l;++o)u.set(r[o],a),a+=r[o].byteLength;return u}},{key:"hdlr",value:function(e){return n.box(n.types.hdlr,n.HDLR_TYPES[e])}},{key:"mdat",value:function(e){return n.box(n.types.mdat,e)}},{key:"mdhd",value:function(e,t){return n.box(n.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,85,196,0,0]))}},{key:"mdia",value:function(e){return n.box(n.types.mdia,n.mdhd(e.timescale,e.duration),n.hdlr(e.type),n.minf(e))}},{key:"mfhd",value:function(e){return n.box(n.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,e&255]))}},{key:"minf",value:function(e){return e.type==="audio"?n.box(n.types.minf,n.box(n.types.smhd,n.SMHD),n.DINF,n.stbl(e)):n.box(n.types.minf,n.box(n.types.vmhd,n.VMHD),n.DINF,n.stbl(e))}},{key:"moof",value:function(e,t,r){return n.box(n.types.moof,n.mfhd(e),n.traf(r,t))}},{key:"moov",value:function(e,t,r){for(var i=e.length,a=[];i--;)a[i]=n.trak(e[i]);return n.box.apply(null,[n.types.moov,n.mvhd(r,t)].concat(a).concat(n.mvex(e)))}},{key:"mvex",value:function(e){for(var t=e.length,r=[];t--;)r[t]=n.trex(e[t]);return n.box.apply(null,[n.types.mvex].concat(r))}},{key:"mvhd",value:function(e,t){var r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,e>>24&255,e>>16&255,e>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return n.box(n.types.mvhd,r)}},{key:"sdtp",value:function(e){var t=e.samples||[],r=new Uint8Array(4+t.length),i,a;for(a=0;a<t.length;a++)i=t[a].flags,r[a+4]=i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy;return n.box(n.types.sdtp,r)}},{key:"stbl",value:function(e){return n.box(n.types.stbl,n.stsd(e),n.box(n.types.stts,n.STTS),n.box(n.types.stsc,n.STSC),n.box(n.types.stsz,n.STSZ),n.box(n.types.stco,n.STCO))}},{key:"avc1",value:function(e){var t=[],r=[],i,a,o;for(i=0;i<e.sps.length;i++)a=e.sps[i],o=a.byteLength,t.push(o>>>8&255),t.push(o&255),t=t.concat(Array.prototype.slice.call(a));for(i=0;i<e.pps.length;i++)a=e.pps[i],o=a.byteLength,r.push(o>>>8&255),r.push(o&255),r=r.concat(Array.prototype.slice.call(a));var l=n.box(n.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(t).concat([e.pps.length]).concat(r))),u=e.width,f=e.height;return n.box(n.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,u>>8&255,u&255,f>>8&255,f&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,98,105,110,101,108,112,114,111,46,114,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),l,n.box(n.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"hev1",value:function(e){for(var t=[],r=[],i=[],a,o,l=0;l<(((u=e.vps)===null||u===void 0?void 0:u.length)||0);l++){var u;a=e.vps[l],o=a.byteLength,t.push(o>>>8&255,o&255),t=t.concat(Array.prototype.slice.call(a))}for(var f=0;f<(((h=e.sps)===null||h===void 0?void 0:h.length)||0);f++){var h;a=e.sps[f],o=a.byteLength,r.push(o>>>8&255,o&255),r=r.concat(Array.prototype.slice.call(a))}for(var d=0;d<(((p=e.pps)===null||p===void 0?void 0:p.length)||0);d++){var p;a=e.pps[d],o=a.byteLength,i.push(o>>>8&255,o&255),i=i.concat(Array.prototype.slice.call(a))}var k=e.hvcC,I=k.profile_space,M=k.tier_flag,_=k.profile_idc,D=k.profile_compatibility_flags,F=k.constraint_indicator_flags,le=k.level_idc,ie=k.chroma_format_idc,ue=n.box(n.types.hvcC,new Uint8Array([1,I<<6|M<<5|_,D>>24&255,D>>16&255,D>>8&255,D&255].concat(U(F),[le,240,0,252,252|ie,248,248,0,0,3,3,32,0,1],U(t),[33,0,1],U(r),[34,0,1],U(i)))),se=e.width,b=e.height;return n.box(n.types.hev1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,se>>8&255,se&255,b>>8&255,b&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,98,105,110,101,108,112,114,111,46,114,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),ue,n.box(n.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(e){var t=e.config.byteLength,r=new Uint8Array(26+t+3);return r.set([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5,t]),r.set(e.config,26),r.set([6,1,2],26+t),r}},{key:"mp4a",value:function(e){var t=e.audiosamplerate;return n.box(n.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,t&255,0,0]),n.box(n.types.esds,n.esds(e)))}},{key:"stsd",value:function(e){return e.type==="audio"?n.box(n.types.stsd,n.STSD,n.mp4a(e)):e.codec.startsWith("hvc1")?n.box(n.types.stsd,n.STSD,n.hev1(e)):n.box(n.types.stsd,n.STSD,n.avc1(e))}},{key:"tkhd",value:function(e){var t=e.id,r=e.duration,i=e.width,a=e.height,o=e.volume;return n.box(n.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,t&255,0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,r&255,0,0,0,0,0,0,0,0,0,0,0,0,o>>0&255,o%1*10>>0&255,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,i&255,0,0,a>>8&255,a&255,0,0]))}},{key:"traf",value:function(e,t){var r=n.sdtp(e),i=e.id;return n.box(n.types.traf,n.box(n.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,i&255])),n.box(n.types.tfdt,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,t&255])),n.trun(e,r.length+16+16+8+16+8+8),r)}},{key:"trak",value:function(e){return e.duration=e.duration||4294967295,n.box(n.types.trak,n.tkhd(e),n.mdia(e))}},{key:"trex",value:function(e){var t=e.id;return n.box(n.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(e,t){var r=e.samples||[],i=r.length,a=12+16*i,o=new Uint8Array(a),l,u,f,h,d,p;for(t+=8+a,o.set([0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,i&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0),l=0;l<i;l++)u=r[l],f=u.duration,h=u.size,d=u.flags,p=u.cts,o.set([f>>>24&255,f>>>16&255,f>>>8&255,f&255,h>>>24&255,h>>>16&255,h>>>8&255,h&255,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,d.degradPrio&61440,d.degradPrio&15,p>>>24&255,p>>>16&255,p>>>8&255,p&255],12+16*l);return n.box(n.types.trun,o)}},{key:"initSegment",value:function(e,t,r){n.types||n.init();var i=n.moov(e,t,r),a;return a=new Uint8Array(n.FTYP.byteLength+i.byteLength),a.set(n.FTYP),a.set(i,n.FTYP.byteLength),a}}]),n})(),L=(function(){function n(){m(this,n)}return v(n,null,[{key:"samplingRateMap",get:function(){return[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]}},{key:"getHeaderLength",value:function(e){return e[1]&1?7:9}},{key:"getFrameLength",value:function(e){return(e[3]&3)<<11|e[4]<<3|(e[5]&224)>>>5}},{key:"isAACPattern",value:function(e){return e[0]===255&&(e[1]&240)===240&&(e[1]&6)===0}},{key:"extractAAC",value:function(e){var t=0,r=e.byteLength,i=[],a,o;if(!n.isAACPattern(e))return A("Invalid ADTS audio format"),{valid:!1};a=n.getHeaderLength(e);for(var l=e.subarray(0,a);t<r;)o=n.getFrameLength(e),i.push(e.subarray(a,o)),e=e.slice(o),t+=o;return{valid:!0,header:l,slices:i}}}]),n})(),re=1,P=(function(n){C(e,n);var s=R(e);function e(){return m(this,e),s.apply(this,arguments)}return v(e,[{key:"flush",value:function(){this.mp4track.len=0,this.mp4track.samples=[]}},{key:"isReady",value:function(){return!this.readyToDecode||!this.samples.length?null:!0}}],[{key:"getTrackID",value:function(){return re++}}]),e})(j),Ae=(function(n){C(e,n);var s=R(e);function e(t,r,i){var a;return m(this,e),a=s.call(this,"AACRemuxer"),a.frameDuration=i,a.readyToDecode=!1,a.header=null,a.nextDts=0,a.dts=0,a.mp4track={id:P.getTrackID(),type:"audio",channelCount:0,len:0,fragmented:!0,timescale:t,duration:r,samples:[],config:"",codec:""},a.samples=[],a}return v(e,[{key:"resetTrack",value:function(){this.readyToDecode=!1,this.header=null,this.mp4track.codec="",this.mp4track.channelCount="",this.mp4track.config="",this.mp4track.timescale=this.timescale,this.nextDts=0,this.dts=0}},{key:"feed",value:function(r,i){var a=L.extractAAC(r),o=a.valid,l=a.header,u=a.slices;return this.header||(this.header=l),o&&u.length>0?(this.remux(this.getAudioFrames(u,i)),!0):(A("Failed to extract audio data from:",r),this.dispatch("outOfData"),!1)}},{key:"getAudioFrames",value:function(r,i){var a=[],o=0,l=0,u=g(r),f;try{for(u.s();!(f=u.n()).done;){var h=f.value;a.push({units:h})}}catch(d){u.e(d)}finally{u.f()}return o=i?i/a.length|0:this.frameDuration,l=i?i-o*a.length:0,a.map(function(d){d.duration=o,l>0&&(d.duration++,l--)}),a}},{key:"remux",value:function(r){if(r.length>0)for(var i=0;i<r.length;i++){var a=r[i],o=a.units,l=o.byteLength;this.samples.push({units:o,size:l,duration:a.duration}),this.mp4track.len+=l,this.readyToDecode||this.setAACConfig()}}},{key:"getPayload",value:function(){if(!this.isReady())return null;var r=new Uint8Array(this.mp4track.len),i=0,a=this.mp4track.samples,o,l;for(this.dts=this.nextDts;this.samples.length;){var u=this.samples.shift();if(u.units,l=u.duration,l<=0){x("remuxer: invalid sample duration at DTS: ".concat(this.nextDts," :").concat(l)),this.mp4track.len-=u.size;continue}this.nextDts+=l,o={size:u.size,duration:l,cts:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},r.set(u.units,i),i+=u.size,a.push(o)}return a.length?new Uint8Array(r.buffer,0,this.mp4track.len):null}},{key:"setAACConfig",value:function(){var r,i,a,o=new Uint8Array(2);this.header&&(r=((this.header[2]&192)>>>6)+1,i=(this.header[2]&60)>>>2,a=(this.header[2]&1)<<2,a|=(this.header[3]&192)>>>6,o[0]=r<<3,o[0]|=(i&14)>>1,o[1]|=(i&1)<<7,o[1]|=a<<3,this.mp4track.codec="mp4a.40."+r,this.mp4track.channelCount=a,this.mp4track.config=o,this.readyToDecode=!0)}}]),e})(P),de=(function(){function n(s){m(this,n),this.data=s,this.index=0,this.bitLength=s.byteLength*8}return v(n,[{key:"setData",value:function(e){this.data=e,this.index=0,this.bitLength=e.byteLength*8}},{key:"bitsAvailable",get:function(){return this.bitLength-this.index}},{key:"skipBits",value:function(e){if(this.bitsAvailable<e)return!1;this.index+=e}},{key:"readBits",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this.getBits(e,this.index,t);return r}},{key:"getBits",value:function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(this.bitsAvailable<e)return 0;var i=t%8,a=this.data[t/8|0]&255>>>i,o=8-i;if(o>=e)return r&&(this.index+=e),a>>o-e;r&&(this.index+=o);var l=e-o;return a<<l|this.getBits(l,t+o,r)}},{key:"skipLZ",value:function(){var e;for(e=0;e<this.bitLength-this.index;++e)if(this.getBits(1,this.index+e,!1)!==0)return this.index+=e,e;return e}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return this.readBits(1)===1}},{key:"readUByte",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this.readBits(e*8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}}]),n})(),Se=(function(){function n(){m(this,n)}return v(n,null,[{key:"extractNALu",value:function(e){for(var t=0,r=e.byteLength,i=[],a=0,o=0;t<r;){var l=e[t++];if(l===0)o++;else if(l===1&&o>=2){var u=o+1;a!==t-u&&i.push(e.subarray(a,t-u)),a=t,o=0}else o=0}var f=null;return a<r&&(f=e.subarray(a,r)),[i,f]}},{key:"skipScalingList",value:function(e,t){for(var r=8,i=8,a,o=0;o<t;o++)i!==0&&(a=e.readEG(),i=(r+a+256)%256),r=i===0?r:i}},{key:"readSPS",value:function(e){var t=new de(e),r=0,i=0,a=0,o=0,l=1,u,f,h,d,p,k,I=0;t.readUByte();for(var M=[],_=1,D=e.byteLength,F=_;F<D;F++)F+2<D&&t.readBits(24,!1)===3?(M.push(t.readBits(8)),M.push(t.readBits(8)),F+=2,t.readBits(8)):M.push(t.readBits(8));if(t.setData(new Uint8Array(M)),u=t.readUByte(),t.readBits(5),t.skipBits(3),t.readUByte(),t.skipUEG(),u===100||u===110||u===122||u===244||u===44||u===83||u===86||u===118||u===128){var le=t.readUEG();if(le===3&&t.skipBits(1),t.skipUEG(),t.skipUEG(),t.skipBits(1),t.readBoolean()){k=le!==3?8:12;for(var ie=0;ie<k;++ie)t.readBoolean()&&(ie<6?n.skipScalingList(t,16):n.skipScalingList(t,64))}}t.skipUEG();var ue=t.readUEG();if(ue===0)t.readUEG();else if(ue===1){t.skipBits(1),t.skipEG(),t.skipEG(),f=t.readUEG();for(var se=0;se<f;++se)t.skipEG()}if(t.skipUEG(),t.skipBits(1),h=t.readUEG(),d=t.readUEG(),p=t.readBits(1),p===0&&t.skipBits(1),t.skipBits(1),t.readBoolean()&&(r=t.readUEG(),i=t.readUEG(),a=t.readUEG(),o=t.readUEG()),t.readBoolean()){if(t.readBoolean()){var b,ge=t.readUByte();switch(ge){case 1:b=[1,1];break;case 2:b=[12,11];break;case 3:b=[10,11];break;case 4:b=[16,11];break;case 5:b=[40,33];break;case 6:b=[24,11];break;case 7:b=[20,11];break;case 8:b=[32,11];break;case 9:b=[80,33];break;case 10:b=[18,11];break;case 11:b=[15,11];break;case 12:b=[64,33];break;case 13:b=[160,99];break;case 14:b=[4,3];break;case 15:b=[3,2];break;case 16:b=[2,1];break;case 255:{b=[t.readUByte()<<8|t.readUByte(),t.readUByte()<<8|t.readUByte()];break}}b&&b[0]>0&&b[1]>0&&(l=b[0]/b[1])}if(t.readBoolean()&&t.skipBits(1),t.readBoolean()&&(t.skipBits(4),t.readBoolean()&&t.skipBits(24)),t.readBoolean()&&(t.skipUEG(),t.skipUEG()),t.readBoolean()){var ve=t.readUInt(),be=t.readUInt(),he=t.readBoolean(),ke=be/(2*ve);he&&(I=ke)}}return{fps:I>0?I:void 0,width:Math.ceil(((h+1)*16-r*2-i*2)*l),height:(2-p)*(d+1)*16-(p?2:4)*(a+o)}}}]),n})(),fe=(function(){function n(s){m(this,n),this.payload=s,this.nri=(this.payload[0]&96)>>5,this.nalUnitType=this.payload[0]&31,this._sliceType=null,this._isFirstSlice=!1}return v(n,[{key:"toString",value:function(){return"".concat(n.TYPES[this.type()]||"UNKNOWN",": NRI: ").concat(this.getNri())}},{key:"getNri",value:function(){return this.nri}},{key:"type",value:function(){return this.nalUnitType}},{key:"isKeyframe",get:function(){return this.nalUnitType===n.IDR}},{key:"isVCL",get:function(){return this.nalUnitType==n.IDR||this.nalUnitType==n.NDR}},{key:"parseHeader",value:function(){var e=new de(this.getPayload());e.readUByte(),this._isFirstSlice=e.readUEG()===0,this._sliceType=e.readUEG()}},{key:"isFirstSlice",get:function(){return this._isFirstSlice||this.parseHeader(),this._isFirstSlice}},{key:"sliceType",get:function(){return this._sliceType||this.parseHeader(),this._sliceType}},{key:"getPayload",value:function(){return this.payload}},{key:"getPayloadSize",value:function(){return this.payload.byteLength}},{key:"getSize",value:function(){return 4+this.getPayloadSize()}},{key:"getData",value:function(){var e=new Uint8Array(this.getSize()),t=new DataView(e.buffer);return t.setUint32(0,this.getSize()-4),e.set(this.getPayload(),4),e}}],[{key:"NDR",get:function(){return 1}},{key:"IDR",get:function(){return 5}},{key:"SEI",get:function(){return 6}},{key:"SPS",get:function(){return 7}},{key:"PPS",get:function(){return 8}},{key:"AUD",get:function(){return 9}},{key:"TYPES",get:function(){var e;return e={},S(e,n.IDR,"IDR"),S(e,n.SEI,"SEI"),S(e,n.SPS,"SPS"),S(e,n.PPS,"PPS"),S(e,n.NDR,"NDR"),S(e,n.AUD,"AUD"),e}}]),n})();function xe(n,s){var e=new Uint8Array((n.byteLength|0)+(s.byteLength|0));return e.set(n,0),e.set(s,n.byteLength|0),e}function Ce(n){var s,e,t,r="";return s=Math.floor(n),e=parseInt(s/3600,10)%24,t=parseInt(s/60,10)%60,s=s<0?0:s%60,e>0&&(r+=(e<10?"0"+e:e)+":"),r+=(t<10?"0"+t:t)+":"+(s<10?"0"+s:s),r}var Ue=(function(n){C(e,n);var s=R(e);function e(t,r,i){var a;return m(this,e),a=s.call(this,"H264Remuxer"),a.frameDuration=i,a.readyToDecode=!1,a.nextDts=0,a.dts=0,a.mp4track={id:P.getTrackID(),type:"video",len:0,fragmented:!0,sps:"",pps:"",fps:30,width:0,height:0,timescale:t,duration:r,samples:[]},a.samples=[],a.remainingData=new Uint8Array,a.kfCounter=0,a.pendingUnits={},a}return v(e,[{key:"resetTrack",value:function(){this.readyToDecode=!1,this.mp4track.sps="",this.mp4track.pps="",this.nextDts=0,this.dts=0,this.remainingData=new Uint8Array,this.kfCounter=0,this.pendingUnits={}}},{key:"feed",value:function(r,i,a){var o=[],l;r=xe(this.remainingData,r);var u=Se.extractNALu(r),f=E(u,2);return o=f[0],l=f[1],this.remainingData=l||new Uint8Array,o.length>0?(this.remux(this.getVideoFrames(o,i,a)),!0):(A("Failed to extract any NAL units from video data:",l),this.dispatch("outOfData"),!1)}},{key:"getVideoFrames",value:function(r,i,a){var o=this,l=[],u=[],f=0,h=0,d=!1,p=!1;this.pendingUnits.units&&(l=this.pendingUnits.units,p=this.pendingUnits.vcl,d=this.pendingUnits.keyFrame,this.pendingUnits={});var k=g(r),I;try{for(k.s();!(I=k.n()).done;){var M=I.value,_=new fe(M);l.length&&p&&(_.isFirstSlice||!_.isVCL)&&(u.push({units:l,keyFrame:d}),l=[],d=!1,p=!1),l.push(_),d=d||_.isKeyframe,p=p||_.isVCL}}catch(F){k.e(F)}finally{k.f()}if(l.length)if(!i)this.pendingUnits={units:l,keyFrame:d,vcl:p};else if(p)u.push({units:l,keyFrame:d});else{var D=u.length-1;D>=0&&(u[D].units=u[D].units.concat(l))}return f=i?i/u.length|0:this.frameDuration,h=i?i-f*u.length:0,u.map(function(F){F.duration=f,F.compositionTimeOffset=a,h>0&&(F.duration++,h--),o.kfCounter++,F.keyFrame&&o.dispatch("keyframePosition",o.kfCounter*f/1e3)}),x("jmuxer: No. of H264 frames of the last chunk: ".concat(u.length)),u}},{key:"remux",value:function(r){var i=g(r),a;try{for(i.s();!(a=i.n()).done;){var o=a.value,l=[],u=0,f=g(o.units),h;try{for(f.s();!(h=f.n()).done;){var d=h.value;this.parseNAL(d)&&(l.push(d),u+=d.getSize())}}catch(p){f.e(p)}finally{f.f()}l.length>0&&this.readyToDecode&&(this.mp4track.len+=u,this.samples.push({units:l,size:u,keyFrame:o.keyFrame,duration:o.duration,compositionTimeOffset:o.compositionTimeOffset}))}}catch(p){i.e(p)}finally{i.f()}}},{key:"getPayload",value:function(){if(!this.isReady())return null;var r=new Uint8Array(this.mp4track.len),i=0,a=this.mp4track.samples,o,l;for(this.dts=this.nextDts;this.samples.length;){var u=this.samples.shift(),f=u.units;if(l=u.duration,l<=0){x("remuxer: invalid sample duration at DTS: ".concat(this.nextDts," :").concat(l)),this.mp4track.len-=u.size;continue}this.nextDts+=l,o={size:u.size,duration:l,cts:u.compositionTimeOffset||0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,isNonSync:u.keyFrame?0:1,dependsOn:u.keyFrame?2:1}};var h=g(f),d;try{for(h.s();!(d=h.n()).done;){var p=d.value;r.set(p.getData(),i),i+=p.getSize()}}catch(k){h.e(k)}finally{h.f()}a.push(o)}return a.length?new Uint8Array(r.buffer,0,this.mp4track.len):null}},{key:"parseSPS",value:function(r){var i=Se.readSPS(new Uint8Array(r));this.mp4track.fps=i.fps||this.mp4track.fps,this.mp4track.width=i.width,this.mp4track.height=i.height,this.mp4track.sps=[new Uint8Array(r)],this.mp4track.codec="avc1.";for(var a=new DataView(r.buffer,r.byteOffset+1,4),o=0;o<3;++o){var l=a.getUint8(o).toString(16);l.length<2&&(l="0"+l),this.mp4track.codec+=l}}},{key:"parsePPS",value:function(r){this.mp4track.pps=[new Uint8Array(r)]}},{key:"parseNAL",value:function(r){if(!r)return!1;if(r.isVCL)return!0;var i=!1;switch(r.type()){case fe.PPS:this.mp4track.pps||this.parsePPS(r.getPayload()),i=!0;break;case fe.SPS:this.mp4track.sps||this.parseSPS(r.getPayload()),i=!0;break;case fe.AUD:x("AUD - ignoing");break;case fe.SEI:x("SEI - ignoing");break}return!this.readyToDecode&&this.mp4track.pps&&this.mp4track.sps&&(this.readyToDecode=!0),i}}]),e})(P),me=(function(){function n(){m(this,n)}return v(n,null,[{key:"extractNALu",value:function(e){for(var t=0,r=e.byteLength,i=[],a=0,o=0;t<r;){var l=e[t++];if(l===0)o++;else if(l===1&&o>=2){var u=o+1;a!==t-u&&i.push(e.subarray(a,t-u)),a=t,o=0}else o=0}var f=null;return a<r&&(f=e.subarray(a,r)),[i,f]}},{key:"removeEmulationPreventionBytes",value:function(e){for(var t=[],r=0,i=0;i<e.length;i++){var a=e[i];if(r===2&&a===3){r=0;continue}t.push(a),a===0?r++:r=0}return new Uint8Array(t)}},{key:"readSPS",value:function(e){var t=new de(e);t.readUByte(),t.readUByte(),t.readBits(4),t.readBits(3),t.readBits(1);for(var r=t.readBits(2),i=t.readBits(1),a=t.readBits(5),o=t.readUInt(),l=new Uint8Array(6),u=0;u<6;u++)l[u]=t.readUByte();var f=t.readUByte();t.readUEG();var h=t.readUEG();h===3&&t.readBits(1);var d=t.readUEG(),p=t.readUEG(),k=t.readBoolean(),I=0,M=0,_=0,D=0;k&&(I=t.readUEG(),M=t.readUEG(),_=t.readUEG(),D=t.readUEG());var F=null,le=t.readBoolean();if(le){var ie=t.readBoolean();if(ie){var ue=t.readUByte();ue===255&&(t.readUShort(),t.readUShort())}var se=t.readBoolean();se&&t.readBoolean();var b=t.readBoolean();if(b){t.readBits(3),t.readBoolean();var ge=t.readBoolean();ge&&(t.readUByte(),t.readUByte(),t.readUByte())}var ve=t.readBoolean();ve&&(t.readUEG(),t.readUEG()),t.readBoolean(),t.readBoolean(),t.readBoolean();var be=t.readBoolean();if(be){var he=t.readUInt(),ke=t.readUInt();t.readBoolean(),he&&(F=ke/(2*he))}}var Ee=h===1||h===2?2:1,Te=h===1?2:1,je=d-Ee*(M+I),Ne=p-Te*(_+D);return{width:je,height:Ne,profile_space:r,tier_flag:i,profile_idc:a,profile_compatibility_flags:o,constraint_indicator_flags:l,level_idc:f,chroma_format_idc:h,fps:F}}}]),n})(),ne=(function(){function n(s){m(this,n),this.payload=s,this.nalUnitType=(s[0]&126)>>1,this.nuhLayerId=(s[0]&1)<<5|(s[1]&248)>>3,this.nuhTemporalIdPlus1=s[1]&7,this._isFirstSlice=null,this._sliceType=null}return v(n,[{key:"toString",value:function(){return"".concat(n.TYPES[this.type()]||"UNKNOWN ("+this.type()+")",": Layer: ").concat(this.nuhLayerId,", Temporal Id: ").concat(this.nuhTemporalIdPlus1)}},{key:"type",value:function(){return this.nalUnitType}},{key:"isKeyframe",get:function(){return[n.IDR_W_RADL,n.IDR_N_LP,n.CRA].includes(this.nalUnitType)}},{key:"isVCL",get:function(){return this.nalUnitType<=31}},{key:"parseHeader",value:function(){var e=new de(this.getPayload());e.readUByte(),e.readUByte(),this._isFirstSlice=e.readBoolean(),this.isKeyframe&&e.readBits(1),e.readUEG(),this._sliceType=e.readUEG()}},{key:"isFirstSlice",get:function(){return this._isFirstSlice||this.parseHeader(),this._isFirstSlice}},{key:"sliceType",get:function(){return this._sliceType||this.parseHeader(),this._sliceType}},{key:"getPayload",value:function(){return this.payload}},{key:"getPayloadSize",value:function(){return this.payload.byteLength}},{key:"getSize",value:function(){return 4+this.getPayloadSize()}},{key:"getData",value:function(){var e=new Uint8Array(this.getSize()),t=new DataView(e.buffer);return t.setUint32(0,this.getSize()-4),e.set(this.getPayload(),4),e}}],[{key:"TRAIL_N",get:function(){return 0}},{key:"TRAIL_R",get:function(){return 1}},{key:"IDR_W_RADL",get:function(){return 19}},{key:"IDR_N_LP",get:function(){return 20}},{key:"CRA",get:function(){return 21}},{key:"VPS",get:function(){return 32}},{key:"SPS",get:function(){return 33}},{key:"PPS",get:function(){return 34}},{key:"AUD",get:function(){return 35}},{key:"SEI",get:function(){return 39}},{key:"SEI2",get:function(){return 40}},{key:"TYPES",get:function(){var e;return e={},S(e,n.TRAIL_N,"TRAIL_N"),S(e,n.TRAIL_R,"TRAIL_R"),S(e,n.IDR_W_RADL,"IDR"),S(e,n.IDR_N_LP,"IDR2"),S(e,n.CRA,"CRA"),S(e,n.VPS,"VPS"),S(e,n.SPS,"SPS"),S(e,n.PPS,"PPS"),S(e,n.AUD,"AUD"),S(e,n.SEI,"SEI"),S(e,n.SEI2,"SEI2"),e}}]),n})(),Pe=(function(n){C(e,n);var s=R(e);function e(t,r,i){var a;return m(this,e),a=s.call(this,"H264Remuxer"),a.frameDuration=i,a.readyToDecode=!1,a.nextDts=0,a.dts=0,a.mp4track={id:P.getTrackID(),type:"video",len:0,fragmented:!0,vps:"",sps:"",pps:"",hvcC:{},fps:30,width:0,height:0,timescale:t,duration:r,samples:[]},a.samples=[],a.remainingData=new Uint8Array,a.kfCounter=0,a.pendingUnits={},a}return v(e,[{key:"resetTrack",value:function(){this.readyToDecode=!1,this.mp4track.vps="",this.mp4track.sps="",this.mp4track.pps="",this.mp4track.hvcC={},this.nextDts=0,this.dts=0,this.remainingData=new Uint8Array,this.kfCounter=0,this.pendingUnits={}}},{key:"feed",value:function(r,i,a){var o=[],l;r=xe(this.remainingData,r);var u=me.extractNALu(r),f=E(u,2);return o=f[0],l=f[1],this.remainingData=l||new Uint8Array,o.length>0?(this.remux(this.getVideoFrames(o,i,a)),!0):(A("Failed to extract any NAL units from video data:",l),this.dispatch("outOfData"),!1)}},{key:"getVideoFrames",value:function(r,i,a){var o=this,l=[],u=[],f=0,h=0,d=!1,p=!1;this.pendingUnits.units&&(l=this.pendingUnits.units,p=this.pendingUnits.vcl,d=this.pendingUnits.keyFrame,this.pendingUnits={});var k=g(r),I;try{for(k.s();!(I=k.n()).done;){var M=I.value,_=new ne(M);l.length&&p&&(_.isFirstSlice||!_.isVCL)&&(u.push({units:l,keyFrame:d}),l=[],d=!1,p=!1),l.push(_),d=d||_.isKeyframe,p=p||_.isVCL}}catch(F){k.e(F)}finally{k.f()}if(l.length)if(!i)this.pendingUnits={units:l,keyFrame:d,vcl:p};else if(p)u.push({units:l,keyFrame:d});else{var D=u.length-1;D>=0&&(u[D].units=u[D].units.concat(l))}return f=i?i/u.length|0:this.frameDuration,h=i?i-f*u.length:0,u.map(function(F){F.duration=f,F.compositionTimeOffset=a,h>0&&(F.duration++,h--),o.kfCounter++,F.keyFrame&&o.dispatch("keyframePosition",o.kfCounter*f/1e3)}),x("jmuxer: No. of H265 frames of the last chunk: ".concat(u.length)),u}},{key:"remux",value:function(r){var i=g(r),a;try{for(i.s();!(a=i.n()).done;){var o=a.value,l=[],u=0,f=g(o.units),h;try{for(f.s();!(h=f.n()).done;){var d=h.value;this.parseNAL(d)&&(l.push(d),u+=d.getSize())}}catch(p){f.e(p)}finally{f.f()}l.length>0&&this.readyToDecode&&(this.mp4track.len+=u,this.samples.push({units:l,size:u,keyFrame:o.keyFrame,duration:o.duration,compositionTimeOffset:o.compositionTimeOffset}))}}catch(p){i.e(p)}finally{i.f()}}},{key:"getPayload",value:function(){if(!this.isReady())return null;var r=new Uint8Array(this.mp4track.len),i=0,a=this.mp4track.samples,o,l;for(this.dts=this.nextDts;this.samples.length;){var u=this.samples.shift(),f=u.units;if(l=u.duration,l<=0){x("remuxer: invalid sample duration at DTS: ".concat(this.nextDts," :").concat(l)),this.mp4track.len-=u.size;continue}this.nextDts+=l,o={size:u.size,duration:l,cts:u.compositionTimeOffset||0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,isNonSync:u.keyFrame?0:1,dependsOn:u.keyFrame?2:1}};var h=g(f),d;try{for(h.s();!(d=h.n()).done;){var p=d.value;r.set(p.getData(),i),i+=p.getSize()}}catch(k){h.e(k)}finally{h.f()}a.push(o)}return a.length?new Uint8Array(r.buffer,0,this.mp4track.len):null}},{key:"parseSPS",value:function(r){this.mp4track.sps=[new Uint8Array(r)],r=me.removeEmulationPreventionBytes(r);var i=me.readSPS(new Uint8Array(r));this.mp4track.fps=i.fps||this.mp4track.fps,this.mp4track.width=i.width,this.mp4track.height=i.height,this.mp4track.codec="hvc1.".concat(i.profile_idc,".").concat(i.profile_compatibility_flags.toString(16))+".L".concat(i.level_idc).concat(i.tier_flag?"H":"L")+".".concat(i.constraint_indicator_flags.map(function(a){return a.toString(16)}).join(".").toUpperCase()),this.mp4track.hvcC={profile_space:i.profile_space,tier_flag:i.tier_flag,profile_idc:i.profile_idc,profile_compatibility_flags:i.profile_compatibility_flags,constraint_indicator_flags:i.constraint_indicator_flags,level_idc:i.level_idc,chroma_format_idc:i.chroma_format_idc}}},{key:"parsePPS",value:function(r){this.mp4track.pps=[r]}},{key:"parseVPS",value:function(r){this.mp4track.vps=[r]}},{key:"parseNAL",value:function(r){if(!r)return!1;if(r.isVCL)return!0;var i=!1;switch(r.type()){case ne.VPS:this.mp4track.vps||this.parseVPS(r.getPayload()),i=!0;break;case ne.SPS:this.mp4track.sps||this.parseSPS(r.getPayload()),i=!0;break;case ne.PPS:this.mp4track.pps||this.parsePPS(r.getPayload()),i=!0;break;case ne.AUD:x("AUD - ignoing");break;case ne.SEI:case ne.SEI2:x("SEI - ignoing");break}return!this.readyToDecode&&this.mp4track.vps&&this.mp4track.sps&&this.mp4track.pps&&(this.readyToDecode=!0),i}}]),e})(P),_e=(function(n){C(e,n);var s=R(e);function e(t,r,i,a){var o;return m(this,e),o=s.call(this,"remuxer"),o.videoCodec=i,o.frameDuration=a,o.initialized=!1,o.tracks={},o.seq=1,o.env=t,o.timescale=1e3,o.mediaDuration=r?4294967295:0,o}return v(e,[{key:"addTrack",value:function(r){var i=this;if((r==="video"||r==="both")&&(this.videoCodec=="H265"?this.tracks.video=new Pe(this.timescale,this.mediaDuration,this.frameDuration):this.tracks.video=new Ue(this.timescale,this.mediaDuration,this.frameDuration),this.tracks.video.on("outOfData",function(){i.dispatch("missingVideoFrames")}),this.tracks.video.on("keyframePosition",function(o){i.dispatch("keyframePosition",o)})),r==="audio"||r==="both"){var a=new Ae(this.timescale,this.mediaDuration,this.frameDuration);this.tracks.audio=a,this.tracks.video.on("outOfData",function(){i.dispatch("missingAudioFrames")})}}},{key:"reset",value:function(){for(var r in this.tracks)this.tracks[r].resetTrack();this.initialized=!1}},{key:"destroy",value:function(){this.tracks={},this.offAll()}},{key:"flush",value:function(){if(!this.initialized){if(!this.isReady())return;this.dispatch("ready"),this.initSegment(),this.initialized=!0}for(var r in this.tracks){var i=this.tracks[r],a=i.getPayload();if(a&&a.byteLength){var o=oe.moof(this.seq,i.dts,i.mp4track),l=oe.mdat(a),u=xe(o,l),f={type:r,payload:u,dts:i.dts};r==="video"&&(f.fps=i.mp4track.fps),this.dispatch("buffer",f);var h=Ce(i.dts/this.timescale);x("put segment (".concat(r,"): dts: ").concat(i.dts," frames: ").concat(i.mp4track.samples.length," second: ").concat(h)),i.flush(),this.seq++}}}},{key:"initSegment",value:function(){var r=[];for(var i in this.tracks){var a=this.tracks[i];if(this.env=="browser"){var o={type:i,payload:oe.initSegment([a.mp4track],this.mediaDuration,this.timescale)};this.dispatch("buffer",o)}else r.push(a.mp4track)}if(this.env=="node"){var l={type:"all",payload:oe.initSegment(r,this.mediaDuration,this.timescale)};this.dispatch("buffer",l)}x("Initial segment generated.")}},{key:"isReady",value:function(){for(var r in this.tracks)if(!this.tracks[r].readyToDecode||!this.tracks[r].samples.length)return!1;return!0}},{key:"feed",value:function(r){var i=!1;if(r.video&&this.tracks.video&&(i|=this.tracks.video.feed(r.video,r.duration,r.compositionTimeOffset)),r.audio&&this.tracks.audio&&(i|=this.tracks.audio.feed(r.audio,r.duration)),!i){A("Input object must have video and/or audio property. Make sure it is a valid typed array");return}this.flush()}}]),e})(j),De=(function(n){C(e,n);var s=R(e);function e(t,r){var i;return m(this,e),i=s.call(this,"buffer"),i.type=r,i.queue=new Uint8Array,i.cleaning=!1,i.pendingCleaning=0,i.cleanOffset=30,i.cleanRanges=[],i.sourceBuffer=t,i.sourceBuffer.addEventListener("updateend",function(){if(i.pendingCleaning>0&&(i.initCleanup(i.pendingCleaning),i.pendingCleaning=0),i.cleaning=!1,i.cleanRanges.length){i.doCleanup();return}}),i.sourceBuffer.addEventListener("error",function(){i.dispatch("error",{type:i.type,name:"buffer",error:"buffer error"})}),i}return v(e,[{key:"destroy",value:function(){this.queue=null,this.sourceBuffer=null,this.offAll()}},{key:"doCleanup",value:function(){if(!this.cleanRanges.length){this.cleaning=!1;return}var r=this.cleanRanges.shift();x("".concat(this.type," remove range [").concat(r[0]," - ").concat(r[1],")")),this.cleaning=!0,this.sourceBuffer.remove(r[0],r[1])}},{key:"initCleanup",value:function(r){try{if(this.sourceBuffer.updating){this.pendingCleaning=r;return}if(this.sourceBuffer.buffered&&this.sourceBuffer.buffered.length&&!this.cleaning){for(var i=0;i<this.sourceBuffer.buffered.length;++i){var a=this.sourceBuffer.buffered.start(i),o=this.sourceBuffer.buffered.end(i);r-a>this.cleanOffset&&(o=r-this.cleanOffset,a<o&&this.cleanRanges.push([a,o]))}this.doCleanup()}}catch(l){A("Error occured while cleaning ".concat(this.type," buffer - ").concat(l.name,": ").concat(l.message))}}},{key:"doAppend",value:function(){if(this.queue.length&&!(!this.sourceBuffer||this.sourceBuffer.updating))try{this.sourceBuffer.appendBuffer(this.queue),this.queue=new Uint8Array}catch(i){var r="unexpectedError";i.name==="QuotaExceededError"?(x("".concat(this.type," buffer quota full")),r="QuotaExceeded"):(A("Error occured while appending ".concat(this.type," buffer - ").concat(i.name,": ").concat(i.message)),r="InvalidStateError"),this.dispatch("error",{type:this.type,name:r,error:"buffer error"})}}},{key:"feed",value:function(r){this.queue=xe(this.queue,r)}}]),e})(j),Be=(function(n){C(e,n);var s=R(e);function e(t){var r;m(this,e),r=s.call(this,"jmuxer"),r.isReset=!1;var i={node:"",mode:"both",videoCodec:"H264",flushingTime:500,maxDelay:500,clearBuffer:!0,fps:30,readFpsFromTrack:!1,debug:!1,onReady:function(){},onData:function(){},onError:function(){},onUnsupportedCodec:function(){},onMissingVideoFrames:function(){},onMissingAudioFrames:function(){},onKeyframePosition:function(){},onLoggerLog:console.log,onLoggerErr:console.error};return r.options=Object.assign({},i,t),r.env=(typeof process>"u"?"undefined":K(process))==="object"&&typeof window>"u"?"node":"browser",r.options.debug&&ye(r.options.onLoggerLog,r.options.onLoggerErr),r.options.fps||(r.options.fps=30),r.frameDuration=1e3/r.options.fps|0,r.remuxController=new _e(r.env,t.live,r.options.videoCodec,r.frameDuration),r.remuxController.addTrack(r.options.mode),r.initData(),r.remuxController.on("buffer",r.onBuffer.bind(O(r))),r.env=="browser"&&(r.remuxController.on("ready",r.createBuffer.bind(O(r))),r.initBrowser()),r.remuxController.on("missingVideoFrames",function(){typeof r.options.onMissingVideoFrames=="function"&&r.options.onMissingVideoFrames.call(null)}),r.remuxController.on("missingAudioFrames",function(){typeof r.options.onMissingAudioFrames=="function"&&r.options.onMissingAudioFrames.call(null)}),r.clearBuffer&&r.remuxController.on("keyframePosition",function(a){r.kfPosition.push(a)}),typeof r.options.onKeyframePosition=="function"&&r.remuxController.on("keyframePosition",function(a){r.options.onKeyframePosition.call(null,a)}),r}return v(e,[{key:"initData",value:function(){this.lastCleaningTime=Date.now(),this.kfPosition=[],this.pendingUnits={},this.remainingData=new Uint8Array,this.startInterval()}},{key:"initBrowser",value:function(){typeof this.options.node=="string"&&this.options.node==""&&A("no video element were found to render, provide a valid video element"),this.node=typeof this.options.node=="string"?document.getElementById(this.options.node):this.options.node,this.mseReady=!1,this.setupMSE()}},{key:"createStream",value:function(){var r=this.feed.bind(this),i=this.destroy.bind(this);return this.stream=new V.Duplex({writableObjectMode:!0,read:function(o){},write:function(o,l,u){r(o),u()},final:function(o){i(),o()}}),this.stream}},{key:"setupMSE",value:function(){if(window.MediaSource=window.MediaSource||window.WebKitMediaSource||window.ManagedMediaSource,!window.MediaSource)throw"Oops! Browser does not support Media Source Extension or Managed Media Source (IOS 17+).";if(this.isMSESupported=!!window.MediaSource,this.mediaSource=new window.MediaSource,this.url=URL.createObjectURL(this.mediaSource),window.MediaSource===window.ManagedMediaSource)try{this.node.removeAttribute("src"),this.node.disableRemotePlayback=!0;var r=document.createElement("source");r.type="video/mp4",r.src=this.url,this.node.appendChild(r),this.node.load()}catch{this.node.src=this.url}else this.node.src=this.url;this.mseEnded=!1,this.mediaSource.addEventListener("sourceopen",this.onMSEOpen.bind(this)),this.mediaSource.addEventListener("sourceclose",this.onMSEClose.bind(this)),this.mediaSource.addEventListener("webkitsourceopen",this.onMSEOpen.bind(this)),this.mediaSource.addEventListener("webkitsourceclose",this.onMSEClose.bind(this))}},{key:"endMSE",value:function(){if(!this.mseEnded)try{this.mseEnded=!0,this.mediaSource.endOfStream()}catch{A("mediasource is not available to end")}}},{key:"feed",value:function(r){!r||!this.remuxController||(r.duration=r.duration?parseInt(r.duration):0,this.remuxController.feed(r))}},{key:"destroy",value:function(){if(this.stopInterval(),this.stream&&(this.remuxController.flush(),this.stream.push(null),this.stream=null),this.remuxController&&(this.remuxController.destroy(),this.remuxController=null),this.bufferControllers){for(var r in this.bufferControllers)this.bufferControllers[r].destroy();this.bufferControllers=null,this.endMSE()}this.node=!1,this.mseReady=!1,this.videoStarted=!1,this.mediaSource=null}},{key:"reset",value:function(){if(this.stopInterval(),this.isReset=!0,this.node.pause(),this.remuxController&&this.remuxController.reset(),this.bufferControllers){for(var r in this.bufferControllers)this.bufferControllers[r].destroy();this.bufferControllers=null,this.endMSE()}this.initData(),this.env=="browser"&&this.initBrowser(),x("JMuxer was reset")}},{key:"createBuffer",value:function(){if(!(!this.mseReady||!this.remuxController||!this.remuxController.isReady()||this.bufferControllers)){this.bufferControllers={};for(var r in this.remuxController.tracks){var i=this.remuxController.tracks[r];if(!e.isSupported("".concat(r,'/mp4; codecs="').concat(i.mp4track.codec,'"')))return A("Browser does not support codec: ".concat(r,'/mp4; codecs="').concat(i.mp4track.codec,'"')),typeof this.options.onUnsupportedCodec=="function"&&this.options.onUnsupportedCodec.call(null,i.mp4track.codec),!1;var a=this.mediaSource.addSourceBuffer("".concat(r,'/mp4; codecs="').concat(i.mp4track.codec,'"'));this.bufferControllers[r]=new De(a,r),this.bufferControllers[r].on("error",this.onBufferError.bind(this))}}}},{key:"startInterval",value:function(){var r=this;this.interval=setInterval(function(){r.options.flushingTime?r.applyAndClearBuffer():r.bufferControllers&&r.cancelDelay()},this.options.flushingTime||1e3)}},{key:"stopInterval",value:function(){this.interval&&clearInterval(this.interval)}},{key:"cancelDelay",value:function(){if(this.node.buffered&&this.node.buffered.length>0&&!this.node.seeking){var r=this.node.buffered.end(0);r-this.node.currentTime>this.options.maxDelay/1e3&&(x("delay"),this.node.paused&&this.node.play().catch(A),this.node.currentTime=r-.001)}}},{key:"releaseBuffer",value:function(){for(var r in this.bufferControllers)this.bufferControllers[r].doAppend()}},{key:"applyAndClearBuffer",value:function(){this.bufferControllers&&(this.releaseBuffer(),this.clearBuffer())}},{key:"getSafeClearOffsetOfBuffer",value:function(r){for(var i=this.options.mode==="audio"&&r||0,a,o=0;o<this.kfPosition.length&&!(this.kfPosition[o]>=r);o++)a=this.kfPosition[o];return a&&(this.kfPosition=this.kfPosition.filter(function(l){return l<a&&(i=l),l>=a})),i}},{key:"clearBuffer",value:function(){if(this.options.clearBuffer&&Date.now()-this.lastCleaningTime>1e4){for(var r in this.bufferControllers){var i=this.getSafeClearOffsetOfBuffer(this.node.currentTime);this.bufferControllers[r].initCleanup(i)}this.lastCleaningTime=Date.now()}}},{key:"onBuffer",value:function(r){this.options.readFpsFromTrack&&typeof r.fps<"u"&&this.options.fps!=r.fps&&(this.options.fps=r.fps,this.frameDuration=Math.ceil(1e3/r.fps),x("JMuxer changed FPS to ".concat(r.fps," from track data"))),this.env=="browser"?this.bufferControllers&&this.bufferControllers[r.type]&&this.bufferControllers[r.type].feed(r.payload):this.stream&&this.stream.push(r.payload),this.options.onData&&this.options.onData(r.payload),this.options.flushingTime===0&&this.applyAndClearBuffer()}},{key:"onMSEOpen",value:function(){this.mseReady=!0,URL.revokeObjectURL(this.url),typeof this.options.onReady=="function"&&this.options.onReady.call(null,this.isReset)}},{key:"onMSEClose",value:function(){this.mseReady=!1,this.videoStarted=!1}},{key:"onBufferError",value:function(r){if(r.name=="QuotaExceeded"){x("JMuxer cleaning ".concat(r.type," buffer due to QuotaExceeded error")),this.bufferControllers[r.type].initCleanup(this.node.currentTime);return}else r.name=="InvalidStateError"?(x("JMuxer is reseting due to InvalidStateError"),this.reset()):this.endMSE();typeof this.options.onError=="function"&&this.options.onError.call(null,r)}}],[{key:"isSupported",value:function(r){return window.MediaSource&&window.MediaSource.isTypeSupported(r)}}]),e})(j);return Be}))})(pe)),pe.exports}var $e=We();const qe=Re($e);function Je({className:Q,onFallback:H,fallbackTimeout:V=5e3}){const T=y.useRef(null),N=y.useRef(null),B=y.useRef(null),[O,m]=y.useState("connecting"),[Z,v]=y.useState(null),g=y.useRef(null),R=y.useRef(!1),S=y.useRef(0),G=y.useRef(Date.now()),C=y.useRef(0),W=y.useRef(0),$=y.useRef(H),X=y.useRef(V);return y.useEffect(()=>{$.current=H,X.current=V},[H,V]),y.useEffect(()=>{let ee=null,te=null;const q=async()=>{if(T.current){if(console.log("[ScrcpyPlayer] connect() called"),W.current=Date.now(),m("connecting"),v(null),B.current){console.log("[ScrcpyPlayer] Closing existing WebSocket");try{B.current.onclose=null,B.current.onerror=null,B.current.onmessage=null,B.current.close()}catch(w){console.error("[ScrcpyPlayer] Error closing old WebSocket:",w)}B.current=null}if(N.current){console.log("[ScrcpyPlayer] Destroying old jMuxer instance");try{N.current.destroy()}catch(w){console.error("[ScrcpyPlayer] Error destroying old jMuxer:",w)}N.current=null}T.current&&(T.current.src="",T.current.load()),await new Promise(w=>setTimeout(w,300));try{console.log("[ScrcpyPlayer] Creating new jMuxer instance (after cleanup delay)"),N.current=new qe({node:T.current,mode:"video",flushingTime:0,fps:30,debug:!1,clearBuffer:!0,onError:E=>{if(console.error("[jMuxer] Decoder error:",E),E.name==="InvalidStateError"&&E.error==="buffer error"){const U=Date.now(),z=U-C.current;(U-W.current<1e3?z>500:z>2e3)?(C.current=U,console.warn("[jMuxer] ⚠️ Buffer error detected, reconnecting..."),te&&setTimeout(()=>{te()},100)):console.warn(`[jMuxer] Reconnect skipped (debounced: ${z}ms since last error)`)}}});const w=new WebSocket("ws://localhost:8000/api/video/stream");B.current=w,w.binaryType="arraybuffer",w.onopen=()=>{console.log("[ScrcpyPlayer] WebSocket connected"),m("connected"),g.current=setTimeout(()=>{R.current||(console.log("[ScrcpyPlayer] No data received within timeout, triggering fallback"),m("error"),v("Video stream timeout"),w.close(),$.current&&$.current())},X.current)},w.onmessage=E=>{if(typeof E.data=="string"){try{const U=JSON.parse(E.data);console.error("[ScrcpyPlayer] Server error:",U),v(U.error||"Unknown error"),m("error"),$.current&&!R.current&&$.current()}catch{console.error("[ScrcpyPlayer] Received non-JSON string:",E.data)}return}R.current||(R.current=!0,console.log("[ScrcpyPlayer] First video data received, canceling fallback timer"),g.current&&(clearTimeout(g.current),g.current=null));try{if(N.current&&E.data.byteLength>0){N.current.feed({video:new Uint8Array(E.data)}),S.current++;const U=Date.now(),z=U-G.current;if(z>5e3){const J=S.current/z*1e3,K=T.current,Y=K&&K.buffered.length>0?K.buffered.end(0)-K.currentTime:0;console.log(`[ScrcpyPlayer] Stats: ${J.toFixed(1)} fps, buffer: ${Y.toFixed(2)}s`),Y>2&&console.warn(`[ScrcpyPlayer] ⚠ High latency detected: ${Y.toFixed(2)}s buffer`),S.current=0,G.current=U}}}catch(U){console.error("[ScrcpyPlayer] Feed error:",U)}},w.onerror=E=>{console.error("[ScrcpyPlayer] WebSocket error:",E),v("Connection error"),m("error")},w.onclose=()=>{console.log("[ScrcpyPlayer] WebSocket closed"),m("disconnected"),ee=setTimeout(()=>{console.log("[ScrcpyPlayer] Attempting to reconnect..."),q()},3e3)}}catch(w){console.error("[ScrcpyPlayer] Initialization error:",w),v("Initialization failed"),m("error")}}};return te=q,q(),()=>{if(ee&&clearTimeout(ee),g.current&&(clearTimeout(g.current),g.current=null),B.current&&(B.current.close(),B.current=null),N.current){try{N.current.destroy()}catch(w){console.error("[ScrcpyPlayer] Cleanup error:",w)}N.current=null}}},[]),c.jsxs("div",{className:`relative w-full h-full flex items-center justify-center ${Q||""}`,children:[c.jsx("video",{ref:T,autoPlay:!0,muted:!0,playsInline:!0,className:"max-w-full max-h-full object-contain",style:{backgroundColor:"#000"}}),O!=="connected"&&c.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:c.jsxs("div",{className:"text-center text-white",children:[O==="connecting"&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"w-8 h-8 border-4 border-white border-t-transparent rounded-full animate-spin mx-auto mb-2"}),c.jsx("p",{children:"正在连接..."})]}),O==="disconnected"&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"w-8 h-8 border-4 border-yellow-500 border-t-transparent rounded-full animate-spin mx-auto mb-2"}),c.jsx("p",{children:"连接断开,正在重连..."})]}),O==="error"&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"text-red-500 text-xl mb-2",children:"✗"}),c.jsx("p",{className:"text-red-400",children:"连接失败"}),Z&&c.jsx("p",{className:"text-sm text-gray-400 mt-1",children:Z})]})]})})]})}function Ze(){const[Q,H]=y.useState([]),[V,T]=y.useState(""),[N,B]=y.useState(!1),[O,m]=y.useState(!1),[Z,v]=y.useState(null),[g,R]=y.useState(null),[S,G]=y.useState(null),[C,W]=y.useState({baseUrl:"",apiKey:"",modelName:""}),[$,X]=y.useState(!1),[ee,te]=y.useState(!0),[q,w]=y.useState(!1),E=y.useRef(null),U=y.useRef(!1),z=y.useRef([]),J=y.useRef([]),K=()=>{E.current?.scrollIntoView({behavior:"smooth"})};y.useEffect(()=>{K()},[Q]),y.useEffect(()=>{(async()=>{try{if((await Ie()).initialized)m(!0);else try{await we(),m(!0)}catch{m(!1)}}catch{m(!1),v("无法连接到后端服务")}})()},[]),y.useEffect(()=>{if(!q)return;const x=async()=>{if(!U.current){U.current=!0;try{const j=await Oe();j.success&&R(j)}catch(j){console.error("Failed to fetch screenshot:",j)}finally{U.current=!1}}};x();const A=setInterval(x,500);return()=>clearInterval(A)},[q]);const Y=async()=>{v(null);try{await we({model_config:{base_url:C.baseUrl||void 0,api_key:C.apiKey||void 0,model_name:C.modelName||void 0}}),m(!0),X(!1)}catch{v("初始化失败,请检查配置或确保后端服务正在运行")}},ae=async()=>{if(!V.trim()||N)return;const x={id:Date.now().toString(),role:"user",content:V.trim(),timestamp:new Date};H(L=>[...L,x]),T(""),B(!0),v(null),z.current=[],J.current=[];const A=(Date.now()+1).toString(),j={id:A,role:"agent",content:"",timestamp:new Date,thinking:[],actions:[],isStreaming:!0};H(L=>[...L,j]);const oe=Ge(x.content,L=>{console.log("[Chat] Processing step event:",L),z.current.push(L.thinking),J.current.push(L.action),H(re=>re.map(P=>P.id===A?{...P,thinking:[...z.current],actions:[...J.current],steps:L.step}:P))},L=>{H(re=>re.map(P=>P.id===A?{...P,content:L.message,success:L.success,isStreaming:!1}:P)),B(!1),G(null)},L=>{H(re=>re.map(P=>P.id===A?{...P,content:`错误: ${L.message}`,success:!1,isStreaming:!1}:P)),B(!1),G(null)});G(oe)},ce=async()=>{S&&(S.close(),G(null)),B(!1),H([]),v(null),await Me()},ye=x=>{x.key==="Enter"&&(x.metaKey||x.ctrlKey)&&(x.preventDefault(),ae())};return c.jsxs("div",{className:"h-full flex items-center justify-center p-4 gap-4 relative",children:[$&&c.jsx("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 rounded-2xl",children:c.jsxs("div",{className:"bg-white dark:bg-gray-800 p-6 rounded-2xl w-96 shadow-xl border border-gray-200 dark:border-gray-700",children:[c.jsx("h2",{className:"text-xl font-bold mb-4 text-gray-900 dark:text-gray-100",children:"Agent 配置"}),c.jsxs("div",{className:"space-y-4",children:[c.jsxs("div",{children:[c.jsx("label",{className:"block text-sm font-medium mb-1 text-gray-700 dark:text-gray-300",children:"Base URL"}),c.jsx("input",{type:"text",value:C.baseUrl,onChange:x=>W({...C,baseUrl:x.target.value}),placeholder:"留空使用默认值",className:"w-full px-3 py-2 border rounded-lg bg-white dark:bg-gray-700 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 outline-none"})]}),c.jsxs("div",{children:[c.jsx("label",{className:"block text-sm font-medium mb-1 text-gray-700 dark:text-gray-300",children:"API Key"}),c.jsx("input",{type:"password",value:C.apiKey,onChange:x=>W({...C,apiKey:x.target.value}),placeholder:"留空使用默认值",className:"w-full px-3 py-2 border rounded-lg bg-white dark:bg-gray-700 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 outline-none"})]}),c.jsxs("div",{children:[c.jsx("label",{className:"block text-sm font-medium mb-1 text-gray-700 dark:text-gray-300",children:"Model Name"}),c.jsx("input",{type:"text",value:C.modelName,onChange:x=>W({...C,modelName:x.target.value}),placeholder:"留空使用默认值",className:"w-full px-3 py-2 border rounded-lg bg-white dark:bg-gray-700 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 outline-none"})]}),c.jsxs("div",{className:"flex justify-end gap-2 mt-6",children:[c.jsx("button",{onClick:()=>X(!1),className:"px-4 py-2 text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200",children:"取消"}),c.jsx("button",{onClick:Y,className:"px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors",children:"确认初始化"})]})]})]})}),c.jsxs("div",{className:"flex flex-col w-full max-w-2xl h-[750px] border border-gray-200 dark:border-gray-700 rounded-2xl shadow-lg bg-white dark:bg-gray-800",children:[c.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 rounded-t-2xl",children:[c.jsx("h1",{className:"text-xl font-semibold",children:"AutoGLM Chat"}),c.jsxs("div",{className:"flex gap-2",children:[O?c.jsx("span",{className:"px-3 py-1 bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 rounded-full text-sm flex items-center justify-center",children:"已初始化"}):c.jsx("button",{onClick:()=>X(!0),className:"px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors flex items-center justify-center",children:"配置 Agent"}),c.jsx("button",{onClick:ce,className:"px-4 py-2 bg-gray-200 dark:bg-gray-700 rounded-lg hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors flex items-center justify-center",children:"重置"})]})]}),Z&&c.jsx("div",{className:"mx-4 mt-4 p-3 bg-red-100 dark:bg-red-900 text-red-700 dark:text-red-200 rounded-lg",children:Z}),c.jsxs("div",{className:"flex-1 overflow-y-auto p-4 space-y-4",children:[Q.length===0&&c.jsxs("div",{className:"text-center text-gray-500 dark:text-gray-400 mt-8",children:[c.jsx("p",{className:"text-lg",children:"欢迎使用 AutoGLM Chat"}),c.jsx("p",{className:"text-sm mt-2",children:"输入任务描述,让 AI 帮你操作手机"})]}),Q.map(x=>c.jsx("div",{className:`flex ${x.role==="user"?"justify-end":"justify-start"}`,children:x.role==="agent"?c.jsxs("div",{className:"max-w-[80%] space-y-2",children:[x.thinking?.map((A,j)=>c.jsxs("div",{className:"bg-gray-100 dark:bg-gray-700 rounded-2xl px-4 py-3 border-l-4 border-blue-500",children:[c.jsxs("div",{className:"text-xs text-gray-500 dark:text-gray-400 mb-1",children:["💭 步骤 ",j+1," - 思考过程"]}),c.jsx("p",{className:"text-sm whitespace-pre-wrap",children:A}),x.actions?.[j]&&c.jsxs("details",{className:"mt-2 text-xs",children:[c.jsx("summary",{className:"cursor-pointer text-blue-500 hover:text-blue-600",children:"查看动作"}),c.jsx("pre",{className:"mt-1 p-2 bg-gray-800 text-gray-200 rounded overflow-x-auto text-xs",children:JSON.stringify(x.actions[j],null,2)})]})]},j)),x.content&&c.jsxs("div",{className:`rounded-2xl px-4 py-3 ${x.success===!1?"bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200":"bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200"}`,children:[c.jsx("p",{className:"whitespace-pre-wrap",children:x.content}),x.steps!==void 0&&c.jsxs("p",{className:"text-xs mt-2 opacity-70",children:["总步数: ",x.steps]})]}),x.isStreaming&&c.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400 animate-pulse",children:"正在执行..."})]}):c.jsx("div",{className:"max-w-[70%] rounded-2xl px-4 py-3 bg-blue-500 text-white",children:c.jsx("p",{className:"whitespace-pre-wrap",children:x.content})})},x.id)),c.jsx("div",{ref:E})]}),c.jsx("div",{className:"p-4 border-t border-gray-200 dark:border-gray-700 rounded-b-2xl",children:c.jsxs("div",{className:"flex gap-2",children:[c.jsx("input",{type:"text",value:V,onChange:x=>T(x.target.value),onKeyDown:ye,placeholder:O?"输入任务描述...":"请先初始化 Agent",disabled:!O||N,className:"flex-1 px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-xl bg-white dark:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed"}),c.jsx("button",{onClick:ae,disabled:!O||N||!V.trim(),className:"px-6 py-3 bg-blue-500 text-white rounded-xl hover:bg-blue-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center",children:"发送"})]})})]}),c.jsx("div",{className:"w-full max-w-xs h-[750px] border border-gray-200 dark:border-gray-700 rounded-2xl shadow-lg bg-gray-900 overflow-hidden",children:ee&&!q?c.jsx(Je,{className:"w-full h-full",onFallback:()=>{console.log("[Chat] Video stream failed, falling back to screenshots"),w(!0),te(!1)},fallbackTimeout:1e5}):c.jsx("div",{className:"w-full h-full flex items-center justify-center bg-gray-900",children:g&&g.success?c.jsxs("div",{className:"relative w-full h-full flex items-center justify-center",children:[c.jsx("img",{src:`data:image/png;base64,${g.image}`,alt:"Device Screenshot",className:"max-w-full max-h-full object-contain",style:{width:g.width>g.height?"100%":"auto",height:g.width>g.height?"auto":"100%"}}),g.is_sensitive&&c.jsx("div",{className:"absolute top-2 right-2 px-2 py-1 bg-yellow-500 text-white text-xs rounded",children:"敏感内容"}),c.jsx("div",{className:"absolute bottom-2 left-2 px-2 py-1 bg-blue-500 text-white text-xs rounded",children:"截图模式 (0.5s 刷新)"})]}):g?.error?c.jsxs("div",{className:"text-center text-red-500 dark:text-red-400",children:[c.jsx("p",{className:"mb-2",children:"截图失败"}),c.jsx("p",{className:"text-xs",children:g.error})]}):c.jsxs("div",{className:"text-center text-gray-500 dark:text-gray-400",children:[c.jsx("div",{className:"w-8 h-8 border-4 border-gray-300 border-t-blue-500 rounded-full animate-spin mx-auto mb-2"}),c.jsx("p",{children:"加载中..."})]})})})]})}export{Ze as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-2xl:42rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentcolor)}::file-selector-button{border-color:var(--color-gray-200,currentcolor)}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.right-2{right:calc(var(--spacing)*2)}.bottom-2{bottom:calc(var(--spacing)*2)}.left-2{left:calc(var(--spacing)*2)}.z-50{z-index:50}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-\[750px\]{height:750px}.h-full{height:100%}.h-screen{height:100vh}.max-h-full{max-height:100%}.w-4{width:calc(var(--spacing)*4)}.w-8{width:calc(var(--spacing)*8)}.w-96{width:calc(var(--spacing)*96)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[70\%\]{max-width:70%}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-blue-500{border-top-color:var(--color-blue-500)}.border-t-transparent{border-top-color:#0000}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-white{background-color:var(--color-white)}.bg-yellow-500{background-color:var(--color-yellow-500)}.object-contain{object-fit:contain}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-800{color:var(--color-green-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-gray-800:hover{color:var(--color-gray-800)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:flex-row{flex-direction:row}}@media(prefers-color-scheme:dark){.dark\:border-gray-600{border-color:var(--color-gray-600)}.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-green-900{background-color:var(--color-green-900)}.dark\:bg-red-900{background-color:var(--color-red-900)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-600{color:var(--color-gray-600)}.dark\:text-green-200{color:var(--color-green-200)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-red-400{color:var(--color-red-400)}@media(hover:hover){.dark\:hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.dark\:hover\:text-blue-400:hover{color:var(--color-blue-400)}.dark\:hover\:text-gray-200:hover{color:var(--color-gray-200)}}}}html{color-scheme:light dark}*{border-color:var(--color-gray-200)}@media(prefers-color-scheme:dark){*{border-color:var(--color-gray-800)}}body{background-color:var(--color-gray-50);color:var(--color-gray-950)}@media(prefers-color-scheme:dark){body{background-color:var(--color-gray-900);color:var(--color-gray-200)}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|