movi-player 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -7
- package/dist/core/MoviPlayer.d.ts +77 -1
- package/dist/core/MoviPlayer.d.ts.map +1 -1
- package/dist/core/MoviPlayer.js +667 -121
- package/dist/core/MoviPlayer.js.map +1 -1
- package/dist/core/PlayerState.js +1 -1
- package/dist/core/PlayerState.js.map +1 -1
- package/dist/demuxer.cjs +314 -128
- package/dist/demuxer.js +313 -127
- package/dist/element.cjs +58274 -16562
- package/dist/element.js +59481 -17769
- package/dist/index.cjs +58274 -16562
- package/dist/index.js +59481 -17769
- package/dist/player.cjs +56818 -15360
- package/dist/player.js +57818 -16360
- package/dist/render/DASHPlayerWrapper.d.ts +65 -0
- package/dist/render/DASHPlayerWrapper.d.ts.map +1 -0
- package/dist/render/DASHPlayerWrapper.js +540 -0
- package/dist/render/DASHPlayerWrapper.js.map +1 -0
- package/dist/render/HLSPlayerWrapper.d.ts.map +1 -1
- package/dist/render/HLSPlayerWrapper.js +47 -11
- package/dist/render/HLSPlayerWrapper.js.map +1 -1
- package/dist/render/MoviElement.d.ts +96 -0
- package/dist/render/MoviElement.d.ts.map +1 -1
- package/dist/render/MoviElement.js +784 -118
- package/dist/render/MoviElement.js.map +1 -1
- package/dist/render/ShakaPlayerWrapper.d.ts +111 -0
- package/dist/render/ShakaPlayerWrapper.d.ts.map +1 -0
- package/dist/render/ShakaPlayerWrapper.js +956 -0
- package/dist/render/ShakaPlayerWrapper.js.map +1 -0
- package/dist/source/DashFallback.d.ts +32 -0
- package/dist/source/DashFallback.d.ts.map +1 -0
- package/dist/source/DashFallback.js +142 -0
- package/dist/source/DashFallback.js.map +1 -0
- package/dist/source/DashManifest.d.ts +34 -0
- package/dist/source/DashManifest.d.ts.map +1 -0
- package/dist/source/DashManifest.js +194 -0
- package/dist/source/DashManifest.js.map +1 -0
- package/dist/source/DashSegmentSource.d.ts +32 -0
- package/dist/source/DashSegmentSource.d.ts.map +1 -0
- package/dist/source/DashSegmentSource.js +86 -0
- package/dist/source/DashSegmentSource.js.map +1 -0
- package/dist/source/HttpSource.d.ts +64 -0
- package/dist/source/HttpSource.d.ts.map +1 -1
- package/dist/source/HttpSource.js +444 -57
- package/dist/source/HttpSource.js.map +1 -1
- package/dist/source/ThumbnailHttpSource.d.ts +13 -0
- package/dist/source/ThumbnailHttpSource.d.ts.map +1 -1
- package/dist/source/ThumbnailHttpSource.js +70 -8
- package/dist/source/ThumbnailHttpSource.js.map +1 -1
- package/dist/source/index.d.ts +2 -0
- package/dist/source/index.d.ts.map +1 -1
- package/dist/source/index.js +1 -0
- package/dist/source/index.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
- **Picture-in-Picture** -- Document PiP with controls (play/pause, seek, mute, progress). Chromium 116+.
|
|
35
35
|
- **Ambient mode** -- Dynamic letterbox glow that samples video colors in real-time. Press `G` or use context menu.
|
|
36
36
|
- **Split sources** -- Separate video, audio, and subtitle file URLs via `videosrc`, `audiosrc`, `subtitlesrc` attributes.
|
|
37
|
-
- **
|
|
37
|
+
- **Adaptive streaming** -- HLS (`.m3u8`), MPEG-DASH (`.mpd`), and Smooth Streaming (`.ism`) unified through Shaka Player, with a live-edge UI and DVR seeking.
|
|
38
|
+
- **Custom request headers** -- Send auth tokens / signed headers across manifests, segments, progressive HTTP, and the encrypted source via the `headers` attribute.
|
|
39
|
+
- **DRM ready** -- Optional Widevine/PlayReady/FairPlay support via `drm` + `licenseurl` attributes for adaptive streams.
|
|
38
40
|
|
|
39
41
|
### vs. Other Players
|
|
40
42
|
|
|
@@ -116,7 +118,40 @@ await player.play();
|
|
|
116
118
|
AES-256-GCM encrypted, HMAC signed, 2s token expiry, IP + fingerprint binding.
|
|
117
119
|
See [encrypted-server/](encrypted-server/) for the server example.
|
|
118
120
|
|
|
119
|
-
###
|
|
121
|
+
### Adaptive Streaming (HLS / DASH / Smooth)
|
|
122
|
+
|
|
123
|
+
```html
|
|
124
|
+
<!-- HLS -->
|
|
125
|
+
<movi-player src="https://example.com/master.m3u8" controls autoplay muted></movi-player>
|
|
126
|
+
|
|
127
|
+
<!-- MPEG-DASH -->
|
|
128
|
+
<movi-player src="https://example.com/manifest.mpd" controls autoplay muted></movi-player>
|
|
129
|
+
|
|
130
|
+
<!-- Smooth Streaming -->
|
|
131
|
+
<movi-player src="https://example.com/manifest.ism/manifest" controls autoplay muted></movi-player>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`.m3u8`, `.mpd`, and `.ism` are unified through Shaka Player (with hls.js / dash.js as automatic fallbacks) and drawn to the same canvas pipeline, so the quality menu, stats, and track switching work identically across all three. Live streams get a `LIVE` badge, jump-to-edge, DVR-window seeking, and an Auto-mode quality badge.
|
|
135
|
+
|
|
136
|
+
### Custom Request Headers
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<!-- JSON attribute -->
|
|
140
|
+
<movi-player
|
|
141
|
+
src="https://example.com/master.m3u8"
|
|
142
|
+
headers='{"Authorization":"Bearer <token>"}'
|
|
143
|
+
controls autoplay muted
|
|
144
|
+
></movi-player>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
```js
|
|
148
|
+
// Or the property (preferred for non-trivial maps)
|
|
149
|
+
player.headers = { Authorization: `Bearer ${token}` };
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Headers ride along on every media request -- manifest + segments, progressive HTTP, thumbnails, and the encrypted source.
|
|
153
|
+
|
|
154
|
+
### DRM (Widevine / PlayReady / FairPlay)
|
|
120
155
|
|
|
121
156
|
```html
|
|
122
157
|
<movi-player
|
|
@@ -127,7 +162,7 @@ See [encrypted-server/](encrypted-server/) for the server example.
|
|
|
127
162
|
></movi-player>
|
|
128
163
|
```
|
|
129
164
|
|
|
130
|
-
Requires a DRM license server (PallyCon, EZDRM, BuyDRM, etc.). In DRM mode, native `<video>` element is used (canvas features like rotation are disabled).
|
|
165
|
+
Requires a DRM license server (PallyCon, EZDRM, BuyDRM, etc.). Key systems are tried Widevine → PlayReady → FairPlay. In DRM mode, the native `<video>` element is used (canvas features like rotation are disabled).
|
|
131
166
|
|
|
132
167
|
### Demuxer Only (50KB)
|
|
133
168
|
|
|
@@ -175,7 +210,13 @@ Use cases: video validators, asset management, HDR detection pipelines, search i
|
|
|
175
210
|
|
|
176
211
|
**Playback** -- MP4, MKV, WebM, MOV, TS, AVI. H.264, HEVC, VP9, AV1. Hardware decode with software fallback. Pitch-preserving time-stretch via Signalsmith Stretch.
|
|
177
212
|
|
|
178
|
-
**
|
|
213
|
+
**Adaptive Streaming** -- HLS (`.m3u8`), MPEG-DASH (`.mpd`), and Smooth Streaming (`.ism`) unified through Shaka Player (hls.js / dash.js fallbacks). Live-edge badge, DVR-window seeking, Auto-mode quality badge. Optional MPEG-5 LCEVC enhancement-layer decoding via `lcevc` + `lcevcurl`.
|
|
214
|
+
|
|
215
|
+
**Custom Headers** -- Send auth tokens / signed headers across the whole media flow (manifest, segments, progressive HTTP, thumbnails, encrypted source) via the `headers` attribute (JSON) or property (object).
|
|
216
|
+
|
|
217
|
+
**Audio** -- AAC, MP3, Opus, FLAC, AC-3, E-AC-3. Multi-track switching. Stable volume (loudness normalization). First-class audio-only mode with cover art extraction and a dedicated strip UI. Data-saver `audioonly` mode skips the video decode (and fetches an audio-only stream rendition). Perceptual (log) volume curve. Muted-autoplay fallback with tap-to-unmute.
|
|
218
|
+
|
|
219
|
+
**Non-Range Servers** -- Servers that ignore `Range` (respond `200`, not `206`) still play via a forward-only sliding-window "linear mode" with in-window seeking; the `linearmode` event lets your UI adapt.
|
|
179
220
|
|
|
180
221
|
**Subtitles** -- SRT, ASS, WebVTT, PGS (image-based), DVB. Multi-track with on-the-fly switching. Per-source delay/offset (`Z` / `X` to nudge ±100ms), full transcript browser with search + click-to-seek, customizable size/color/background/edge (persisted), karaoke-aligned VTT.
|
|
181
222
|
|
|
@@ -246,7 +287,11 @@ Use cases: video validators, asset management, HDR detection pipelines, search i
|
|
|
246
287
|
resume <!-- Resume from last position -->
|
|
247
288
|
stablevolume <!-- Loudness normalization -->
|
|
248
289
|
buffersize="200" <!-- Max prefetch window in MB (HTTP + encrypted) -->
|
|
249
|
-
renderer="canvas" <!-- canvas (HLS/DRM auto-pick their own pipeline) -->
|
|
290
|
+
renderer="canvas" <!-- canvas (HLS/DASH/DRM auto-pick their own pipeline) -->
|
|
291
|
+
headers='{"k":"v"}' <!-- Custom request headers (JSON) for all media requests -->
|
|
292
|
+
audioonly <!-- Data-saver: play audio only, skip video decode -->
|
|
293
|
+
lcevc <!-- Enable MPEG-5 LCEVC enhancement decoding (adaptive streams) -->
|
|
294
|
+
lcevcurl="https://..." <!-- URL to lazy-load the lcevc_dec.js decoder library -->
|
|
250
295
|
sw <!-- Force software decoding -->
|
|
251
296
|
fps="60" <!-- Override frame rate -->
|
|
252
297
|
gesturefs <!-- Gestures only in fullscreen -->
|
|
@@ -255,8 +300,8 @@ Use cases: video validators, asset management, HDR detection pipelines, search i
|
|
|
255
300
|
tokenurl="/api/token" <!-- Token endpoint (encrypted) -->
|
|
256
301
|
videourl="/api/video" <!-- Video endpoint (encrypted) -->
|
|
257
302
|
videoid="movie.mp4" <!-- Video ID (encrypted) -->
|
|
258
|
-
drm <!-- DRM mode for
|
|
259
|
-
licenseurl="https://..." <!-- Widevine/FairPlay license server URL -->
|
|
303
|
+
drm <!-- DRM mode for adaptive streams (native video + EME) -->
|
|
304
|
+
licenseurl="https://..." <!-- Widevine/PlayReady/FairPlay license server URL -->
|
|
260
305
|
></movi-player>
|
|
261
306
|
```
|
|
262
307
|
|
|
@@ -13,6 +13,9 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
13
13
|
private cache;
|
|
14
14
|
private demuxer;
|
|
15
15
|
private nativeAudioEl;
|
|
16
|
+
private _nativeAudioObjectUrl;
|
|
17
|
+
private _nativeAudioLogicalUrl;
|
|
18
|
+
private _nativeAudioAutoplayBlocked;
|
|
16
19
|
private _audioTracks;
|
|
17
20
|
private _activeAudioLang;
|
|
18
21
|
private _subtitleTracks;
|
|
@@ -26,6 +29,8 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
26
29
|
private fileSize;
|
|
27
30
|
private lastBufferedTime;
|
|
28
31
|
private previewsAllowed;
|
|
32
|
+
/** Proxy a stream wrapper's events + mirror its TrackManager onto the player. */
|
|
33
|
+
private wireStreamWrapper;
|
|
29
34
|
private videoDecoder;
|
|
30
35
|
private audioDecoder;
|
|
31
36
|
private subtitleDecoder;
|
|
@@ -33,7 +38,7 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
33
38
|
private prefetchedSubtitleStream;
|
|
34
39
|
private prefetchInFlight;
|
|
35
40
|
private coverArt;
|
|
36
|
-
private
|
|
41
|
+
private streamWrapper;
|
|
37
42
|
private thumbnailBindings;
|
|
38
43
|
private thumbnailSource;
|
|
39
44
|
private thumbnailRenderer;
|
|
@@ -41,7 +46,10 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
41
46
|
private isPreviewGenerating;
|
|
42
47
|
private audioRenderer;
|
|
43
48
|
private previewInitPromise;
|
|
49
|
+
private previewInitAttempts;
|
|
50
|
+
private previewInitGaveUp;
|
|
44
51
|
private disableAudio;
|
|
52
|
+
private _audioOnly;
|
|
45
53
|
private muted;
|
|
46
54
|
private wasPlayingBeforeRebuffer;
|
|
47
55
|
private _stallStartTime;
|
|
@@ -103,11 +111,26 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
103
111
|
* renderer starts AudioContext playback the moment samples arrive. Both
|
|
104
112
|
* break if we decode during prebuffer.
|
|
105
113
|
*/
|
|
114
|
+
/**
|
|
115
|
+
* Native-audio-only playback (split-source data saver): audio-only mode AND a
|
|
116
|
+
* separate <audio> track. There's no video pipeline to run, and the audio is
|
|
117
|
+
* its own element, so the demuxer body is never read — only the header it
|
|
118
|
+
* downloaded at open() — saving the video file's entire bandwidth on top of
|
|
119
|
+
* the skipped decode. Drives playback straight off the <audio> element.
|
|
120
|
+
*/
|
|
121
|
+
private nativeAudioOnlyPlayback;
|
|
106
122
|
private prebuffer;
|
|
107
123
|
/**
|
|
108
124
|
* Start playback
|
|
109
125
|
*/
|
|
110
126
|
play(): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Play in native-audio-only mode (split-source data saver). No demuxer reads,
|
|
129
|
+
* no decode loop — just the <audio> element + clock. Handles first play,
|
|
130
|
+
* resume, and replay (rewind on ended). Autoplay-blocked stays paused (there's
|
|
131
|
+
* no video to roll), with the centre play button as the resume affordance.
|
|
132
|
+
*/
|
|
133
|
+
private playNativeAudioOnly;
|
|
111
134
|
/**
|
|
112
135
|
* Pause playback
|
|
113
136
|
*/
|
|
@@ -315,7 +338,16 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
315
338
|
* Setup native <audio> element for separate audio source.
|
|
316
339
|
* Shared by single audioSource and multi-language audioTracks.
|
|
317
340
|
*/
|
|
341
|
+
/**
|
|
342
|
+
* Wire the native <audio> element's media events to player state/time. These
|
|
343
|
+
* only act in native-audio-only mode (split-source data saver) — where there's
|
|
344
|
+
* no demux loop to emit timeUpdate / detect EOF — and are inert during normal
|
|
345
|
+
* split-source playback, which the processLoop drives.
|
|
346
|
+
*/
|
|
347
|
+
private wireNativeAudioEvents;
|
|
318
348
|
private setupNativeAudio;
|
|
349
|
+
/** Release the in-memory blob: URL backing a header-authenticated audio file. */
|
|
350
|
+
private revokeNativeAudioObjectUrl;
|
|
319
351
|
/**
|
|
320
352
|
* Detach the native <audio> element from this player WITHOUT pausing it,
|
|
321
353
|
* so it can be re-adopted by a successor instance during a quality switch.
|
|
@@ -359,6 +391,16 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
359
391
|
* audio is muxed inside the native <video> element.
|
|
360
392
|
*/
|
|
361
393
|
hasAudibleSource(): boolean;
|
|
394
|
+
/** True for a live (dynamic) adaptive stream — drives the LIVE indicator. */
|
|
395
|
+
isLiveStream(): boolean;
|
|
396
|
+
/** True when the active adaptive stream is audio-only (no video track). */
|
|
397
|
+
isStreamAudioOnly(): boolean;
|
|
398
|
+
/** Live-edge time of a live stream (seekable range end). */
|
|
399
|
+
getLiveEdge(): number;
|
|
400
|
+
/** Start of a live stream's seekable (DVR) window. */
|
|
401
|
+
getSeekRangeStart(): number;
|
|
402
|
+
/** Jump to the live edge of a live stream. */
|
|
403
|
+
seekToLive(): void;
|
|
362
404
|
/**
|
|
363
405
|
* Get available external subtitle tracks
|
|
364
406
|
*/
|
|
@@ -454,6 +496,13 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
454
496
|
* Check if source is a local file
|
|
455
497
|
*/
|
|
456
498
|
isFileSource(): boolean;
|
|
499
|
+
/**
|
|
500
|
+
* True when the active source has fallen back to linear (forward-only,
|
|
501
|
+
* non-seekable) playback — server lacks HTTP Range support and the file is
|
|
502
|
+
* too big to cache whole. Used by the UI as a backstop alongside the
|
|
503
|
+
* "linearmode" event (in case the event fired before listeners attached).
|
|
504
|
+
*/
|
|
505
|
+
isLinearPlayback(): boolean;
|
|
457
506
|
/**
|
|
458
507
|
* True when audio is blocked by the browser's autoplay policy — the
|
|
459
508
|
* AudioContext is stuck suspended despite an unmuted play() because no
|
|
@@ -462,6 +511,16 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
462
511
|
* muted playback + a "Tap to unmute" pill.
|
|
463
512
|
*/
|
|
464
513
|
isAudioBlockedSuspended(): boolean;
|
|
514
|
+
/** True when audio-only (data-saver) mode is active. */
|
|
515
|
+
isAudioOnly(): boolean;
|
|
516
|
+
/**
|
|
517
|
+
* Toggle audio-only (data-saver) mode at runtime. On the demuxer path the
|
|
518
|
+
* processLoop stops decoding video (CPU saving) — re-enabling re-seeks to
|
|
519
|
+
* recover a keyframe and resume video in sync. Adaptive streams drop/restore
|
|
520
|
+
* video renditions via a reload (config.audioOnly), so this only flips the
|
|
521
|
+
* flag for them; the caller (MoviElement) owns that reload.
|
|
522
|
+
*/
|
|
523
|
+
setAudioOnly(enabled: boolean): void;
|
|
465
524
|
/**
|
|
466
525
|
* True when the active source is not a FileSource (gate inactive), or when
|
|
467
526
|
* the FileSource's initial preload pass has settled.
|
|
@@ -476,6 +535,14 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
476
535
|
* Request WakeLock to prevent screen sleep
|
|
477
536
|
*/
|
|
478
537
|
private requestWakeLock;
|
|
538
|
+
/**
|
|
539
|
+
* Re-acquire the screen wake lock if we should be holding one but aren't.
|
|
540
|
+
* Called on the moments where the lock can quietly drop, or where a failed
|
|
541
|
+
* first attempt gets a fresh chance: tab visibility changes and player
|
|
542
|
+
* resizes (fullscreen / orientation / PiP transitions). Idempotent — no-op
|
|
543
|
+
* when a lock is already held, playback isn't active, or the page is hidden.
|
|
544
|
+
*/
|
|
545
|
+
private ensureWakeLock;
|
|
479
546
|
/**
|
|
480
547
|
* Handle network recovery — re-seek to current position to restart cleanly
|
|
481
548
|
*/
|
|
@@ -541,6 +608,15 @@ export declare class MoviPlayer extends EventEmitter<PlayerEventMap> {
|
|
|
541
608
|
* Converts buffer start bytes to time position using current read position as reference
|
|
542
609
|
*/
|
|
543
610
|
getBufferStartTime(): number;
|
|
611
|
+
/**
|
|
612
|
+
* Lowest time a backward seek can SAFELY land in linear (non-range) playback.
|
|
613
|
+
* The window starts at getBufferStartTime, but a seek's keyframe sits at a
|
|
614
|
+
* lower byte than the linear time→byte estimate (GOP span + VBR), so seeking
|
|
615
|
+
* right at the window edge usually reads just below it and fails. Pad the
|
|
616
|
+
* start by a byte safety margin so the keyframe stays inside the RAM window.
|
|
617
|
+
* Returns 0 for seekable (range-capable) or non-HTTP sources.
|
|
618
|
+
*/
|
|
619
|
+
getSeekableStartTime(): number;
|
|
544
620
|
/**
|
|
545
621
|
* Get buffer end time in seconds (for HttpSource)
|
|
546
622
|
* Same as getBufferedTime but more explicit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoviPlayer.d.ts","sourceRoot":"","sources":["../../src/core/MoviPlayer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EAEV,aAAa,EAId,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"MoviPlayer.d.ts","sourceRoot":"","sources":["../../src/core/MoviPlayer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EAEV,aAAa,EAId,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAuBnD,qBAAa,UAAW,SAAQ,YAAY,CAAC,cAAc,CAAC;IAM1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CASlC;IAEL,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAwB;IAGvC,OAAO,CAAC,aAAa,CAAiC;IAItD,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,sBAAsB,CAAuB;IAKrD,OAAO,CAAC,2BAA2B,CAAkB;IACrD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,gBAAgB,CAAc;IAGtC,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,iBAAiB,CAAuB;IACzC,YAAY,EAAE,YAAY,CAAC;IAClC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,eAAe;IAmBvB,iFAAiF;IACjF,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,aAAa,CAA+B;IAKpD,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,gBAAgB,CAAkB;IAK1C,OAAO,CAAC,QAAQ,CAA4B;IAK5C,OAAO,CAAC,aAAa,CAA8B;IAGnD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,YAAY,CAAkB;IAKtC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,wBAAwB,CAAkB;IAClD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,mBAAmB,CAAa;IAGxC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,QAAQ,CAAiC;IAGjD,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAMrD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAO/C,OAAO,CAAC,6BAA6B,CAAkB;IAKvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAO;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAO;IAKpD,OAAO,CAAC,cAAc,CAAc;IAGpC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,mBAAmB,CAInB;IAOR,OAAO,CAAC,uBAAuB,CAAgB;IAG/C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;IAO9B,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAKrD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAO;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAQ;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAO;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;gBAE7C,MAAM,EAAE,YAAY;IAwQhC;;OAEG;IACG,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA+OtD;;OAEG;YACW,YAAY;IAoC1B;;OAEG;YACW,iBAAiB;IAgJ/B;;;;;;;;;;;OAWG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;YAIjB,SAAS;IAgFvB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmR3B;;;;;OAKG;YACW,mBAAmB;IAoCjC;;OAEG;IACH,KAAK,IAAI,IAAI;IA0Db;;OAEG;IACH,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,sBAAsB,CAAa;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAS;IAC9C,OAAO,CAAC,UAAU,CAAS;IAM3B,OAAO,CAAC,QAAQ,CAAK;IAErB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoM5B;;OAEG;IACH,OAAO,CAAC,WAAW,CAmzBjB;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW;IAqDnB;;OAEG;IACH,OAAO,CAAC,aAAa,CAAK;IAI1B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,oBAAoB,CAAS;IASrC,mBAAmB,UAAS;IAEtB,IAAI,CACR,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAqNhB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;OAEG;IAEH;;;OAGG;IACH;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA+azD;;;;;OAKG;IACG,gBAAgB,CACpB,KAAK,GAAE,MAAU,EACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC5E,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;YAmBjC,mBAAmB;IAkJjC,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,SAAS,IAAI,KAAK,EAAE;IAIpB;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAIpC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IA6HnE;;OAEG;IACH,cAAc,IAAI,MAAM;IAcxB;;;;;;;;OAQG;IACH,0BAA0B,IAAI,IAAI;IAgBlC;;OAEG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,aAAa,IAAI;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB;IASD;;;;OAIG;IACH,mBAAmB,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IA+B5D;;OAEG;IACH,QAAQ,IAAI,WAAW;IAOvB;;;;;;;;;;OAUG;IACH,kBAAkB,IAAI,OAAO;IAY7B;;OAEG;IACH;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;KACzC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjB,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,6BAA6B,IAAI,MAAM,GAAG,IAAI;IAO9C,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,kBAAkB,IAAI,gBAAgB,GAAG,IAAI;IAK7C;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAInE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAajD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAerC;;OAEG;IACH,cAAc,IAAI,OAAO;IAOzB;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAMrD;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjD;;OAEG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAInC,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;IASzE,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAMxD;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA+DnC;;;OAGG;IACH;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,gBAAgB;IA6FxB,iFAAiF;IACjF,OAAO,CAAC,0BAA0B;IASlC;;;;;;;OAOG;IACH,kBAAkB,IAAI,gBAAgB,GAAG,IAAI;IAe7C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAe5C;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE;IAQnE;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAqBtC;;;OAGG;IACH,aAAa,IAAI,IAAI;IA4BrB,gDAAgD;IAChD,mBAAmB,IAAI,OAAO;IAI9B,4FAA4F;IAC5F,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,gBAAgB,IAAI,OAAO;IAQ3B,6EAA6E;IAC7E,YAAY,IAAI,OAAO;IAKvB,2EAA2E;IAC3E,iBAAiB,IAAI,OAAO;IAI5B,4DAA4D;IAC5D,WAAW,IAAI,MAAM;IAIrB,sDAAsD;IACtD,iBAAiB,IAAI,MAAM;IAI3B,8CAA8C;IAC9C,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE;IAQtE;;;;OAIG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAoD/D,wCAAwC;IACxC,OAAO,CAAC,QAAQ;IAqBhB,wCAAwC;IACxC,OAAO,CAAC,QAAQ;IAKhB,oEAAoE;IACpE,OAAO,CAAC,sBAAsB;IAqB9B,uCAAuC;IACvC,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,eAAe,IAAI,MAAM;IAOzB;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAcvC,6CAA6C;IAC7C,gBAAgB,IAAI,MAAM;IAI1B;;;;;;OAMG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAenF;;;;;;OAMG;YACW,4BAA4B;IA4G1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAOnB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAoC9B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAItC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAoIrD;;;OAGG;IACH,eAAe,IAAI,MAAM;IAgBzB;;OAEG;IACH,YAAY,IAAI,OAAO;IAKvB;;;;;OAKG;IACH,gBAAgB,IAAI,OAAO;IAK3B;;;;;;OAMG;IACH,uBAAuB,IAAI,OAAO;IAUlC,wDAAwD;IACxD,WAAW,IAAI,OAAO;IAItB;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA+CpC;;;OAGG;IACH,2BAA2B,IAAI,OAAO;IAKtC;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,OAAO;IAIhC;;OAEG;YACW,eAAe;IAsD7B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,mBAAmB,CASzB;IAEF;;OAEG;IACH,qDAAqD;IAC9C,WAAW,EAAE,OAAO,CAAS;IAEpC,OAAO,CAAC,sBAAsB,CAoK5B;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4C5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,eAAe,CAyFrB;IAEF;;OAEG;YACW,eAAe;IAa7B;;;OAGG;IACH,eAAe,IAAI,MAAM;IA4DzB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUzC;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAO7B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;;OAGG;IACH,kBAAkB,IAAI,MAAM;IAoB5B;;;;;;;OAOG;IACH,oBAAoB,IAAI,MAAM;IAiB9B;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,SAAS,IAAI,aAAa,GAAG,IAAI;IAIjC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMzC;;;OAGG;IACH;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;;;;OAKG;IACH,WAAW,IAAI,WAAW,GAAG,IAAI;IAIjC;;;;;;;;;;;;;;OAcG;YACW,eAAe;IAqE7B;;OAEG;IACH,OAAO,IAAI,IAAI;CAkFhB"}
|