libbitsub 1.5.1 → 1.6.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 +26 -13
- package/dist/ts/renderers.d.ts +8 -1
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +76 -10
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +3 -3
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/webgl2-renderer.d.ts +56 -0
- package/dist/ts/webgl2-renderer.d.ts.map +1 -0
- package/dist/ts/webgl2-renderer.js +290 -0
- package/dist/ts/webgl2-renderer.js.map +1 -0
- package/dist/ts/webgpu-renderer.d.ts +4 -0
- package/dist/ts/webgpu-renderer.d.ts.map +1 -1
- package/dist/ts/webgpu-renderer.js +53 -34
- package/dist/ts/webgpu-renderer.js.map +1 -1
- package/package.json +1 -1
- package/pkg/README.md +26 -13
- package/pkg/libbitsub.d.ts +1 -1
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +1 -1
- package/pkg/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
|
|
|
8
8
|
|
|
9
9
|
- **PGS (Blu-ray)** subtitle parsing and rendering
|
|
10
10
|
- **VobSub (DVD)** subtitle parsing and rendering
|
|
11
|
-
- **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D
|
|
11
|
+
- **WebGPU / WebGL2 rendering** GPU-accelerated rendering with automatic fallback: WebGPU → WebGL2 → Canvas2D
|
|
12
12
|
- **High-performance** Rust-based rendering engine compiled to WebAssembly
|
|
13
13
|
- **Zero-copy** data transfer between JS and WASM where possible
|
|
14
14
|
- **Caching** for decoded bitmaps to optimize repeated rendering
|
|
@@ -319,31 +319,44 @@ setInterval(() => {
|
|
|
319
319
|
| `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
|
|
320
320
|
| `currentIndex` | number | Index of the currently displayed subtitle |
|
|
321
321
|
|
|
322
|
-
###
|
|
322
|
+
### GPU-Accelerated Rendering
|
|
323
323
|
|
|
324
|
-
libbitsub automatically
|
|
324
|
+
libbitsub automatically selects the best available GPU renderer at startup, following this fallback chain:
|
|
325
|
+
|
|
326
|
+
**WebGPU → WebGL2 → Canvas2D**
|
|
325
327
|
|
|
326
328
|
```typescript
|
|
327
|
-
import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
|
|
329
|
+
import { PgsRenderer, isWebGPUSupported, isWebGL2Supported } from 'libbitsub'
|
|
328
330
|
|
|
329
|
-
// Check
|
|
331
|
+
// Check renderer support
|
|
330
332
|
if (isWebGPUSupported()) {
|
|
331
|
-
console.log('WebGPU available
|
|
333
|
+
console.log('WebGPU available')
|
|
334
|
+
} else if (isWebGL2Supported()) {
|
|
335
|
+
console.log('WebGL2 available')
|
|
336
|
+
} else {
|
|
337
|
+
console.log('Falling back to Canvas2D')
|
|
332
338
|
}
|
|
333
339
|
|
|
334
|
-
// Configure WebGPU preference
|
|
335
340
|
const renderer = new PgsRenderer({
|
|
336
341
|
video: videoElement,
|
|
337
342
|
subUrl: '/subtitles/movie.sup',
|
|
338
|
-
|
|
339
|
-
|
|
343
|
+
onWebGPUFallback: () => console.log('WebGPU unavailable, trying WebGL2'),
|
|
344
|
+
onWebGL2Fallback: () => console.log('WebGL2 unavailable, using Canvas2D')
|
|
340
345
|
})
|
|
341
346
|
```
|
|
342
347
|
|
|
343
348
|
**Options:**
|
|
344
349
|
|
|
345
|
-
- `
|
|
346
|
-
- `
|
|
350
|
+
- `onWebGPUFallback` (function): Callback when WebGPU initialisation fails
|
|
351
|
+
- `onWebGL2Fallback` (function): Callback when WebGL2 initialisation fails
|
|
352
|
+
|
|
353
|
+
**Renderer capabilities:**
|
|
354
|
+
|
|
355
|
+
| Renderer | Premultiplied alpha | Linear sampling | Browser support |
|
|
356
|
+
| -------- | ------------------- | --------------- | --------------- |
|
|
357
|
+
| WebGPU | ✅ | ✅ | Chrome 113+, Firefox 141+, Edge 113+ |
|
|
358
|
+
| WebGL2 | ✅ | ✅ | All modern browsers |
|
|
359
|
+
| Canvas2D | — | ✅ | Universal |
|
|
347
360
|
|
|
348
361
|
## Low-Level API (Programmatic Use)
|
|
349
362
|
|
|
@@ -501,11 +514,11 @@ interface VideoSubtitleOptions {
|
|
|
501
514
|
subUrl?: string // URL to subtitle file (provide this OR subContent)
|
|
502
515
|
subContent?: ArrayBuffer // Direct subtitle content (provide this OR subUrl)
|
|
503
516
|
workerUrl?: string // Worker URL (for API compatibility)
|
|
504
|
-
preferWebGPU?: boolean // Prefer WebGPU renderer if available (default: true)
|
|
505
517
|
onLoading?: () => void // Called when subtitle loading starts
|
|
506
518
|
onLoaded?: () => void // Called when subtitle loading completes
|
|
507
519
|
onError?: (error: Error) => void // Called when subtitle loading fails
|
|
508
|
-
onWebGPUFallback?: () => void // Called when WebGPU
|
|
520
|
+
onWebGPUFallback?: () => void // Called when WebGPU init fails
|
|
521
|
+
onWebGL2Fallback?: () => void // Called when WebGL2 init fails
|
|
509
522
|
}
|
|
510
523
|
```
|
|
511
524
|
|
package/dist/ts/renderers.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { SubtitleData, SubtitleDisplaySettings, VideoSubtitleOptions, VideoVobSubOptions } from './types';
|
|
6
6
|
import { WebGPURenderer } from './webgpu-renderer';
|
|
7
|
+
import { WebGL2Renderer } from './webgl2-renderer';
|
|
7
8
|
/** Performance statistics for subtitle renderer */
|
|
8
9
|
export interface SubtitleRendererStats {
|
|
9
10
|
/** Total frames rendered since initialization */
|
|
@@ -54,8 +55,10 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
54
55
|
protected displaySettings: SubtitleDisplaySettings;
|
|
55
56
|
protected webgpuRenderer: WebGPURenderer | null;
|
|
56
57
|
protected useWebGPU: boolean;
|
|
57
|
-
protected preferWebGPU: boolean;
|
|
58
58
|
protected onWebGPUFallback?: () => void;
|
|
59
|
+
protected webgl2Renderer: WebGL2Renderer | null;
|
|
60
|
+
protected useWebGL2: boolean;
|
|
61
|
+
protected onWebGL2Fallback?: () => void;
|
|
59
62
|
protected perfStats: {
|
|
60
63
|
framesRendered: number;
|
|
61
64
|
framesDropped: number;
|
|
@@ -83,6 +86,8 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
83
86
|
protected createCanvas(): void;
|
|
84
87
|
/** Initialize WebGPU renderer. */
|
|
85
88
|
private initWebGPU;
|
|
89
|
+
/** Initialize WebGL2 renderer. */
|
|
90
|
+
private initWebGL2;
|
|
86
91
|
/** Initialize Canvas2D renderer. */
|
|
87
92
|
private initCanvas2D;
|
|
88
93
|
/** Called when video seeks. */
|
|
@@ -108,6 +113,8 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
108
113
|
protected renderFrame(time: number, index: number): void;
|
|
109
114
|
/** Render using WebGPU. */
|
|
110
115
|
private renderFrameWebGPU;
|
|
116
|
+
/** Render using WebGL2. */
|
|
117
|
+
private renderFrameWebGL2;
|
|
111
118
|
/** Render using Canvas2D. */
|
|
112
119
|
private renderFrameCanvas2D;
|
|
113
120
|
/** Dispose of all resources. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAK9G,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAA;AAQrE,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAA;IACrB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,WAAW,EAAE,OAAO,CAAA;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,uBAAe,yBAAyB;IACtC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAA;IACjC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,UAAU,CAAC,EAAE,WAAW,CAAA;IAClC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACjD,SAAS,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAO;IACrD,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAO;IAChD,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAQ;IACnC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAK;IACxC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAK;IACvC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAQ;IACnC,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAO;IACtD,SAAS,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACrD,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAO;IACzD,SAAS,CAAC,gBAAgB,EAAE,YAAY,GAAG,IAAI,CAAO;IAEtD,8CAA8C;IAC9C,SAAS,CAAC,eAAe,EAAE,uBAAuB,CAAkC;IAGpF,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAO;IACtD,SAAS,CAAC,SAAS,EAAE,OAAO,CAAQ;IACpC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/renderers.js
CHANGED
|
@@ -7,6 +7,7 @@ import { getOrCreateWorker, sendToWorker } from './worker';
|
|
|
7
7
|
import { binarySearchTimestamp, convertFrameData, createWorkerState } from './utils';
|
|
8
8
|
import { PgsParser, VobSubParserLowLevel } from './parsers';
|
|
9
9
|
import { WebGPURenderer, isWebGPUSupported } from './webgpu-renderer';
|
|
10
|
+
import { WebGL2Renderer, isWebGL2Supported } from './webgl2-renderer';
|
|
10
11
|
/** Default display settings */
|
|
11
12
|
const DEFAULT_DISPLAY_SETTINGS = {
|
|
12
13
|
scale: 1.0,
|
|
@@ -33,11 +34,14 @@ class BaseVideoSubtitleRenderer {
|
|
|
33
34
|
lastRenderedData = null;
|
|
34
35
|
/** Display settings for subtitle rendering */
|
|
35
36
|
displaySettings = { ...DEFAULT_DISPLAY_SETTINGS };
|
|
36
|
-
// WebGPU renderer (optional, falls back to
|
|
37
|
+
// WebGPU renderer (optional, falls back to WebGL2 then Canvas2D)
|
|
37
38
|
webgpuRenderer = null;
|
|
38
39
|
useWebGPU = false;
|
|
39
|
-
preferWebGPU = true;
|
|
40
40
|
onWebGPUFallback;
|
|
41
|
+
// WebGL2 renderer (optional, falls back to Canvas2D)
|
|
42
|
+
webgl2Renderer = null;
|
|
43
|
+
useWebGL2 = false;
|
|
44
|
+
onWebGL2Fallback;
|
|
41
45
|
// Performance tracking
|
|
42
46
|
perfStats = {
|
|
43
47
|
framesRendered: 0,
|
|
@@ -51,8 +55,8 @@ class BaseVideoSubtitleRenderer {
|
|
|
51
55
|
this.video = options.video;
|
|
52
56
|
this.subUrl = options.subUrl;
|
|
53
57
|
this.subContent = options.subContent;
|
|
54
|
-
this.preferWebGPU = options.preferWebGPU !== false; // Default to true
|
|
55
58
|
this.onWebGPUFallback = options.onWebGPUFallback;
|
|
59
|
+
this.onWebGL2Fallback = options.onWebGL2Fallback;
|
|
56
60
|
}
|
|
57
61
|
/** Get current display settings */
|
|
58
62
|
getDisplaySettings() {
|
|
@@ -126,10 +130,13 @@ class BaseVideoSubtitleRenderer {
|
|
|
126
130
|
}
|
|
127
131
|
parent.appendChild(this.canvas);
|
|
128
132
|
}
|
|
129
|
-
// Try WebGPU first
|
|
130
|
-
if (
|
|
133
|
+
// Try WebGPU first, then WebGL2, then Canvas2D
|
|
134
|
+
if (isWebGPUSupported()) {
|
|
131
135
|
this.initWebGPU();
|
|
132
136
|
}
|
|
137
|
+
else if (isWebGL2Supported()) {
|
|
138
|
+
this.initWebGL2();
|
|
139
|
+
}
|
|
133
140
|
else {
|
|
134
141
|
this.initCanvas2D();
|
|
135
142
|
}
|
|
@@ -158,12 +165,41 @@ class BaseVideoSubtitleRenderer {
|
|
|
158
165
|
console.log('[libbitsub] Using WebGPU renderer');
|
|
159
166
|
}
|
|
160
167
|
catch (error) {
|
|
161
|
-
console.warn('[libbitsub] WebGPU init failed, falling back to
|
|
168
|
+
console.warn('[libbitsub] WebGPU init failed, falling back to WebGL2:', error);
|
|
162
169
|
this.webgpuRenderer?.destroy();
|
|
163
170
|
this.webgpuRenderer = null;
|
|
164
171
|
this.useWebGPU = false;
|
|
165
|
-
this.initCanvas2D();
|
|
166
172
|
this.onWebGPUFallback?.();
|
|
173
|
+
// Try WebGL2 before Canvas2D
|
|
174
|
+
if (isWebGL2Supported()) {
|
|
175
|
+
this.initWebGL2();
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.initCanvas2D();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** Initialize WebGL2 renderer. */
|
|
183
|
+
async initWebGL2() {
|
|
184
|
+
try {
|
|
185
|
+
this.webgl2Renderer = new WebGL2Renderer();
|
|
186
|
+
await this.webgl2Renderer.init();
|
|
187
|
+
if (!this.canvas)
|
|
188
|
+
return;
|
|
189
|
+
const bounds = this.getVideoContentBounds();
|
|
190
|
+
const width = Math.max(1, bounds.width * window.devicePixelRatio);
|
|
191
|
+
const height = Math.max(1, bounds.height * window.devicePixelRatio);
|
|
192
|
+
await this.webgl2Renderer.setCanvas(this.canvas, width, height);
|
|
193
|
+
this.useWebGL2 = true;
|
|
194
|
+
console.log('[libbitsub] Using WebGL2 renderer');
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
console.warn('[libbitsub] WebGL2 init failed, falling back to Canvas2D:', error);
|
|
198
|
+
this.webgl2Renderer?.destroy();
|
|
199
|
+
this.webgl2Renderer = null;
|
|
200
|
+
this.useWebGL2 = false;
|
|
201
|
+
this.onWebGL2Fallback?.();
|
|
202
|
+
this.initCanvas2D();
|
|
167
203
|
}
|
|
168
204
|
}
|
|
169
205
|
/** Initialize Canvas2D renderer. */
|
|
@@ -172,6 +208,7 @@ class BaseVideoSubtitleRenderer {
|
|
|
172
208
|
return;
|
|
173
209
|
this.ctx = this.canvas.getContext('2d');
|
|
174
210
|
this.useWebGPU = false;
|
|
211
|
+
this.useWebGL2 = false;
|
|
175
212
|
console.log('[libbitsub] Using Canvas2D renderer');
|
|
176
213
|
}
|
|
177
214
|
/** Called when video seeks. */
|
|
@@ -227,10 +264,13 @@ class BaseVideoSubtitleRenderer {
|
|
|
227
264
|
this.canvas.style.top = `${bounds.y}px`;
|
|
228
265
|
this.canvas.style.width = `${bounds.width}px`;
|
|
229
266
|
this.canvas.style.height = `${bounds.height}px`;
|
|
230
|
-
// Update
|
|
267
|
+
// Update GPU renderer size if active
|
|
231
268
|
if (this.useWebGPU && this.webgpuRenderer) {
|
|
232
269
|
this.webgpuRenderer.updateSize(pixelWidth, pixelHeight);
|
|
233
270
|
}
|
|
271
|
+
else if (this.useWebGL2 && this.webgl2Renderer) {
|
|
272
|
+
this.webgl2Renderer.updateSize(pixelWidth, pixelHeight);
|
|
273
|
+
}
|
|
234
274
|
this.lastRenderedIndex = -1;
|
|
235
275
|
this.lastRenderedTime = -1;
|
|
236
276
|
}
|
|
@@ -290,10 +330,13 @@ class BaseVideoSubtitleRenderer {
|
|
|
290
330
|
return;
|
|
291
331
|
}
|
|
292
332
|
}
|
|
293
|
-
// Use
|
|
333
|
+
// Use best available renderer
|
|
294
334
|
if (this.useWebGPU && this.webgpuRenderer) {
|
|
295
335
|
this.renderFrameWebGPU(data, index);
|
|
296
336
|
}
|
|
337
|
+
else if (this.useWebGL2 && this.webgl2Renderer) {
|
|
338
|
+
this.renderFrameWebGL2(data, index);
|
|
339
|
+
}
|
|
297
340
|
else {
|
|
298
341
|
this.renderFrameCanvas2D(data, index);
|
|
299
342
|
}
|
|
@@ -320,6 +363,24 @@ class BaseVideoSubtitleRenderer {
|
|
|
320
363
|
const offsetY = (verticalOffset / 100) * this.canvas.height;
|
|
321
364
|
this.webgpuRenderer.render(data.compositionData, data.width, data.height, scaleX, scaleY, offsetY);
|
|
322
365
|
}
|
|
366
|
+
/** Render using WebGL2. */
|
|
367
|
+
renderFrameWebGL2(data, index) {
|
|
368
|
+
if (!this.webgl2Renderer || !this.canvas)
|
|
369
|
+
return;
|
|
370
|
+
if (index < 0 || !data || data.compositionData.length === 0) {
|
|
371
|
+
this.webgl2Renderer.clear();
|
|
372
|
+
this.lastRenderedData = null;
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
this.lastRenderedData = data;
|
|
376
|
+
const baseScaleX = this.canvas.width / data.width;
|
|
377
|
+
const baseScaleY = this.canvas.height / data.height;
|
|
378
|
+
const { scale, verticalOffset } = this.displaySettings;
|
|
379
|
+
const scaleX = baseScaleX * scale;
|
|
380
|
+
const scaleY = baseScaleY * scale;
|
|
381
|
+
const offsetY = (verticalOffset / 100) * this.canvas.height;
|
|
382
|
+
this.webgl2Renderer.render(data.compositionData, data.width, data.height, scaleX, scaleY, offsetY);
|
|
383
|
+
}
|
|
323
384
|
/** Render using Canvas2D. */
|
|
324
385
|
renderFrameCanvas2D(data, index) {
|
|
325
386
|
if (!this.ctx || !this.canvas)
|
|
@@ -370,11 +431,15 @@ class BaseVideoSubtitleRenderer {
|
|
|
370
431
|
}
|
|
371
432
|
this.resizeObserver?.disconnect();
|
|
372
433
|
this.resizeObserver = null;
|
|
373
|
-
// Clean up
|
|
434
|
+
// Clean up GPU renderers
|
|
374
435
|
if (this.webgpuRenderer) {
|
|
375
436
|
this.webgpuRenderer.destroy();
|
|
376
437
|
this.webgpuRenderer = null;
|
|
377
438
|
}
|
|
439
|
+
if (this.webgl2Renderer) {
|
|
440
|
+
this.webgl2Renderer.destroy();
|
|
441
|
+
this.webgl2Renderer = null;
|
|
442
|
+
}
|
|
378
443
|
this.canvas?.parentElement?.removeChild(this.canvas);
|
|
379
444
|
this.canvas = null;
|
|
380
445
|
this.ctx = null;
|
|
@@ -382,6 +447,7 @@ class BaseVideoSubtitleRenderer {
|
|
|
382
447
|
this.tempCtx = null;
|
|
383
448
|
this.lastRenderedData = null;
|
|
384
449
|
this.useWebGPU = false;
|
|
450
|
+
this.useWebGL2 = false;
|
|
385
451
|
}
|
|
386
452
|
}
|
|
387
453
|
/**
|
package/dist/ts/renderers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErE,+BAA+B;AAC/B,MAAM,wBAAwB,GAA4B;IACxD,KAAK,EAAE,GAAG;IACV,cAAc,EAAE,CAAC;CAClB,CAAA;AA8BD;;;GAGG;AACH,MAAe,yBAAyB;IAC5B,KAAK,CAAkB;IACvB,MAAM,CAAS;IACf,UAAU,CAAc;IACxB,MAAM,GAA6B,IAAI,CAAA;IACvC,GAAG,GAAoC,IAAI,CAAA;IAC3C,gBAAgB,GAAkB,IAAI,CAAA;IACtC,QAAQ,GAAY,KAAK,CAAA;IACzB,iBAAiB,GAAW,CAAC,CAAC,CAAA;IAC9B,gBAAgB,GAAW,CAAC,CAAC,CAAA;IAC7B,QAAQ,GAAY,KAAK,CAAA;IACzB,cAAc,GAA0B,IAAI,CAAA;IAC5C,UAAU,GAA6B,IAAI,CAAA;IAC3C,OAAO,GAAoC,IAAI,CAAA;IAC/C,gBAAgB,GAAwB,IAAI,CAAA;IAEtD,8CAA8C;IACpC,eAAe,GAA4B,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEpF,oEAAoE;IAC1D,cAAc,GAA0B,IAAI,CAAA;IAC5C,SAAS,GAAY,KAAK,CAAA;IAC1B,YAAY,GAAY,IAAI,CAAA;IAC5B,gBAAgB,CAAa;IAEvC,uBAAuB;IACb,SAAS,GAAG;QACpB,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,EAAc;QAC3B,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,EAAc;QAC7B,aAAa,EAAE,CAAC;KACjB,CAAA;IAED,YAAY,OAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAA,CAAC,kBAAkB;QACrE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAClD,CAAC;IAED,mCAAmC;IACnC,kBAAkB;QAChB,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAKD,6CAA6C;IACnC,YAAY;QAIpB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,iDAAiD;QACjD,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QAEzF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAA;QAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9G,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3E,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3E,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;YAC7C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;YAC3C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG;YACrE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM;YAC9C,YAAY,EAAE,IAAI,CAAC,iBAAiB;SACrC,CAAA;IACH,CAAC;IAED,+CAA+C;IAC/C,kBAAkB,CAAC,QAA0C;QAC3D,MAAM,OAAO,GACX,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,eAAe,CAAC,cAAc,CAAA;QAElH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;QAC5F,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,oBAAoB;QAClB,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,4BAA4B;IAClB,SAAS;QACjB,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,+BAA+B;IACrB,KAAK,CAAC,IAAI;QAClB,MAAM,QAAQ,EAAE,CAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAED,2DAA2D;IACjD,YAAY;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/B,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,MAAM;YACrB,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAA;YACpC,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,CAAC,YAAY,IAAI,iBAAiB,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEvB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACvE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;YAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;YAEhC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAM;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAEnE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAA;YAChF,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAA;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,oCAAoC;IAC5B,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;IACpD,CAAC;IAED,+BAA+B;IACrB,MAAM,KAAU,CAAC;IAE3B,0FAA0F;IAChF,qBAAqB;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAA;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAA;QAEzD,0BAA0B;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QAC9C,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;QAE5C,IAAI,YAAoB,CAAA;QACxB,IAAI,aAAqB,CAAA;QACzB,IAAI,QAAgB,CAAA;QACpB,IAAI,QAAgB,CAAA;QAEpB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC;YACjD,gDAAgD;YAChD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;YAC3B,QAAQ,GAAG,CAAC,CAAA;YACZ,QAAQ,GAAG,CAAC,CAAA;QACd,CAAC;aAAM,IAAI,aAAa,GAAG,WAAW,EAAE,CAAC;YACvC,mEAAmE;YACnE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;YAC3B,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;YACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC1C,QAAQ,GAAG,CAAC,CAAA;QACd,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;YACxC,QAAQ,GAAG,CAAC,CAAA;YACZ,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9C,CAAC;QAED,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IACjF,CAAC;IAED,sDAAsD;IAC5C,gBAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;QAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAA;QAEjF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAA;QAEhC,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAA;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAA;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAA;QAE/C,wCAAwC;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC5B,CAAC;IAUD,6BAA6B;IACnB,eAAe;QACvB,4CAA4C;QAC5C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAEzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAA;gBAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;gBAEvD,kCAAkC;gBAClC,IAAI,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;oBACnC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;oBAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;oBAEjC,oBAAoB;oBACpB,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAA;oBACtC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,CAAA;oBAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBAC3C,gDAAgD;oBAChD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;oBACpC,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAA;oBAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAE1C,oFAAoF;oBACpF,MAAM,WAAW,GAAG,KAAK,CAAA;oBACzB,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;wBAC7B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAA;oBAChC,CAAC;oBAED,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAA;oBACrC,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAA;gBACrC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QACvD,CAAC,CAAA;QAED,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC;IAED,6CAA6C;IACnC,WAAW,CAAC,IAAY,EAAE,KAAa;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAExB,8BAA8B;QAC9B,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAE/D,8DAA8D;QAC9D,gEAAgE;QAChE,sFAAsF;QACtF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACvE,iEAAiE;YACjE,mEAAmE;YACnE,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,0DAA0D;gBAC1D,OAAM;YACR,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,2BAA2B;IACnB,iBAAiB,CAAC,IAA8B,EAAE,KAAa;QACrE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAEhD,sCAAsC;QACtC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAE5B,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEnD,yBAAyB;QACzB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAE3D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACpG,CAAC;IAED,6BAA6B;IACrB,mBAAmB,CAAC,IAA8B,EAAE,KAAa;QACvE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAErC,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAE/D,2CAA2C;QAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAE5B,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEnD,yBAAyB;QACzB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAE3D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,SAAQ;YAE/C,+BAA+B;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;gBAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;YAChD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAE/C,mDAAmD;YACnD,yCAAyC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAA;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;YACjC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAC/E,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC,CAAA;YAEvF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAA;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAE1B,2BAA2B;QAC3B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,yBAAyB;IAChD,SAAS,GAAqB,IAAI,CAAA;IAClC,KAAK,GAAG,iBAAiB,EAAE,CAAA;IAC3B,SAAS,CAAa;IACtB,QAAQ,CAAa;IACrB,OAAO,CAAyB;IAExC,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;YAElB,IAAI,WAAwB,CAAA;YAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACzC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBACjF,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;YACxD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;YAExC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,iBAAiB,EAAE,CAAA;oBACzB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBAExF,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC7B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;wBACnE,IAAI,UAAU,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;4BACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;wBAC/C,CAAC;wBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wBACpB,OAAO,CAAC,GAAG,CACT,oCAAoC,YAAY,CAAC,KAAK,sBAAsB,YAAY,CAAC,UAAU,QAAQ,CAC5G,CAAA;wBACD,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACjB,OAAM,CAAC,6CAA6C;oBACtD,CAAC;yBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,WAAW,CAAC,CAAA;oBACpF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;gBAC9B,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAgB;QAC7C,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEhC,6CAA6C;QAC7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,6DAA6D;YAC7D,MAAM,YAAY,GAChB,OAAO,mBAAmB,KAAK,WAAW;gBACxC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAE3C,YAAY,CAAC,GAAG,EAAE;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,SAAU,CAAC,aAAa,EAAE,CAAA;gBACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,OAAO,CAAC,GAAG,CAAC,yCAAyC,KAAK,sBAAsB,IAAI,CAAC,UAAU,QAAQ,CAAC,CAAA;gBACxG,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAC1C,WAAW;QACjB,iDAAiD;QACjD,MAAM,eAAe,GAAI,UAAyE,CAAC,SAAS,CAAA;QAC5G,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnE,OAAO,eAAe,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;QACD,yBAAyB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAES,gBAAgB,CAAC,IAAY;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAA;YACtD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxF,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CACzF,CAAA;gBAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;gBACnD,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACxC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvC,+DAA+D;oBAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC5D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,yDAAyD;YACzD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IAED,kDAAkD;IAClD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,OAAO;YACL,GAAG,SAAS;YACZ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YAC3D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI;YAC9C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;SAC5F,CAAA;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,yBAAyB;IACnD,YAAY,GAAgC,IAAI,CAAA;IAChD,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,KAAK,GAAG,iBAAiB,EAAE,CAAA;IAC3B,SAAS,CAAa;IACtB,QAAQ,CAAa;IACrB,OAAO,CAAyB;IAExC,2BAA2B;IACnB,WAAW,GAAW,CAAC,CAAC,CAAA;IACxB,eAAe,GAAW,CAAC,CAAC,CAAA;IAC5B,kBAAkB,GAA2B,IAAI,CAAA;IAEzD,YAAY,OAA2B;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACzG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;YAElB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YAEzC,IAAI,cAAuC,CAAA;YAC3C,IAAI,OAA2B,CAAA;YAE/B,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC,UAAU,CAAA;YAClC,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;YAC3B,CAAC;YAED,sBAAsB;YACtB,MAAM,QAAQ,GAAoB,EAAE,CAAA;YAEpC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;gBACnE,QAAQ,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;gBACxB,CAAC,CAAC;qBACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,cAAc,GAAG,CAAC,CAAA;gBACpB,CAAC,CAAC,CACL,CAAA;YACH,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;gBACnE,QAAQ,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;gBACjB,CAAC,CAAC;qBACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,OAAO,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CACL,CAAA;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;YAED,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAA;YAE9C,OAAO,CAAC,GAAG,CACT,yCAAyC,cAAc,CAAC,UAAU,gBAAgB,OAAO,CAAC,MAAM,QAAQ,CACzG,CAAA;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,iBAAiB,EAAE,CAAA;oBACzB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;wBACtC,IAAI,EAAE,YAAY;wBAClB,UAAU,EAAE,OAAO;wBACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjC,CAAC,CAAA;oBAEF,IAAI,YAAY,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACzC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC7B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAA;wBACtE,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;wBAC/C,CAAC;wBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wBACpB,OAAO,CAAC,GAAG,CAAC,uCAAuC,YAAY,CAAC,KAAK,mBAAmB,CAAC,CAAA;wBACzF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACjB,OAAM,CAAC,6CAA6C;oBACtD,CAAC;yBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,WAAW,CAAC,CAAA;oBACpF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;gBAC9B,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAA;YACxD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,OAAmB;QACjE,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,EAAE,CAAA;QAE9C,6CAA6C;QAC7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,YAAY,GAChB,OAAO,mBAAmB,KAAK,WAAW;gBACxC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAE3C,YAAY,CAAC,GAAG,EAAE;gBAChB,IAAI,CAAC,YAAa,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACjD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAa,CAAC,aAAa,EAAE,CAAA;gBAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,CAAC,YAAa,CAAC,KAAK,mBAAmB,CAAC,CAAA;gBACpG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAC1C,WAAW;QACjB,MAAM,eAAe,GAAI,UAAyE,CAAC,SAAS,CAAA;QAC5G,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnE,OAAO,eAAe,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAES,gBAAgB,CAAC,IAAY;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;YAE1B,wDAAwD;YACxD,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe,CAAA;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;YAExE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAC5F,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAA;wBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;wBACjC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAA;wBAC3B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAA;wBAE7B,+DAA+D;wBAC/D,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA,CAAC,mDAAmD;wBACjF,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;oBAC9B,OAAO,IAAI,CAAC,WAAW,CAAA;gBACzB,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,+CAA+C;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAA;YACtD,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3F,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5F,CAAA;gBAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;gBACnD,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACxC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvC,+DAA+D;oBAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC5D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,yDAAyD;YACzD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,oCAAoC;QACpC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAA;IACjC,CAAC;IAED,qDAAqD;IACrD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,OAAO;YACL,GAAG,SAAS;YACZ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YAC3D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI;YAC9C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;SAC/F,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,gBAAgB,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC5C,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,mDAAmD;IACnD,kBAAkB,CAAC,SAAiB;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAChD,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,+DAA+D;IAC/D,cAAc,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;QACxC,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,oCAAoC;IACpC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,CAAA;IACjD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErE,+BAA+B;AAC/B,MAAM,wBAAwB,GAA4B;IACxD,KAAK,EAAE,GAAG;IACV,cAAc,EAAE,CAAC;CAClB,CAAA;AA8BD;;;GAGG;AACH,MAAe,yBAAyB;IAC5B,KAAK,CAAkB;IACvB,MAAM,CAAS;IACf,UAAU,CAAc;IACxB,MAAM,GAA6B,IAAI,CAAA;IACvC,GAAG,GAAoC,IAAI,CAAA;IAC3C,gBAAgB,GAAkB,IAAI,CAAA;IACtC,QAAQ,GAAY,KAAK,CAAA;IACzB,iBAAiB,GAAW,CAAC,CAAC,CAAA;IAC9B,gBAAgB,GAAW,CAAC,CAAC,CAAA;IAC7B,QAAQ,GAAY,KAAK,CAAA;IACzB,cAAc,GAA0B,IAAI,CAAA;IAC5C,UAAU,GAA6B,IAAI,CAAA;IAC3C,OAAO,GAAoC,IAAI,CAAA;IAC/C,gBAAgB,GAAwB,IAAI,CAAA;IAEtD,8CAA8C;IACpC,eAAe,GAA4B,EAAE,GAAG,wBAAwB,EAAE,CAAA;IAEpF,iEAAiE;IACvD,cAAc,GAA0B,IAAI,CAAA;IAC5C,SAAS,GAAY,KAAK,CAAA;IAC1B,gBAAgB,CAAa;IAEvC,qDAAqD;IAC3C,cAAc,GAA0B,IAAI,CAAA;IAC5C,SAAS,GAAY,KAAK,CAAA;IAC1B,gBAAgB,CAAa;IAEvC,uBAAuB;IACb,SAAS,GAAG;QACpB,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,EAAc;QAC3B,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,EAAc;QAC7B,aAAa,EAAE,CAAC;KACjB,CAAA;IAED,YAAY,OAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAClD,CAAC;IAED,mCAAmC;IACnC,kBAAkB;QAChB,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAKD,6CAA6C;IACnC,YAAY;QAIpB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,iDAAiD;QACjD,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QAEzF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAA;QAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9G,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3E,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3E,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc;YAC7C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;YAC3C,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;YACpD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG;YACrE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM;YAC9C,YAAY,EAAE,IAAI,CAAC,iBAAiB;SACrC,CAAA;IACH,CAAC;IAED,+CAA+C;IAC/C,kBAAkB,CAAC,QAA0C;QAC3D,MAAM,OAAO,GACX,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,eAAe,CAAC,cAAc,CAAA;QAElH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;QAC5F,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,oBAAoB;QAClB,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,wBAAwB,EAAE,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC5B,CAAC;IAED,4BAA4B;IAClB,SAAS;QACjB,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,+BAA+B;IACrB,KAAK,CAAC,IAAI;QAClB,MAAM,QAAQ,EAAE,CAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAED,2DAA2D;IACjD,YAAY;QACpB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/B,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,MAAM;YACrB,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAA;YACpC,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC;QAED,+CAA+C;QAC/C,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;aAAM,IAAI,iBAAiB,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAEvB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACvE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;YAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;YAEhC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAM;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAEnE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAA;YAC9E,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAA;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAA;YACzB,6BAA6B;YAC7B,IAAI,iBAAiB,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,EAAE,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,EAAE,CAAA;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;YAC1C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;YAEhC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAM;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAEnE,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;YACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAA;YAChF,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAA;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAA;YACzB,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;IAED,oCAAoC;IAC5B,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;IACpD,CAAC;IAED,+BAA+B;IACrB,MAAM,KAAU,CAAC;IAE3B,0FAA0F;IAChF,qBAAqB;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAA;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAA;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAA;QAEzD,0BAA0B;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QAC9C,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;QAE5C,IAAI,YAAoB,CAAA;QACxB,IAAI,aAAqB,CAAA;QACzB,IAAI,QAAgB,CAAA;QACpB,IAAI,QAAgB,CAAA;QAEpB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC;YACjD,gDAAgD;YAChD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;YAC3B,QAAQ,GAAG,CAAC,CAAA;YACZ,QAAQ,GAAG,CAAC,CAAA;QACd,CAAC;aAAM,IAAI,aAAa,GAAG,WAAW,EAAE,CAAC;YACvC,mEAAmE;YACnE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;YAC3B,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAA;YACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC1C,QAAQ,GAAG,CAAC,CAAA;QACd,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;YACzB,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAA;YACxC,QAAQ,GAAG,CAAC,CAAA;YACZ,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAC9C,CAAC;QAED,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;IACjF,CAAC;IAED,sDAAsD;IAC5C,gBAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAA;QAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAA;QAEjF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAEjE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAA;QAEhC,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAA;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAA;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAA;QAE/C,qCAAqC;QACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;IAC5B,CAAC;IAUD,6BAA6B;IACnB,eAAe;QACvB,4CAA4C;QAC5C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAEzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAA;gBAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;gBAEvD,kCAAkC;gBAClC,IAAI,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;oBACnC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;oBAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;oBAEjC,oBAAoB;oBACpB,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAA;oBACtC,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,CAAA;oBAC1C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBAC3C,gDAAgD;oBAChD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBAC3C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;oBACpC,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAA;oBAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAE1C,oFAAoF;oBACpF,MAAM,WAAW,GAAG,KAAK,CAAA;oBACzB,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;wBAC7B,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAA;oBAChC,CAAC;oBAED,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAA;oBACrC,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAA;gBACrC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QACvD,CAAC,CAAA;QAED,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACvD,CAAC;IAED,6CAA6C;IACnC,WAAW,CAAC,IAAY,EAAE,KAAa;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAExB,8BAA8B;QAC9B,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAE/D,8DAA8D;QAC9D,gEAAgE;QAChE,sFAAsF;QACtF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACvE,iEAAiE;YACjE,mEAAmE;YACnE,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,0DAA0D;gBAC1D,OAAM;YACR,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,2BAA2B;IACnB,iBAAiB,CAAC,IAA8B,EAAE,KAAa;QACrE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAEhD,sCAAsC;QACtC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAE5B,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEnD,yBAAyB;QACzB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAE3D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACpG,CAAC;IAED,2BAA2B;IACnB,iBAAiB,CAAC,IAA8B,EAAE,KAAa;QACrE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAEhD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEnD,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAE3D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACpG,CAAC;IAED,6BAA6B;IACrB,mBAAmB,CAAC,IAA8B,EAAE,KAAa;QACvE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAErC,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAE/D,2CAA2C;QAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAE5B,+BAA+B;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEnD,yBAAyB;QACzB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;QAE3D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,SAAQ;YAE/C,+BAA+B;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACvG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;gBAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;YAChD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAE/C,mDAAmD;YACnD,yCAAyC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAA;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;YACjC,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAC/E,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC,CAAA;YAEvF,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;QACtF,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACnC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAA;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAE1B,yBAAyB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,yBAAyB;IAChD,SAAS,GAAqB,IAAI,CAAA;IAClC,KAAK,GAAG,iBAAiB,EAAE,CAAA;IAC3B,SAAS,CAAa;IACtB,QAAQ,CAAa;IACrB,OAAO,CAAyB;IAExC,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;YAElB,IAAI,WAAwB,CAAA;YAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;YAC/B,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACzC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;gBACjF,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;YACxD,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;YAExC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,iBAAiB,EAAE,CAAA;oBACzB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBAExF,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACtC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC7B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAA;wBACnE,IAAI,UAAU,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;4BACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;wBAC/C,CAAC;wBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wBACpB,OAAO,CAAC,GAAG,CACT,oCAAoC,YAAY,CAAC,KAAK,sBAAsB,YAAY,CAAC,UAAU,QAAQ,CAC5G,CAAA;wBACD,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACjB,OAAM,CAAC,6CAA6C;oBACtD,CAAC;yBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,WAAW,CAAC,CAAA;oBACpF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;gBAC9B,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAgB;QAC7C,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAA;QAEhC,6CAA6C;QAC7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,6DAA6D;YAC7D,MAAM,YAAY,GAChB,OAAO,mBAAmB,KAAK,WAAW;gBACxC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAE3C,YAAY,CAAC,GAAG,EAAE;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,SAAU,CAAC,aAAa,EAAE,CAAA;gBACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,OAAO,CAAC,GAAG,CAAC,yCAAyC,KAAK,sBAAsB,IAAI,CAAC,UAAU,QAAQ,CAAC,CAAA;gBACxG,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAC1C,WAAW;QACjB,iDAAiD;QACjD,MAAM,eAAe,GAAI,UAAyE,CAAC,SAAS,CAAA;QAC5G,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnE,OAAO,eAAe,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;QACD,yBAAyB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAES,gBAAgB,CAAC,IAAY;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAA;YACtD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxF,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CACzF,CAAA;gBAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;gBACnD,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACxC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvC,+DAA+D;oBAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC5D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,yDAAyD;YACzD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IAED,kDAAkD;IAClD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,OAAO;YACL,GAAG,SAAS;YACZ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YAC3D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI;YAC9C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;SAC5F,CAAA;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAA;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,yBAAyB;IACnD,YAAY,GAAgC,IAAI,CAAA;IAChD,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,KAAK,GAAG,iBAAiB,EAAE,CAAA;IAC3B,SAAS,CAAa;IACtB,QAAQ,CAAa;IACrB,OAAO,CAAyB;IAExC,2BAA2B;IACnB,WAAW,GAAW,CAAC,CAAC,CAAA;IACxB,eAAe,GAAW,CAAC,CAAC,CAAA;IAC5B,kBAAkB,GAA2B,IAAI,CAAA;IAEzD,YAAY,OAA2B;QACrC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACzG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAA;IAClB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;YAElB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YAEzC,IAAI,cAAuC,CAAA;YAC3C,IAAI,OAA2B,CAAA;YAE/B,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC,UAAU,CAAA;YAClC,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;YAC3B,CAAC;YAED,sBAAsB;YACtB,MAAM,QAAQ,GAAoB,EAAE,CAAA;YAEpC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;gBACnE,QAAQ,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;gBACxB,CAAC,CAAC;qBACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,cAAc,GAAG,CAAC,CAAA;gBACpB,CAAC,CAAC,CACL,CAAA;YACH,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;gBACnE,QAAQ,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;qBACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,IAAI,CAAC,CAAC,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBACpE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;gBACjB,CAAC,CAAC;qBACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBACV,OAAO,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CACL,CAAA;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;YAED,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC/C,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC,CAAA;YAE9C,OAAO,CAAC,GAAG,CACT,yCAAyC,cAAc,CAAC,UAAU,gBAAgB,OAAO,CAAC,MAAM,QAAQ,CACzG,CAAA;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,iBAAiB,EAAE,CAAA;oBACzB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC;wBACtC,IAAI,EAAE,YAAY;wBAClB,UAAU,EAAE,OAAO;wBACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;qBACjC,CAAC,CAAA;oBAEF,IAAI,YAAY,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACzC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;wBAC7B,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAA;wBACtE,IAAI,UAAU,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;4BAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;wBAC/C,CAAC;wBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;wBACpB,OAAO,CAAC,GAAG,CAAC,uCAAuC,YAAY,CAAC,KAAK,mBAAmB,CAAC,CAAA;wBACzF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;wBACjB,OAAM,CAAC,6CAA6C;oBACtD,CAAC;yBAAM,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,EAAE,WAAW,CAAC,CAAA;oBACpF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;gBAC9B,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAA;YACxD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,OAAmB;QACjE,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,EAAE,CAAA;QAE9C,6CAA6C;QAC7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,YAAY,GAChB,OAAO,mBAAmB,KAAK,WAAW;gBACxC,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxE,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YAE3C,YAAY,CAAC,GAAG,EAAE;gBAChB,IAAI,CAAC,YAAa,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;gBACjD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAa,CAAC,aAAa,EAAE,CAAA;gBAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,CAAC,YAAa,CAAC,KAAK,mBAAmB,CAAC,CAAA;gBACpG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAC1C,WAAW;QACjB,MAAM,eAAe,GAAI,UAAyE,CAAC,SAAS,CAAA;QAC5G,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACnE,OAAO,eAAe,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAES,YAAY,CAAC,IAAY;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1D,CAAC;IAES,gBAAgB,CAAC,IAAY;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;YAE1B,wDAAwD;YACxD,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe,CAAA;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;YAExE,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAC5F,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAA;wBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;wBACjC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAA;wBAC3B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAA;wBAE7B,+DAA+D;wBAC/D,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA,CAAC,mDAAmD;wBACjF,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;oBAC9B,OAAO,IAAI,CAAC,WAAW,CAAA;gBACzB,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5D,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,+CAA+C;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAA;YACtD,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3F,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5F,CAAA;gBAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;gBACnD,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACxC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvC,+DAA+D;oBAC/D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC5D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;oBAC7B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,yDAAyD;YACzD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;IAES,eAAe,CAAC,KAAa;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,oCAAoC;QACpC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAA;IACjC,CAAC;IAED,qDAAqD;IACrD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,OAAO;YACL,GAAG,SAAS;YACZ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YAC3D,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI;YAC9C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;SAC/F,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,gBAAgB,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC5C,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,mDAAmD;IACnD,kBAAkB,CAAC,SAAiB;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;QAChD,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,+DAA+D;IAC/D,cAAc,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;QACxC,mDAAmD;QACnD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,oCAAoC;IACpC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,CAAA;IACjD,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;QACf,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;CACF"}
|
package/dist/ts/types.d.ts
CHANGED
|
@@ -31,16 +31,16 @@ export interface VideoSubtitleOptions {
|
|
|
31
31
|
subContent?: ArrayBuffer;
|
|
32
32
|
/** Worker URL (kept for API compatibility, not used in WASM version) */
|
|
33
33
|
workerUrl?: string;
|
|
34
|
-
/** Prefer WebGPU renderer if available (default: true) */
|
|
35
|
-
preferWebGPU?: boolean;
|
|
36
34
|
/** Callback when subtitle loading starts */
|
|
37
35
|
onLoading?: () => void;
|
|
38
36
|
/** Callback when subtitle loading completes */
|
|
39
37
|
onLoaded?: () => void;
|
|
40
38
|
/** Callback when subtitle loading fails */
|
|
41
39
|
onError?: (error: Error) => void;
|
|
42
|
-
/** Callback when WebGPU is unavailable and falling back to Canvas2D */
|
|
40
|
+
/** Callback when WebGPU is unavailable and falling back to WebGL2 or Canvas2D */
|
|
43
41
|
onWebGPUFallback?: () => void;
|
|
42
|
+
/** Callback when WebGL2 is unavailable and falling back to Canvas2D */
|
|
43
|
+
onWebGL2Fallback?: () => void;
|
|
44
44
|
}
|
|
45
45
|
/** Options for VobSub video subtitle renderer. */
|
|
46
46
|
export interface VideoVobSubOptions extends VideoSubtitleOptions {
|
package/dist/ts/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,IAAI,oBAAoB,EACxC,SAAS,IAAI,aAAa,EAC1B,YAAY,IAAI,gBAAgB,EAChC,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAM/G,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,eAAe,EAAE,uBAAuB,EAAE,CAAA;CAC3C;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,SAAS,EAAE,SAAS,CAAA;IACpB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;CACV;AAMD,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,KAAK,EAAE,gBAAgB,CAAA;IACvB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,IAAI,oBAAoB,EACxC,SAAS,IAAI,aAAa,EAC1B,YAAY,IAAI,gBAAgB,EAChC,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAM/G,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,eAAe,EAAE,uBAAuB,EAAE,CAAA;CAC3C;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,SAAS,EAAE,SAAS,CAAA;IACpB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;CACV;AAMD,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,KAAK,EAAE,gBAAgB,CAAA;IACvB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B;AAED,kDAAkD;AAClD,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,gGAAgG;IAChG,cAAc,EAAE,MAAM,CAAA;CACvB;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,eAAe,EAAE,CAAA;CAChC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,0BAA0B,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtC,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,YAAY,CAAA;IACxB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,CAAA;IAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1D"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SubtitleCompositionData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Check if WebGL2 is supported in the current browser.
|
|
4
|
+
* Result is cached after the first call.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isWebGL2Supported(): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* WebGL2-based subtitle renderer.
|
|
9
|
+
* Uploads RGBA bitmap data to GPU textures and renders textured quads.
|
|
10
|
+
* Uses premultiplied alpha blending to match WebGPU renderer output.
|
|
11
|
+
*/
|
|
12
|
+
export declare class WebGL2Renderer {
|
|
13
|
+
private gl;
|
|
14
|
+
private program;
|
|
15
|
+
private vao;
|
|
16
|
+
private uResolution;
|
|
17
|
+
private uDestRect;
|
|
18
|
+
private uTexture;
|
|
19
|
+
private textures;
|
|
20
|
+
private _canvas;
|
|
21
|
+
private _initialized;
|
|
22
|
+
private _width;
|
|
23
|
+
private _height;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the WebGL2 renderer.
|
|
26
|
+
* Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
|
|
27
|
+
*/
|
|
28
|
+
init(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Configure the canvas for WebGL2 rendering.
|
|
31
|
+
*/
|
|
32
|
+
setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
|
|
33
|
+
private _compileShader;
|
|
34
|
+
/**
|
|
35
|
+
* Update canvas dimensions.
|
|
36
|
+
*/
|
|
37
|
+
updateSize(width: number, height: number): void;
|
|
38
|
+
private _ensureTexture;
|
|
39
|
+
/**
|
|
40
|
+
* Render subtitle compositions to the canvas.
|
|
41
|
+
*/
|
|
42
|
+
render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number, offsetY: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Clear the canvas.
|
|
45
|
+
*/
|
|
46
|
+
clear(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Check if renderer is initialized.
|
|
49
|
+
*/
|
|
50
|
+
get initialized(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Destroy all GPU resources.
|
|
53
|
+
*/
|
|
54
|
+
destroy(): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=webgl2-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl2-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AA0DtD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAU3C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAsC;IAChD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,GAAG,CAAsC;IAGjD,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,QAAQ,CAAoC;IAGpD,OAAO,CAAC,QAAQ,CAAkC;IAElD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IAEnB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmExF,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAa/C,OAAO,CAAC,cAAc;IA6BtB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IA6DP;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAiBhB"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
// GLSL ES 3.00 Vertex Shader
|
|
2
|
+
// Uses gl_VertexID to generate unit-quad positions without a vertex buffer
|
|
3
|
+
const VERTEX_SHADER_SRC = /* glsl */ `#version 300 es
|
|
4
|
+
|
|
5
|
+
uniform vec2 u_resolution;
|
|
6
|
+
uniform vec4 u_destRect; // x, y, w, h in pixels
|
|
7
|
+
|
|
8
|
+
out vec2 v_texCoord;
|
|
9
|
+
|
|
10
|
+
void main() {
|
|
11
|
+
// Generate unit-square positions for two-triangle quad (CCW)
|
|
12
|
+
vec2 unitPos;
|
|
13
|
+
if (gl_VertexID == 0) unitPos = vec2(0.0, 0.0);
|
|
14
|
+
else if (gl_VertexID == 1) unitPos = vec2(1.0, 0.0);
|
|
15
|
+
else if (gl_VertexID == 2) unitPos = vec2(0.0, 1.0);
|
|
16
|
+
else if (gl_VertexID == 3) unitPos = vec2(1.0, 0.0);
|
|
17
|
+
else if (gl_VertexID == 4) unitPos = vec2(1.0, 1.0);
|
|
18
|
+
else unitPos = vec2(0.0, 1.0);
|
|
19
|
+
|
|
20
|
+
v_texCoord = unitPos;
|
|
21
|
+
|
|
22
|
+
// Convert pixel position to clip space
|
|
23
|
+
vec2 pixelPos = u_destRect.xy + unitPos * u_destRect.zw;
|
|
24
|
+
vec2 clipPos = (pixelPos / u_resolution) * 2.0 - 1.0;
|
|
25
|
+
clipPos.y = -clipPos.y; // Flip Y for canvas coordinates
|
|
26
|
+
|
|
27
|
+
gl_Position = vec4(clipPos, 0.0, 1.0);
|
|
28
|
+
}
|
|
29
|
+
`;
|
|
30
|
+
// GLSL ES 3.00 Fragment Shader - sample RGBA texture directly
|
|
31
|
+
const FRAGMENT_SHADER_SRC = /* glsl */ `#version 300 es
|
|
32
|
+
precision mediump float;
|
|
33
|
+
|
|
34
|
+
uniform sampler2D u_texture;
|
|
35
|
+
|
|
36
|
+
in vec2 v_texCoord;
|
|
37
|
+
out vec4 outColor;
|
|
38
|
+
|
|
39
|
+
void main() {
|
|
40
|
+
// Texture is pre-multiplied alpha; output as-is for premultiplied blending
|
|
41
|
+
outColor = texture(u_texture, v_texCoord);
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
/** Cached result of the WebGL2 support check (null = not yet tested). */
|
|
45
|
+
let _webgl2Supported = null;
|
|
46
|
+
/**
|
|
47
|
+
* Check if WebGL2 is supported in the current browser.
|
|
48
|
+
* Result is cached after the first call.
|
|
49
|
+
*/
|
|
50
|
+
export function isWebGL2Supported() {
|
|
51
|
+
if (_webgl2Supported !== null)
|
|
52
|
+
return _webgl2Supported;
|
|
53
|
+
if (typeof document === 'undefined')
|
|
54
|
+
return (_webgl2Supported = false);
|
|
55
|
+
try {
|
|
56
|
+
const canvas = document.createElement('canvas');
|
|
57
|
+
_webgl2Supported = !!canvas.getContext('webgl2');
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
_webgl2Supported = false;
|
|
61
|
+
}
|
|
62
|
+
return _webgl2Supported;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* WebGL2-based subtitle renderer.
|
|
66
|
+
* Uploads RGBA bitmap data to GPU textures and renders textured quads.
|
|
67
|
+
* Uses premultiplied alpha blending to match WebGPU renderer output.
|
|
68
|
+
*/
|
|
69
|
+
export class WebGL2Renderer {
|
|
70
|
+
gl = null;
|
|
71
|
+
program = null;
|
|
72
|
+
vao = null;
|
|
73
|
+
// Cached uniform locations
|
|
74
|
+
uResolution = null;
|
|
75
|
+
uDestRect = null;
|
|
76
|
+
uTexture = null;
|
|
77
|
+
// Texture pool for compositions (indexed by slot)
|
|
78
|
+
textures = [];
|
|
79
|
+
_canvas = null;
|
|
80
|
+
_initialized = false;
|
|
81
|
+
_width = 0;
|
|
82
|
+
_height = 0;
|
|
83
|
+
/**
|
|
84
|
+
* Initialize the WebGL2 renderer.
|
|
85
|
+
* Kept async for API parity with WebGPURenderer, but WebGL2 init is synchronous.
|
|
86
|
+
*/
|
|
87
|
+
async init() {
|
|
88
|
+
// No-op – actual init happens in setCanvas once we have a canvas element.
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Configure the canvas for WebGL2 rendering.
|
|
92
|
+
*/
|
|
93
|
+
async setCanvas(canvas, width, height) {
|
|
94
|
+
this._canvas = canvas;
|
|
95
|
+
canvas.width = width;
|
|
96
|
+
canvas.height = height;
|
|
97
|
+
this._width = width;
|
|
98
|
+
this._height = height;
|
|
99
|
+
const gl = canvas.getContext('webgl2', {
|
|
100
|
+
alpha: true,
|
|
101
|
+
premultipliedAlpha: true,
|
|
102
|
+
antialias: false,
|
|
103
|
+
depth: false,
|
|
104
|
+
stencil: false
|
|
105
|
+
});
|
|
106
|
+
if (!gl) {
|
|
107
|
+
throw new Error('Could not get WebGL2 context');
|
|
108
|
+
}
|
|
109
|
+
this.gl = gl;
|
|
110
|
+
// Compile and link shader program
|
|
111
|
+
const vertShader = this._compileShader(gl.VERTEX_SHADER, VERTEX_SHADER_SRC);
|
|
112
|
+
const fragShader = this._compileShader(gl.FRAGMENT_SHADER, FRAGMENT_SHADER_SRC);
|
|
113
|
+
const program = gl.createProgram();
|
|
114
|
+
if (!program)
|
|
115
|
+
throw new Error('Failed to create WebGL2 program');
|
|
116
|
+
gl.attachShader(program, vertShader);
|
|
117
|
+
gl.attachShader(program, fragShader);
|
|
118
|
+
gl.linkProgram(program);
|
|
119
|
+
gl.deleteShader(vertShader);
|
|
120
|
+
gl.deleteShader(fragShader);
|
|
121
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
122
|
+
const log = gl.getProgramInfoLog(program);
|
|
123
|
+
gl.deleteProgram(program);
|
|
124
|
+
throw new Error('WebGL2 program link failed: ' + log);
|
|
125
|
+
}
|
|
126
|
+
this.program = program;
|
|
127
|
+
gl.useProgram(program);
|
|
128
|
+
// Cache uniform locations
|
|
129
|
+
this.uResolution = gl.getUniformLocation(program, 'u_resolution');
|
|
130
|
+
this.uDestRect = gl.getUniformLocation(program, 'u_destRect');
|
|
131
|
+
this.uTexture = gl.getUniformLocation(program, 'u_texture');
|
|
132
|
+
// VAO (required in WebGL2 even without vertex attributes)
|
|
133
|
+
this.vao = gl.createVertexArray();
|
|
134
|
+
gl.bindVertexArray(this.vao);
|
|
135
|
+
// Set initial state
|
|
136
|
+
gl.uniform2f(this.uResolution, width, height);
|
|
137
|
+
gl.uniform1i(this.uTexture, 0);
|
|
138
|
+
// Premultiplied alpha blending: src=ONE, dst=ONE_MINUS_SRC_ALPHA
|
|
139
|
+
gl.enable(gl.BLEND);
|
|
140
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
141
|
+
gl.viewport(0, 0, width, height);
|
|
142
|
+
this._initialized = true;
|
|
143
|
+
console.log('[libbitsub] WebGL2 renderer initialized');
|
|
144
|
+
}
|
|
145
|
+
_compileShader(type, src) {
|
|
146
|
+
const gl = this.gl;
|
|
147
|
+
const shader = gl.createShader(type);
|
|
148
|
+
if (!shader)
|
|
149
|
+
throw new Error('Failed to create shader');
|
|
150
|
+
gl.shaderSource(shader, src);
|
|
151
|
+
gl.compileShader(shader);
|
|
152
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
153
|
+
const log = gl.getShaderInfoLog(shader);
|
|
154
|
+
gl.deleteShader(shader);
|
|
155
|
+
throw new Error('Shader compile error: ' + log);
|
|
156
|
+
}
|
|
157
|
+
return shader;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Update canvas dimensions.
|
|
161
|
+
*/
|
|
162
|
+
updateSize(width, height) {
|
|
163
|
+
if (!this.gl || !this._canvas)
|
|
164
|
+
return;
|
|
165
|
+
this._canvas.width = width;
|
|
166
|
+
this._canvas.height = height;
|
|
167
|
+
this._width = width;
|
|
168
|
+
this._height = height;
|
|
169
|
+
this.gl.viewport(0, 0, width, height);
|
|
170
|
+
this.gl.useProgram(this.program);
|
|
171
|
+
this.gl.uniform2f(this.uResolution, width, height);
|
|
172
|
+
}
|
|
173
|
+
_ensureTexture(index, width, height) {
|
|
174
|
+
const gl = this.gl;
|
|
175
|
+
const existing = this.textures[index];
|
|
176
|
+
if (existing && existing.width === width && existing.height === height) {
|
|
177
|
+
return existing;
|
|
178
|
+
}
|
|
179
|
+
// Delete old texture if size changed
|
|
180
|
+
if (existing) {
|
|
181
|
+
gl.deleteTexture(existing.texture);
|
|
182
|
+
}
|
|
183
|
+
const texture = gl.createTexture();
|
|
184
|
+
if (!texture)
|
|
185
|
+
throw new Error('Failed to create WebGL2 texture');
|
|
186
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
187
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
|
|
188
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
|
|
189
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
190
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
191
|
+
// Allocate storage
|
|
192
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
|
|
193
|
+
const info = { texture, width, height, sourceData: null };
|
|
194
|
+
this.textures[index] = info;
|
|
195
|
+
return info;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Render subtitle compositions to the canvas.
|
|
199
|
+
*/
|
|
200
|
+
render(compositions, screenWidth, screenHeight, scaleX, scaleY, offsetY) {
|
|
201
|
+
if (!this.gl || !this.program || !this._canvas)
|
|
202
|
+
return;
|
|
203
|
+
const gl = this.gl;
|
|
204
|
+
gl.useProgram(this.program);
|
|
205
|
+
gl.bindVertexArray(this.vao);
|
|
206
|
+
gl.clearColor(0, 0, 0, 0);
|
|
207
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
208
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
209
|
+
for (let i = 0; i < compositions.length; i++) {
|
|
210
|
+
const comp = compositions[i];
|
|
211
|
+
const { pixelData, x, y } = comp;
|
|
212
|
+
const { width, height, data } = pixelData;
|
|
213
|
+
if (width <= 0 || height <= 0)
|
|
214
|
+
continue;
|
|
215
|
+
const info = this._ensureTexture(i, width, height);
|
|
216
|
+
gl.bindTexture(gl.TEXTURE_2D, info.texture);
|
|
217
|
+
// Only premultiply and re-upload if the source ImageData buffer has changed
|
|
218
|
+
if (info.sourceData !== data) {
|
|
219
|
+
const uploadData = new Uint8Array(data.length);
|
|
220
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
221
|
+
const a = data[j + 3];
|
|
222
|
+
const af = a / 255;
|
|
223
|
+
uploadData[j] = (data[j] * af + 0.5) | 0;
|
|
224
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
|
|
225
|
+
uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
|
|
226
|
+
uploadData[j + 3] = a;
|
|
227
|
+
}
|
|
228
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, uploadData);
|
|
229
|
+
info.sourceData = data;
|
|
230
|
+
}
|
|
231
|
+
// Calculate scaled position and size (mirrors WebGPU renderer maths)
|
|
232
|
+
const scaledWidth = width * scaleX;
|
|
233
|
+
const scaledHeight = height * scaleY;
|
|
234
|
+
const baseX = x * (this._width / screenWidth);
|
|
235
|
+
const baseY = y * (this._height / screenHeight);
|
|
236
|
+
const centeredX = baseX + (width * (this._width / screenWidth) - scaledWidth) / 2;
|
|
237
|
+
const adjustedY = baseY + offsetY + (height * (this._height / screenHeight) - scaledHeight);
|
|
238
|
+
gl.uniform4f(this.uDestRect, centeredX, adjustedY, scaledWidth, scaledHeight);
|
|
239
|
+
// Draw 6 vertices for the two-triangle quad
|
|
240
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
241
|
+
}
|
|
242
|
+
// Free GPU textures in slots beyond the current composition count
|
|
243
|
+
if (this.textures.length > compositions.length) {
|
|
244
|
+
for (let i = compositions.length; i < this.textures.length; i++) {
|
|
245
|
+
const stale = this.textures[i];
|
|
246
|
+
if (stale)
|
|
247
|
+
gl.deleteTexture(stale.texture);
|
|
248
|
+
}
|
|
249
|
+
this.textures.length = compositions.length;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Clear the canvas.
|
|
254
|
+
*/
|
|
255
|
+
clear() {
|
|
256
|
+
if (!this.gl)
|
|
257
|
+
return;
|
|
258
|
+
this.gl.clearColor(0, 0, 0, 0);
|
|
259
|
+
this.gl.clear(this.gl.COLOR_BUFFER_BIT);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Check if renderer is initialized.
|
|
263
|
+
*/
|
|
264
|
+
get initialized() {
|
|
265
|
+
return this._initialized;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Destroy all GPU resources.
|
|
269
|
+
*/
|
|
270
|
+
destroy() {
|
|
271
|
+
const gl = this.gl;
|
|
272
|
+
if (gl) {
|
|
273
|
+
for (const info of this.textures) {
|
|
274
|
+
if (info)
|
|
275
|
+
gl.deleteTexture(info.texture);
|
|
276
|
+
}
|
|
277
|
+
if (this.program)
|
|
278
|
+
gl.deleteProgram(this.program);
|
|
279
|
+
if (this.vao)
|
|
280
|
+
gl.deleteVertexArray(this.vao);
|
|
281
|
+
}
|
|
282
|
+
this.textures = [];
|
|
283
|
+
this.program = null;
|
|
284
|
+
this.vao = null;
|
|
285
|
+
this.gl = null;
|
|
286
|
+
this._canvas = null;
|
|
287
|
+
this._initialized = false;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=webgl2-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl2-renderer.js","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@ interface TextureInfo {
|
|
|
4
4
|
view: GPUTextureView;
|
|
5
5
|
width: number;
|
|
6
6
|
height: number;
|
|
7
|
+
/** Reference to the last uploaded source pixel data – used to skip redundant premultiplication + re-upload. */
|
|
8
|
+
sourceData: Uint8ClampedArray | null;
|
|
9
|
+
/** Cached bind group – valid as long as texture view and quad buffer haven't changed. */
|
|
10
|
+
bindGroup: GPUBindGroup | null;
|
|
7
11
|
}
|
|
8
12
|
/**
|
|
9
13
|
* Check if WebGPU is supported in the current browser.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAoEtD,UAAU,WAAW;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAoEtD,UAAU,WAAW;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,+GAA+G;IAC/G,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,yFAAyF;IACzF,SAAS,EAAE,YAAY,GAAG,IAAI,CAAA;CAC/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAO;IACvC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACzC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAO;IACjC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAO;IAGjD,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAGtC,eAAe,EAAE,SAAS,EAAE,CAAK;IAGjC,QAAQ,EAAE,WAAW,EAAE,CAAK;IAC5B,sBAAsB,EAAE,UAAU,EAAE,CAAK;IAEzC,MAAM,EAAE,gBAAgB,CAAe;IAEvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;IAE5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMb,WAAW;IA0GzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxF;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/C,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IAmJP;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAwBhB"}
|
|
@@ -241,7 +241,9 @@ export class WebGPURenderer {
|
|
|
241
241
|
texture,
|
|
242
242
|
view: texture.createView(),
|
|
243
243
|
width,
|
|
244
|
-
height
|
|
244
|
+
height,
|
|
245
|
+
sourceData: null,
|
|
246
|
+
bindGroup: null
|
|
245
247
|
};
|
|
246
248
|
}
|
|
247
249
|
/**
|
|
@@ -282,36 +284,38 @@ export class WebGPURenderer {
|
|
|
282
284
|
if (width <= 0 || height <= 0)
|
|
283
285
|
continue;
|
|
284
286
|
let texInfo = this.textures[i];
|
|
285
|
-
// Recreate texture if size changed
|
|
287
|
+
// Recreate texture if size changed; clear cached bind group and source reference
|
|
286
288
|
if (texInfo.width !== width || texInfo.height !== height) {
|
|
287
289
|
this.pendingDestroyTextures.push(texInfo.texture);
|
|
288
290
|
texInfo = this.createTextureInfo(width, height);
|
|
289
291
|
this.textures[i] = texInfo;
|
|
290
292
|
}
|
|
291
|
-
//
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
293
|
+
// Only premultiply and re-upload when the source ImageData buffer has changed
|
|
294
|
+
if (texInfo.sourceData !== data) {
|
|
295
|
+
const uploadData = new Uint8Array(data.length);
|
|
296
|
+
if (this.format === 'bgra8unorm') {
|
|
297
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
298
|
+
const a = data[j + 3];
|
|
299
|
+
const af = a / 255;
|
|
300
|
+
uploadData[j] = (data[j + 2] * af + 0.5) | 0; // B <- R * a
|
|
301
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0; // G
|
|
302
|
+
uploadData[j + 2] = (data[j] * af + 0.5) | 0; // R <- B * a
|
|
303
|
+
uploadData[j + 3] = a;
|
|
304
|
+
}
|
|
301
305
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
306
|
+
else {
|
|
307
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
308
|
+
const a = data[j + 3];
|
|
309
|
+
const af = a / 255;
|
|
310
|
+
uploadData[j] = (data[j] * af + 0.5) | 0;
|
|
311
|
+
uploadData[j + 1] = (data[j + 1] * af + 0.5) | 0;
|
|
312
|
+
uploadData[j + 2] = (data[j + 2] * af + 0.5) | 0;
|
|
313
|
+
uploadData[j + 3] = a;
|
|
314
|
+
}
|
|
311
315
|
}
|
|
316
|
+
this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
|
|
317
|
+
texInfo.sourceData = data;
|
|
312
318
|
}
|
|
313
|
-
// Upload premultiplied pixel data to texture
|
|
314
|
-
this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData, { bytesPerRow: width * 4 }, { width, height });
|
|
315
319
|
// Calculate scaled position and size
|
|
316
320
|
const scaledWidth = width * scaleX;
|
|
317
321
|
const scaledHeight = height * scaleY;
|
|
@@ -334,17 +338,19 @@ export class WebGPURenderer {
|
|
|
334
338
|
]);
|
|
335
339
|
const quadBuffer = this.quadDataBuffers[i];
|
|
336
340
|
this.device.queue.writeBuffer(quadBuffer, 0, quadData);
|
|
337
|
-
//
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
341
|
+
// Reuse cached bind group; it is only invalidated when the texture is recreated (size change)
|
|
342
|
+
if (!texInfo.bindGroup) {
|
|
343
|
+
texInfo.bindGroup = this.device.createBindGroup({
|
|
344
|
+
layout: this.bindGroupLayout,
|
|
345
|
+
entries: [
|
|
346
|
+
{ binding: 0, resource: { buffer: this.uniformBuffer } },
|
|
347
|
+
{ binding: 1, resource: { buffer: quadBuffer } },
|
|
348
|
+
{ binding: 2, resource: this.sampler },
|
|
349
|
+
{ binding: 3, resource: texInfo.view }
|
|
350
|
+
]
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
renderPass.setBindGroup(0, texInfo.bindGroup);
|
|
348
354
|
renderPass.draw(6); // 6 vertices for quad
|
|
349
355
|
}
|
|
350
356
|
renderPass.end();
|
|
@@ -354,6 +360,19 @@ export class WebGPURenderer {
|
|
|
354
360
|
tex.destroy();
|
|
355
361
|
}
|
|
356
362
|
this.pendingDestroyTextures = [];
|
|
363
|
+
// Free GPU resources in slots beyond the current composition count
|
|
364
|
+
if (this.textures.length > compositions.length) {
|
|
365
|
+
for (let i = compositions.length; i < this.textures.length; i++) {
|
|
366
|
+
this.textures[i].texture.destroy();
|
|
367
|
+
}
|
|
368
|
+
this.textures.length = compositions.length;
|
|
369
|
+
}
|
|
370
|
+
if (this.quadDataBuffers.length > compositions.length) {
|
|
371
|
+
for (let i = compositions.length; i < this.quadDataBuffers.length; i++) {
|
|
372
|
+
this.quadDataBuffers[i].destroy();
|
|
373
|
+
}
|
|
374
|
+
this.quadDataBuffers.length = compositions.length;
|
|
375
|
+
}
|
|
357
376
|
}
|
|
358
377
|
/**
|
|
359
378
|
* Clear the canvas.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/pkg/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
|
|
|
8
8
|
|
|
9
9
|
- **PGS (Blu-ray)** subtitle parsing and rendering
|
|
10
10
|
- **VobSub (DVD)** subtitle parsing and rendering
|
|
11
|
-
- **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D
|
|
11
|
+
- **WebGPU / WebGL2 rendering** GPU-accelerated rendering with automatic fallback: WebGPU → WebGL2 → Canvas2D
|
|
12
12
|
- **High-performance** Rust-based rendering engine compiled to WebAssembly
|
|
13
13
|
- **Zero-copy** data transfer between JS and WASM where possible
|
|
14
14
|
- **Caching** for decoded bitmaps to optimize repeated rendering
|
|
@@ -319,31 +319,44 @@ setInterval(() => {
|
|
|
319
319
|
| `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
|
|
320
320
|
| `currentIndex` | number | Index of the currently displayed subtitle |
|
|
321
321
|
|
|
322
|
-
###
|
|
322
|
+
### GPU-Accelerated Rendering
|
|
323
323
|
|
|
324
|
-
libbitsub automatically
|
|
324
|
+
libbitsub automatically selects the best available GPU renderer at startup, following this fallback chain:
|
|
325
|
+
|
|
326
|
+
**WebGPU → WebGL2 → Canvas2D**
|
|
325
327
|
|
|
326
328
|
```typescript
|
|
327
|
-
import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
|
|
329
|
+
import { PgsRenderer, isWebGPUSupported, isWebGL2Supported } from 'libbitsub'
|
|
328
330
|
|
|
329
|
-
// Check
|
|
331
|
+
// Check renderer support
|
|
330
332
|
if (isWebGPUSupported()) {
|
|
331
|
-
console.log('WebGPU available
|
|
333
|
+
console.log('WebGPU available')
|
|
334
|
+
} else if (isWebGL2Supported()) {
|
|
335
|
+
console.log('WebGL2 available')
|
|
336
|
+
} else {
|
|
337
|
+
console.log('Falling back to Canvas2D')
|
|
332
338
|
}
|
|
333
339
|
|
|
334
|
-
// Configure WebGPU preference
|
|
335
340
|
const renderer = new PgsRenderer({
|
|
336
341
|
video: videoElement,
|
|
337
342
|
subUrl: '/subtitles/movie.sup',
|
|
338
|
-
|
|
339
|
-
|
|
343
|
+
onWebGPUFallback: () => console.log('WebGPU unavailable, trying WebGL2'),
|
|
344
|
+
onWebGL2Fallback: () => console.log('WebGL2 unavailable, using Canvas2D')
|
|
340
345
|
})
|
|
341
346
|
```
|
|
342
347
|
|
|
343
348
|
**Options:**
|
|
344
349
|
|
|
345
|
-
- `
|
|
346
|
-
- `
|
|
350
|
+
- `onWebGPUFallback` (function): Callback when WebGPU initialisation fails
|
|
351
|
+
- `onWebGL2Fallback` (function): Callback when WebGL2 initialisation fails
|
|
352
|
+
|
|
353
|
+
**Renderer capabilities:**
|
|
354
|
+
|
|
355
|
+
| Renderer | Premultiplied alpha | Linear sampling | Browser support |
|
|
356
|
+
| -------- | ------------------- | --------------- | --------------- |
|
|
357
|
+
| WebGPU | ✅ | ✅ | Chrome 113+, Firefox 141+, Edge 113+ |
|
|
358
|
+
| WebGL2 | ✅ | ✅ | All modern browsers |
|
|
359
|
+
| Canvas2D | — | ✅ | Universal |
|
|
347
360
|
|
|
348
361
|
## Low-Level API (Programmatic Use)
|
|
349
362
|
|
|
@@ -501,11 +514,11 @@ interface VideoSubtitleOptions {
|
|
|
501
514
|
subUrl?: string // URL to subtitle file (provide this OR subContent)
|
|
502
515
|
subContent?: ArrayBuffer // Direct subtitle content (provide this OR subUrl)
|
|
503
516
|
workerUrl?: string // Worker URL (for API compatibility)
|
|
504
|
-
preferWebGPU?: boolean // Prefer WebGPU renderer if available (default: true)
|
|
505
517
|
onLoading?: () => void // Called when subtitle loading starts
|
|
506
518
|
onLoaded?: () => void // Called when subtitle loading completes
|
|
507
519
|
onError?: (error: Error) => void // Called when subtitle loading fails
|
|
508
|
-
onWebGPUFallback?: () => void // Called when WebGPU
|
|
520
|
+
onWebGPUFallback?: () => void // Called when WebGPU init fails
|
|
521
|
+
onWebGL2Fallback?: () => void // Called when WebGL2 init fails
|
|
509
522
|
}
|
|
510
523
|
```
|
|
511
524
|
|
package/pkg/libbitsub.d.ts
CHANGED
|
@@ -331,8 +331,8 @@ export interface InitOutput {
|
|
|
331
331
|
readonly vobsubparser_setDebandRange: (a: number, b: number) => void;
|
|
332
332
|
readonly vobsubparser_setDebandThreshold: (a: number, b: number) => void;
|
|
333
333
|
readonly __wbg_subtitleframe_free: (a: number, b: number) => void;
|
|
334
|
-
readonly subtitleframe_width: (a: number) => number;
|
|
335
334
|
readonly subtitleframe_height: (a: number) => number;
|
|
335
|
+
readonly subtitleframe_width: (a: number) => number;
|
|
336
336
|
readonly subtitleframe_compositionCount: (a: number) => number;
|
|
337
337
|
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
338
338
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
package/pkg/libbitsub_bg.wasm
CHANGED
|
Binary file
|
|
@@ -62,8 +62,8 @@ export const vobsubparser_setDebandEnabled: (a: number, b: number) => void;
|
|
|
62
62
|
export const vobsubparser_setDebandRange: (a: number, b: number) => void;
|
|
63
63
|
export const vobsubparser_setDebandThreshold: (a: number, b: number) => void;
|
|
64
64
|
export const __wbg_subtitleframe_free: (a: number, b: number) => void;
|
|
65
|
-
export const subtitleframe_width: (a: number) => number;
|
|
66
65
|
export const subtitleframe_height: (a: number) => number;
|
|
66
|
+
export const subtitleframe_width: (a: number) => number;
|
|
67
67
|
export const subtitleframe_compositionCount: (a: number) => number;
|
|
68
68
|
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
69
69
|
export const __wbindgen_malloc: (a: number, b: number) => number;
|