@yume-chan/scrcpy-decoder-webcodecs 0.0.22 → 0.0.23
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/CHANGELOG.json +15 -0
- package/CHANGELOG.md +9 -1
- package/esm/bitmap.d.ts +7 -0
- package/esm/bitmap.d.ts.map +1 -0
- package/esm/bitmap.js +17 -0
- package/esm/bitmap.js.map +1 -0
- package/esm/index.d.ts +4 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +35 -16
- package/esm/index.js.map +1 -1
- package/esm/renderer.d.ts +4 -0
- package/esm/renderer.d.ts.map +1 -0
- package/esm/renderer.js +2 -0
- package/esm/renderer.js.map +1 -0
- package/esm/webgl.d.ts +9 -0
- package/esm/webgl.d.ts.map +1 -0
- package/esm/webgl.js +80 -0
- package/esm/webgl.js.map +1 -0
- package/package.json +11 -10
- package/src/bitmap.ts +24 -0
- package/src/index.ts +42 -16
- package/src/renderer.ts +3 -0
- package/src/webgl.ts +107 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/scrcpy-decoder-webcodecs",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.0.23",
|
|
6
|
+
"tag": "@yume-chan/scrcpy-decoder-webcodecs_v0.0.23",
|
|
7
|
+
"date": "Thu, 21 Mar 2024 03:15:10 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"none": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Add `sizeChanged` event"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"comment": "Add WebGL and Bitmap based video renderers, which are 1.5 to 3 times faster on Android devices"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
4
19
|
{
|
|
5
20
|
"version": "0.0.22",
|
|
6
21
|
"tag": "@yume-chan/scrcpy-decoder-webcodecs_v0.0.22",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# Change Log - @yume-chan/scrcpy-decoder-webcodecs
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 21 Mar 2024 03:15:10 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.0.23
|
|
6
|
+
Thu, 21 Mar 2024 03:15:10 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Add `sizeChanged` event
|
|
11
|
+
- Add WebGL and Bitmap based video renderers, which are 1.5 to 3 times faster on Android devices
|
|
4
12
|
|
|
5
13
|
## 0.0.22
|
|
6
14
|
Wed, 13 Dec 2023 05:57:27 GMT
|
package/esm/bitmap.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmap.d.ts","sourceRoot":"","sources":["../src/bitmap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qBAAa,mBAAoB,YAAW,aAAa;;gBAGzC,MAAM,EAAE,iBAAiB;IAIrC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAchC"}
|
package/esm/bitmap.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class BitmapFrameRenderer {
|
|
2
|
+
#context;
|
|
3
|
+
constructor(canvas) {
|
|
4
|
+
this.#context = canvas.getContext("bitmaprenderer", { alpha: false });
|
|
5
|
+
}
|
|
6
|
+
draw(frame) {
|
|
7
|
+
createImageBitmap(frame)
|
|
8
|
+
.then((bitmap) => {
|
|
9
|
+
this.#context.transferFromImageBitmap(bitmap);
|
|
10
|
+
frame.close();
|
|
11
|
+
})
|
|
12
|
+
.catch((e) => {
|
|
13
|
+
console.warn("[@yume-chan/scrcpy-decoder-webcodecs]", "VideoDecoder error", e);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=bitmap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitmap.js","sourceRoot":"","sources":["../src/bitmap.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IAC5B,QAAQ,CAA8B;IAEtC,YAAY,MAAyB;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAE,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,KAAiB;QAClB,iBAAiB,CAAC,KAAK,CAAC;aACnB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC9C,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,OAAO,CAAC,IAAI,CACR,uCAAuC,EACvC,oBAAoB,EACpB,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;CACJ"}
|
package/esm/index.d.ts
CHANGED
|
@@ -11,6 +11,10 @@ export declare class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
11
11
|
get renderer(): HTMLCanvasElement;
|
|
12
12
|
get frameRendered(): number;
|
|
13
13
|
get frameSkipped(): number;
|
|
14
|
+
get sizeChanged(): import("@yume-chan/event").AddEventListener<{
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}, unknown>;
|
|
14
18
|
constructor(codec: ScrcpyVideoCodecId);
|
|
15
19
|
dispose(): void;
|
|
16
20
|
}
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAER,uBAAuB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,kBAAkB,EAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACR,kBAAkB,EAClB,4BAA4B,EAC/B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAmBzD,qBAAa,gBAAiB,YAAW,kBAAkB;;IACvD,MAAM,CAAC,WAAW;IAIlB,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAIpE;IAGN,IAAI,KAAK,uBAER;IAGD,IAAI,QAAQ,4CAEX;IAGD,IAAI,QAAQ,sBAEX;IAGD,IAAI,aAAa,WAEhB;IAGD,IAAI,YAAY,WAEf;IAGD,IAAI,WAAW;;;gBAEd;gBASW,KAAK,EAAE,kBAAkB;IA+JrC,OAAO;CAMV"}
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { EventEmitter } from "@yume-chan/event";
|
|
1
2
|
import { ScrcpyVideoCodecId, h264ParseConfiguration, h265ParseConfiguration, } from "@yume-chan/scrcpy";
|
|
2
3
|
import { WritableStream } from "@yume-chan/stream-extra";
|
|
4
|
+
import { BitmapFrameRenderer } from "./bitmap.js";
|
|
5
|
+
import { WebGLFrameRenderer } from "./webgl.js";
|
|
3
6
|
function toHex(value) {
|
|
4
7
|
return value.toString(16).padStart(2, "0").toUpperCase();
|
|
5
8
|
}
|
|
@@ -25,9 +28,9 @@ export class WebCodecsDecoder {
|
|
|
25
28
|
get writable() {
|
|
26
29
|
return this.#writable;
|
|
27
30
|
}
|
|
28
|
-
#
|
|
31
|
+
#canvas;
|
|
29
32
|
get renderer() {
|
|
30
|
-
return this.#
|
|
33
|
+
return this.#canvas;
|
|
31
34
|
}
|
|
32
35
|
#frameRendered = 0;
|
|
33
36
|
get frameRendered() {
|
|
@@ -37,35 +40,43 @@ export class WebCodecsDecoder {
|
|
|
37
40
|
get frameSkipped() {
|
|
38
41
|
return this.#frameSkipped;
|
|
39
42
|
}
|
|
40
|
-
#
|
|
43
|
+
#sizeChanged = new EventEmitter();
|
|
44
|
+
get sizeChanged() {
|
|
45
|
+
return this.#sizeChanged.event;
|
|
46
|
+
}
|
|
41
47
|
#decoder;
|
|
42
48
|
#config;
|
|
49
|
+
#renderer;
|
|
43
50
|
#currentFrameRendered = false;
|
|
44
51
|
#animationFrameId = 0;
|
|
45
52
|
constructor(codec) {
|
|
46
53
|
this.#codec = codec;
|
|
47
|
-
this.#
|
|
48
|
-
|
|
54
|
+
this.#canvas = document.createElement("canvas");
|
|
55
|
+
try {
|
|
56
|
+
this.#renderer = new WebGLFrameRenderer(this.#canvas);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
this.#renderer = new BitmapFrameRenderer(this.#canvas);
|
|
60
|
+
}
|
|
49
61
|
this.#decoder = new VideoDecoder({
|
|
50
62
|
output: (frame) => {
|
|
51
63
|
if (this.#currentFrameRendered) {
|
|
52
|
-
this.#
|
|
64
|
+
this.#frameRendered += 1;
|
|
53
65
|
}
|
|
54
66
|
else {
|
|
55
|
-
this.#
|
|
56
|
-
this.#frameRendered += 1;
|
|
67
|
+
this.#frameSkipped += 1;
|
|
57
68
|
}
|
|
69
|
+
this.#currentFrameRendered = false;
|
|
58
70
|
// PERF: H.264 renderer may draw multiple frames in one vertical sync interval to minimize latency.
|
|
59
71
|
// When multiple frames are drawn in one vertical sync interval,
|
|
60
72
|
// only the last one is visible to users.
|
|
61
73
|
// But this ensures users can always see the most up-to-date screen.
|
|
62
74
|
// This is also the behavior of official Scrcpy client.
|
|
63
75
|
// https://github.com/Genymobile/scrcpy/issues/3679
|
|
64
|
-
this.#
|
|
65
|
-
frame.close();
|
|
76
|
+
this.#renderer.draw(frame);
|
|
66
77
|
},
|
|
67
78
|
error(e) {
|
|
68
|
-
|
|
79
|
+
console.warn("[@yume-chan/scrcpy-decoder-webcodecs]", "VideoDecoder error", e);
|
|
69
80
|
},
|
|
70
81
|
});
|
|
71
82
|
this.#writable = new WritableStream({
|
|
@@ -83,15 +94,19 @@ export class WebCodecsDecoder {
|
|
|
83
94
|
this.#onFramePresented();
|
|
84
95
|
}
|
|
85
96
|
#onFramePresented = () => {
|
|
86
|
-
this.#currentFrameRendered =
|
|
97
|
+
this.#currentFrameRendered = true;
|
|
87
98
|
this.#animationFrameId = requestAnimationFrame(this.#onFramePresented);
|
|
88
99
|
};
|
|
89
100
|
#configure(data) {
|
|
90
101
|
switch (this.#codec) {
|
|
91
102
|
case ScrcpyVideoCodecId.H264: {
|
|
92
103
|
const { profileIndex, constraintSet, levelIndex, croppedWidth, croppedHeight, } = h264ParseConfiguration(data);
|
|
93
|
-
this.#
|
|
94
|
-
this.#
|
|
104
|
+
this.#canvas.width = croppedWidth;
|
|
105
|
+
this.#canvas.height = croppedHeight;
|
|
106
|
+
this.#sizeChanged.fire({
|
|
107
|
+
width: croppedWidth,
|
|
108
|
+
height: croppedHeight,
|
|
109
|
+
});
|
|
95
110
|
// https://www.rfc-editor.org/rfc/rfc6381#section-3.3
|
|
96
111
|
// ISO Base Media File Format Name Space
|
|
97
112
|
const codec = `avc1.${[profileIndex, constraintSet, levelIndex]
|
|
@@ -105,8 +120,12 @@ export class WebCodecsDecoder {
|
|
|
105
120
|
}
|
|
106
121
|
case ScrcpyVideoCodecId.H265: {
|
|
107
122
|
const { generalProfileSpace, generalProfileIndex, generalProfileCompatibilitySet, generalTierFlag, generalLevelIndex, generalConstraintSet, croppedWidth, croppedHeight, } = h265ParseConfiguration(data);
|
|
108
|
-
this.#
|
|
109
|
-
this.#
|
|
123
|
+
this.#canvas.width = croppedWidth;
|
|
124
|
+
this.#canvas.height = croppedHeight;
|
|
125
|
+
this.#sizeChanged.fire({
|
|
126
|
+
width: croppedWidth,
|
|
127
|
+
height: croppedHeight,
|
|
128
|
+
});
|
|
110
129
|
const codec = [
|
|
111
130
|
"hev1",
|
|
112
131
|
["", "A", "B", "C"][generalProfileSpace] +
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACjC"}
|
package/esm/renderer.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":""}
|
package/esm/webgl.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FrameRenderer } from "./renderer.js";
|
|
2
|
+
export declare class WebGLFrameRenderer implements FrameRenderer {
|
|
3
|
+
#private;
|
|
4
|
+
static vertexShaderSource: string;
|
|
5
|
+
static fragmentShaderSource: string;
|
|
6
|
+
constructor(canvas: HTMLCanvasElement);
|
|
7
|
+
draw(frame: VideoFrame): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=webgl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl.d.ts","sourceRoot":"","sources":["../src/webgl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,qBAAa,kBAAmB,YAAW,aAAa;;IACpD,MAAM,CAAC,kBAAkB,SAW3B;IAEE,MAAM,CAAC,oBAAoB,SAQ7B;gBAIc,MAAM,EAAE,iBAAiB;IA+DrC,IAAI,CAAC,KAAK,EAAE,UAAU;CAezB"}
|
package/esm/webgl.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export class WebGLFrameRenderer {
|
|
2
|
+
static vertexShaderSource = `
|
|
3
|
+
attribute vec2 xy;
|
|
4
|
+
|
|
5
|
+
varying highp vec2 uv;
|
|
6
|
+
|
|
7
|
+
void main(void) {
|
|
8
|
+
gl_Position = vec4(xy, 0.0, 1.0);
|
|
9
|
+
// Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).
|
|
10
|
+
// UV coordinates are Y-flipped relative to vertex coordinates.
|
|
11
|
+
uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
static fragmentShaderSource = `
|
|
15
|
+
varying highp vec2 uv;
|
|
16
|
+
|
|
17
|
+
uniform sampler2D texture;
|
|
18
|
+
|
|
19
|
+
void main(void) {
|
|
20
|
+
gl_FragColor = texture2D(texture, uv);
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
#context;
|
|
24
|
+
constructor(canvas) {
|
|
25
|
+
const gl = canvas.getContext("webgl2", {
|
|
26
|
+
alpha: false,
|
|
27
|
+
failIfMajorPerformanceCaveat: true,
|
|
28
|
+
}) ||
|
|
29
|
+
canvas.getContext("webgl", {
|
|
30
|
+
alpha: false,
|
|
31
|
+
failIfMajorPerformanceCaveat: true,
|
|
32
|
+
});
|
|
33
|
+
if (!gl) {
|
|
34
|
+
throw new Error("WebGL not supported");
|
|
35
|
+
}
|
|
36
|
+
this.#context = gl;
|
|
37
|
+
const vertexShader = gl.createShader(gl.VERTEX_SHADER);
|
|
38
|
+
gl.shaderSource(vertexShader, WebGLFrameRenderer.vertexShaderSource);
|
|
39
|
+
gl.compileShader(vertexShader);
|
|
40
|
+
if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {
|
|
41
|
+
throw new Error(gl.getShaderInfoLog(vertexShader));
|
|
42
|
+
}
|
|
43
|
+
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
|
|
44
|
+
gl.shaderSource(fragmentShader, WebGLFrameRenderer.fragmentShaderSource);
|
|
45
|
+
gl.compileShader(fragmentShader);
|
|
46
|
+
if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {
|
|
47
|
+
throw new Error(gl.getShaderInfoLog(fragmentShader));
|
|
48
|
+
}
|
|
49
|
+
const shaderProgram = gl.createProgram();
|
|
50
|
+
gl.attachShader(shaderProgram, vertexShader);
|
|
51
|
+
gl.attachShader(shaderProgram, fragmentShader);
|
|
52
|
+
gl.linkProgram(shaderProgram);
|
|
53
|
+
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
54
|
+
throw new Error(gl.getProgramInfoLog(shaderProgram));
|
|
55
|
+
}
|
|
56
|
+
gl.useProgram(shaderProgram);
|
|
57
|
+
// Vertex coordinates, clockwise from bottom-left.
|
|
58
|
+
const vertexBuffer = gl.createBuffer();
|
|
59
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
|
|
60
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1.0, -1.0, -1.0, +1.0, +1.0, +1.0, +1.0, -1.0]), gl.STATIC_DRAW);
|
|
61
|
+
const xyLocation = gl.getAttribLocation(shaderProgram, "xy");
|
|
62
|
+
gl.vertexAttribPointer(xyLocation, 2, gl.FLOAT, false, 0, 0);
|
|
63
|
+
gl.enableVertexAttribArray(xyLocation);
|
|
64
|
+
// Create one texture to upload frames to.
|
|
65
|
+
const texture = gl.createTexture();
|
|
66
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
67
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
68
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
69
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
70
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
71
|
+
}
|
|
72
|
+
draw(frame) {
|
|
73
|
+
const gl = this.#context;
|
|
74
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, frame);
|
|
75
|
+
frame.close();
|
|
76
|
+
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
|
|
77
|
+
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=webgl.js.map
|
package/esm/webgl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl.js","sourceRoot":"","sources":["../src/webgl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/scrcpy-decoder-webcodecs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "Raw H.264 stream decoder and renderer using WebCodecs API (requires modern browser).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -27,21 +27,22 @@
|
|
|
27
27
|
"main": "esm/index.js",
|
|
28
28
|
"types": "esm/index.d.ts",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@yume-chan/
|
|
31
|
-
"@yume-chan/scrcpy
|
|
32
|
-
"@yume-chan/
|
|
30
|
+
"@yume-chan/event": "^0.0.23",
|
|
31
|
+
"@yume-chan/scrcpy": "^0.0.23",
|
|
32
|
+
"@yume-chan/scrcpy-decoder-tinyh264": "^0.0.23",
|
|
33
|
+
"@yume-chan/stream-extra": "^0.0.23",
|
|
33
34
|
"tslib": "^2.6.2"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
|
-
"@jest/globals": "^
|
|
37
|
+
"@jest/globals": "^30.0.0-alpha.3",
|
|
37
38
|
"@yume-chan/eslint-config": "^1.0.0",
|
|
38
39
|
"@yume-chan/tsconfig": "^1.0.0",
|
|
39
40
|
"cross-env": "^7.0.3",
|
|
40
|
-
"eslint": "^8.
|
|
41
|
-
"jest": "^
|
|
42
|
-
"prettier": "^3.
|
|
43
|
-
"ts-jest": "^29.1.
|
|
44
|
-
"typescript": "^5.
|
|
41
|
+
"eslint": "^8.57.0",
|
|
42
|
+
"jest": "^30.0.0-alpha.3",
|
|
43
|
+
"prettier": "^3.2.5",
|
|
44
|
+
"ts-jest": "^29.1.2",
|
|
45
|
+
"typescript": "^5.4.2"
|
|
45
46
|
},
|
|
46
47
|
"scripts": {
|
|
47
48
|
"build": "tsc -b tsconfig.build.json",
|
package/src/bitmap.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FrameRenderer } from "./renderer.js";
|
|
2
|
+
|
|
3
|
+
export class BitmapFrameRenderer implements FrameRenderer {
|
|
4
|
+
#context: ImageBitmapRenderingContext;
|
|
5
|
+
|
|
6
|
+
constructor(canvas: HTMLCanvasElement) {
|
|
7
|
+
this.#context = canvas.getContext("bitmaprenderer", { alpha: false })!;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
draw(frame: VideoFrame): void {
|
|
11
|
+
createImageBitmap(frame)
|
|
12
|
+
.then((bitmap) => {
|
|
13
|
+
this.#context.transferFromImageBitmap(bitmap);
|
|
14
|
+
frame.close();
|
|
15
|
+
})
|
|
16
|
+
.catch((e) => {
|
|
17
|
+
console.warn(
|
|
18
|
+
"[@yume-chan/scrcpy-decoder-webcodecs]",
|
|
19
|
+
"VideoDecoder error",
|
|
20
|
+
e,
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EventEmitter } from "@yume-chan/event";
|
|
1
2
|
import type {
|
|
2
3
|
ScrcpyMediaStreamDataPacket,
|
|
3
4
|
ScrcpyMediaStreamPacket,
|
|
@@ -13,6 +14,10 @@ import type {
|
|
|
13
14
|
} from "@yume-chan/scrcpy-decoder-tinyh264";
|
|
14
15
|
import { WritableStream } from "@yume-chan/stream-extra";
|
|
15
16
|
|
|
17
|
+
import { BitmapFrameRenderer } from "./bitmap.js";
|
|
18
|
+
import type { FrameRenderer } from "./renderer.js";
|
|
19
|
+
import { WebGLFrameRenderer } from "./webgl.js";
|
|
20
|
+
|
|
16
21
|
function toHex(value: number) {
|
|
17
22
|
return value.toString(16).padStart(2, "0").toUpperCase();
|
|
18
23
|
}
|
|
@@ -47,9 +52,9 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
47
52
|
return this.#writable;
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
#
|
|
55
|
+
#canvas: HTMLCanvasElement;
|
|
51
56
|
get renderer() {
|
|
52
|
-
return this.#
|
|
57
|
+
return this.#canvas;
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
#frameRendered = 0;
|
|
@@ -62,9 +67,14 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
62
67
|
return this.#frameSkipped;
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
#
|
|
70
|
+
#sizeChanged = new EventEmitter<{ width: number; height: number }>();
|
|
71
|
+
get sizeChanged() {
|
|
72
|
+
return this.#sizeChanged.event;
|
|
73
|
+
}
|
|
74
|
+
|
|
66
75
|
#decoder: VideoDecoder;
|
|
67
76
|
#config: Uint8Array | undefined;
|
|
77
|
+
#renderer: FrameRenderer;
|
|
68
78
|
|
|
69
79
|
#currentFrameRendered = false;
|
|
70
80
|
#animationFrameId = 0;
|
|
@@ -72,17 +82,22 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
72
82
|
constructor(codec: ScrcpyVideoCodecId) {
|
|
73
83
|
this.#codec = codec;
|
|
74
84
|
|
|
75
|
-
this.#
|
|
85
|
+
this.#canvas = document.createElement("canvas");
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
this.#renderer = new WebGLFrameRenderer(this.#canvas);
|
|
89
|
+
} catch {
|
|
90
|
+
this.#renderer = new BitmapFrameRenderer(this.#canvas);
|
|
91
|
+
}
|
|
76
92
|
|
|
77
|
-
this.#context = this.#renderer.getContext("2d")!;
|
|
78
93
|
this.#decoder = new VideoDecoder({
|
|
79
94
|
output: (frame) => {
|
|
80
95
|
if (this.#currentFrameRendered) {
|
|
81
|
-
this.#frameSkipped += 1;
|
|
82
|
-
} else {
|
|
83
|
-
this.#currentFrameRendered = true;
|
|
84
96
|
this.#frameRendered += 1;
|
|
97
|
+
} else {
|
|
98
|
+
this.#frameSkipped += 1;
|
|
85
99
|
}
|
|
100
|
+
this.#currentFrameRendered = false;
|
|
86
101
|
|
|
87
102
|
// PERF: H.264 renderer may draw multiple frames in one vertical sync interval to minimize latency.
|
|
88
103
|
// When multiple frames are drawn in one vertical sync interval,
|
|
@@ -90,11 +105,14 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
90
105
|
// But this ensures users can always see the most up-to-date screen.
|
|
91
106
|
// This is also the behavior of official Scrcpy client.
|
|
92
107
|
// https://github.com/Genymobile/scrcpy/issues/3679
|
|
93
|
-
this.#
|
|
94
|
-
frame.close();
|
|
108
|
+
this.#renderer.draw(frame);
|
|
95
109
|
},
|
|
96
110
|
error(e) {
|
|
97
|
-
|
|
111
|
+
console.warn(
|
|
112
|
+
"[@yume-chan/scrcpy-decoder-webcodecs]",
|
|
113
|
+
"VideoDecoder error",
|
|
114
|
+
e,
|
|
115
|
+
);
|
|
98
116
|
},
|
|
99
117
|
});
|
|
100
118
|
|
|
@@ -115,7 +133,7 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
115
133
|
}
|
|
116
134
|
|
|
117
135
|
#onFramePresented = () => {
|
|
118
|
-
this.#currentFrameRendered =
|
|
136
|
+
this.#currentFrameRendered = true;
|
|
119
137
|
this.#animationFrameId = requestAnimationFrame(this.#onFramePresented);
|
|
120
138
|
};
|
|
121
139
|
|
|
@@ -130,8 +148,12 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
130
148
|
croppedHeight,
|
|
131
149
|
} = h264ParseConfiguration(data);
|
|
132
150
|
|
|
133
|
-
this.#
|
|
134
|
-
this.#
|
|
151
|
+
this.#canvas.width = croppedWidth;
|
|
152
|
+
this.#canvas.height = croppedHeight;
|
|
153
|
+
this.#sizeChanged.fire({
|
|
154
|
+
width: croppedWidth,
|
|
155
|
+
height: croppedHeight,
|
|
156
|
+
});
|
|
135
157
|
|
|
136
158
|
// https://www.rfc-editor.org/rfc/rfc6381#section-3.3
|
|
137
159
|
// ISO Base Media File Format Name Space
|
|
@@ -156,8 +178,12 @@ export class WebCodecsDecoder implements ScrcpyVideoDecoder {
|
|
|
156
178
|
croppedHeight,
|
|
157
179
|
} = h265ParseConfiguration(data);
|
|
158
180
|
|
|
159
|
-
this.#
|
|
160
|
-
this.#
|
|
181
|
+
this.#canvas.width = croppedWidth;
|
|
182
|
+
this.#canvas.height = croppedHeight;
|
|
183
|
+
this.#sizeChanged.fire({
|
|
184
|
+
width: croppedWidth,
|
|
185
|
+
height: croppedHeight,
|
|
186
|
+
});
|
|
161
187
|
|
|
162
188
|
const codec = [
|
|
163
189
|
"hev1",
|
package/src/renderer.ts
ADDED
package/src/webgl.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { FrameRenderer } from "./renderer.js";
|
|
2
|
+
|
|
3
|
+
export class WebGLFrameRenderer implements FrameRenderer {
|
|
4
|
+
static vertexShaderSource = `
|
|
5
|
+
attribute vec2 xy;
|
|
6
|
+
|
|
7
|
+
varying highp vec2 uv;
|
|
8
|
+
|
|
9
|
+
void main(void) {
|
|
10
|
+
gl_Position = vec4(xy, 0.0, 1.0);
|
|
11
|
+
// Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).
|
|
12
|
+
// UV coordinates are Y-flipped relative to vertex coordinates.
|
|
13
|
+
uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
static fragmentShaderSource = `
|
|
18
|
+
varying highp vec2 uv;
|
|
19
|
+
|
|
20
|
+
uniform sampler2D texture;
|
|
21
|
+
|
|
22
|
+
void main(void) {
|
|
23
|
+
gl_FragColor = texture2D(texture, uv);
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
#context: WebGLRenderingContext;
|
|
28
|
+
|
|
29
|
+
constructor(canvas: HTMLCanvasElement) {
|
|
30
|
+
const gl =
|
|
31
|
+
canvas.getContext("webgl2", {
|
|
32
|
+
alpha: false,
|
|
33
|
+
failIfMajorPerformanceCaveat: true,
|
|
34
|
+
}) ||
|
|
35
|
+
canvas.getContext("webgl", {
|
|
36
|
+
alpha: false,
|
|
37
|
+
failIfMajorPerformanceCaveat: true,
|
|
38
|
+
});
|
|
39
|
+
if (!gl) {
|
|
40
|
+
throw new Error("WebGL not supported");
|
|
41
|
+
}
|
|
42
|
+
this.#context = gl;
|
|
43
|
+
|
|
44
|
+
const vertexShader = gl.createShader(gl.VERTEX_SHADER)!;
|
|
45
|
+
gl.shaderSource(vertexShader, WebGLFrameRenderer.vertexShaderSource);
|
|
46
|
+
gl.compileShader(vertexShader);
|
|
47
|
+
if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {
|
|
48
|
+
throw new Error(gl.getShaderInfoLog(vertexShader)!);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER)!;
|
|
52
|
+
gl.shaderSource(
|
|
53
|
+
fragmentShader,
|
|
54
|
+
WebGLFrameRenderer.fragmentShaderSource,
|
|
55
|
+
);
|
|
56
|
+
gl.compileShader(fragmentShader);
|
|
57
|
+
if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {
|
|
58
|
+
throw new Error(gl.getShaderInfoLog(fragmentShader)!);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const shaderProgram = gl.createProgram()!;
|
|
62
|
+
gl.attachShader(shaderProgram, vertexShader);
|
|
63
|
+
gl.attachShader(shaderProgram, fragmentShader);
|
|
64
|
+
gl.linkProgram(shaderProgram);
|
|
65
|
+
if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
|
|
66
|
+
throw new Error(gl.getProgramInfoLog(shaderProgram)!);
|
|
67
|
+
}
|
|
68
|
+
gl.useProgram(shaderProgram);
|
|
69
|
+
|
|
70
|
+
// Vertex coordinates, clockwise from bottom-left.
|
|
71
|
+
const vertexBuffer = gl.createBuffer();
|
|
72
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
|
|
73
|
+
gl.bufferData(
|
|
74
|
+
gl.ARRAY_BUFFER,
|
|
75
|
+
new Float32Array([-1.0, -1.0, -1.0, +1.0, +1.0, +1.0, +1.0, -1.0]),
|
|
76
|
+
gl.STATIC_DRAW,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
const xyLocation = gl.getAttribLocation(shaderProgram, "xy");
|
|
80
|
+
gl.vertexAttribPointer(xyLocation, 2, gl.FLOAT, false, 0, 0);
|
|
81
|
+
gl.enableVertexAttribArray(xyLocation);
|
|
82
|
+
|
|
83
|
+
// Create one texture to upload frames to.
|
|
84
|
+
const texture = gl.createTexture();
|
|
85
|
+
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
86
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
87
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
88
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
89
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
draw(frame: VideoFrame) {
|
|
93
|
+
const gl = this.#context;
|
|
94
|
+
gl.texImage2D(
|
|
95
|
+
gl.TEXTURE_2D,
|
|
96
|
+
0,
|
|
97
|
+
gl.RGBA,
|
|
98
|
+
gl.RGBA,
|
|
99
|
+
gl.UNSIGNED_BYTE,
|
|
100
|
+
frame,
|
|
101
|
+
);
|
|
102
|
+
frame.close();
|
|
103
|
+
|
|
104
|
+
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
|
|
105
|
+
gl.drawArrays(gl.TRIANGLE_FAN, 0, 4);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2016.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2021.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2023.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.esnext.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.dom.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2023.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.decorators.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../common/temp/node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.d.ts","../../common/temp/node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/modules/index.d.ts","../scrcpy/esm/codec/av1.d.ts","../scrcpy/esm/codec/h264.d.ts","../scrcpy/esm/codec/nalu.d.ts","../scrcpy/esm/codec/h265.d.ts","../scrcpy/esm/codec/index.d.ts","../struct/esm/basic/options.d.ts","../struct/esm/basic/struct-value.d.ts","../struct/esm/basic/field-value.d.ts","../struct/esm/utils.d.ts","../struct/esm/basic/stream.d.ts","../struct/esm/basic/definition.d.ts","../struct/esm/basic/index.d.ts","../struct/esm/types/bigint.d.ts","../struct/esm/types/buffer/base.d.ts","../struct/esm/types/buffer/fixed-length.d.ts","../struct/esm/types/buffer/variable-length.d.ts","../struct/esm/types/buffer/index.d.ts","../struct/esm/types/number.d.ts","../struct/esm/types/index.d.ts","../struct/esm/struct.d.ts","../struct/esm/sync-promise.d.ts","../struct/esm/index.d.ts","../../common/temp/node_modules/.pnpm/web-streams-polyfill@4.0.0-beta.3/node_modules/web-streams-polyfill/types/ponyfill.d.ts","../stream-extra/esm/stream.d.ts","../stream-extra/esm/buffered.d.ts","../stream-extra/esm/buffered-transform.d.ts","../stream-extra/esm/concat.d.ts","../stream-extra/esm/consumable.d.ts","../stream-extra/esm/decode-utf8.d.ts","../stream-extra/esm/distribution.d.ts","../stream-extra/esm/wrap-readable.d.ts","../stream-extra/esm/duplex.d.ts","../stream-extra/esm/inspect.d.ts","../stream-extra/esm/pipe-from.d.ts","../stream-extra/esm/push-readable.d.ts","../stream-extra/esm/split-string.d.ts","../stream-extra/esm/struct-deserialize.d.ts","../stream-extra/esm/struct-serialize.d.ts","../stream-extra/esm/wrap-writable.d.ts","../stream-extra/esm/index.d.ts","../scrcpy/esm/options/1_16/scroll.d.ts","../scrcpy/esm/options/codec.d.ts","../scrcpy/esm/options/types.d.ts","../scrcpy/esm/options/1_16/codec-options.d.ts","../scrcpy/esm/options/1_16/float-to-uint16.d.ts","../scrcpy/esm/options/1_16/init.d.ts","../scrcpy/esm/options/1_16/message.d.ts","../scrcpy/esm/options/1_16/options.d.ts","../scrcpy/esm/options/1_16/index.d.ts","../scrcpy/esm/options/1_17.d.ts","../scrcpy/esm/options/1_18.d.ts","../scrcpy/esm/options/1_21.d.ts","../scrcpy/esm/options/1_22/init.d.ts","../scrcpy/esm/options/1_22/options.d.ts","../scrcpy/esm/options/1_22/scroll.d.ts","../scrcpy/esm/options/1_22/index.d.ts","../scrcpy/esm/options/1_23.d.ts","../scrcpy/esm/options/1_24.d.ts","../scrcpy/esm/options/1_25/options.d.ts","../scrcpy/esm/options/1_25/scroll.d.ts","../scrcpy/esm/options/1_25/index.d.ts","../scrcpy/esm/options/2_0.d.ts","../scrcpy/esm/options/2_1.d.ts","../scrcpy/esm/options/2_2.d.ts","../scrcpy/esm/options/latest.d.ts","../scrcpy/esm/options/index.d.ts","../scrcpy/esm/control/back-or-screen-on.d.ts","../scrcpy/esm/control/basic.d.ts","../scrcpy/esm/control/inject-touch.d.ts","../scrcpy/esm/control/hover-helper.d.ts","../scrcpy/esm/control/inject-keycode.d.ts","../scrcpy/esm/control/inject-scroll.d.ts","../scrcpy/esm/control/inject-text.d.ts","../scrcpy/esm/control/rotate-device.d.ts","../scrcpy/esm/control/set-screen-power-mode.d.ts","../scrcpy/esm/control/serializer.d.ts","../scrcpy/esm/control/set-clipboard.d.ts","../scrcpy/esm/control/type.d.ts","../scrcpy/esm/control/writer.d.ts","../scrcpy/esm/control/index.d.ts","../scrcpy/esm/device-message/type.d.ts","../scrcpy/esm/device-message/ack-clipboard.d.ts","../scrcpy/esm/device-message/clipboard.d.ts","../scrcpy/esm/device-message/stream.d.ts","../scrcpy/esm/device-message/index.d.ts","../scrcpy/esm/index.d.ts","../event/esm/disposable.d.ts","../event/esm/event.d.ts","../event/esm/event-emitter.d.ts","../event/esm/utils.d.ts","../event/esm/index.d.ts","../scrcpy-decoder-tinyh264/esm/types.d.ts","../scrcpy-decoder-tinyh264/esm/decoder.d.ts","../scrcpy-decoder-tinyh264/esm/wrapper.d.ts","../scrcpy-decoder-tinyh264/esm/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","impliedFormat":1},{"version":"bed7b7ba0eb5a160b69af72814b4dde371968e40b6c5e73d3a9f7bee407d158c","impliedFormat":1},{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true,"impliedFormat":1},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true,"impliedFormat":1},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true,"impliedFormat":1},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true,"impliedFormat":1},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true,"impliedFormat":1},{"version":"4350e5922fecd4bedda2964d69c213a1436349d0b8d260dd902795f5b94dc74b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","impliedFormat":1},{"version":"31973b272be35eab5ecf20a38ea54bec84cdc0317117590cb813c72fe0ef75b3","impliedFormat":99},{"version":"ad324e6170d0e050a2681b9f6e7bb93d5c84240df5b513db656331fab3f238a6","impliedFormat":99},{"version":"8ba25a7b32fa40a6aad84745006f198b725c9c8013574df36505dbb4d098d92f","impliedFormat":99},{"version":"e87104e6d7ad32243163934f20940162c104eaaaddfafe5267e219991bbdd00b","impliedFormat":99},{"version":"4d7dc3c4b187c585b3328077821638ec38bb68454f331809fd977030178da96e","impliedFormat":99},{"version":"8dcee60e0ce1d2b35cb1ada17420565cd6a5307ae280f62b3d92e10fd344aebc","impliedFormat":99},{"version":"7ceac7d7800ef7065908464aba0a009e9a03ff95f177a44f999687bdf10d039f","impliedFormat":99},{"version":"6043ab81faab77b975cb2a8457cc28c3b6f90a766cbbd27914da686bc41c83a0","impliedFormat":99},{"version":"613051be0c04c0fadf883f5ec01dcb0a4639ac92d9e2c12a222680c91b374595","impliedFormat":99},{"version":"a740a1e2d889fc4344fbb49a7f8b02ee664850be5cdcf029ace8ceb4316623db","impliedFormat":99},{"version":"ffe3c0472cf0ad60edbf5037319135c645bd92e7acbf403d72101df3598258e0","impliedFormat":99},{"version":"64ebe41006e87ea8b5e9b3acf048018b5226c4b08c6575526a76f6801143bf90","impliedFormat":99},{"version":"5af3b8b1a9063e033fc1e32a3e95956f5f5e22548d5ccca628b1ab87e42087d1","impliedFormat":99},{"version":"2414e378fb9e46fe36d8a0f4fb7af126441078299c03a46096713b03a5f6571d","impliedFormat":99},{"version":"1ed47fe653ec1bbcbd8ed241873938642755f2917f9e9a2e78daef11519f0745","impliedFormat":99},{"version":"4e74287ad61c1544e88339e78a4da19cb79c729be8799b8cd190353368532e30","impliedFormat":99},{"version":"21a136c72551be7c24d797d4fa1401d35ee62325bec7442a6869cea50a50ad7a","impliedFormat":99},{"version":"5ea1325a998e722fffc89ff8c2d00eaf35e491f3fada16fb56c6360f63d16d79","impliedFormat":99},{"version":"2f50c2700b3397c9961c1e14b903d0ff1120e064755603740cecdcdf3b05d20f","impliedFormat":99},{"version":"e24d67437856c921a9a40f7fbac38ac576439e6616eb698fb769279ecbc7802a","impliedFormat":99},{"version":"cff4f19e514fccc06aafecb44d2c6b10516d604d2972da407fa38d344872389e","impliedFormat":99},{"version":"15cc3dd9a039f8ba1628d1e27cdf4b45582fc387a4241ebb65eff1786b89f522","impliedFormat":99},{"version":"01056fd3092681e2f1c0cb0e1fec91ac081b5bb758551494fca1c1d27f06c2b4","affectsGlobalScope":true,"impliedFormat":99},{"version":"19c2d8da51e4944a19e0ca377df3fd9d249dd8f9cab9544632fb8d10a72808f7","impliedFormat":1},{"version":"a387648b45b3d02c838a213809bf7aa3a3c6e009b0cfedbbb98e7863219fd0b4","impliedFormat":99},{"version":"d189c9a6203dd8c814cbabb78ee77ec7f806a8c4f92c4029e8c84cf4d3b69013","impliedFormat":99},{"version":"7e9aecc83330a5c15b10f8995dfce2e1004f9bbdd0c4a9df18e8483facd76703","impliedFormat":99},{"version":"f2afaf5947dd98685a6b7996b57d7fedd13a04ca95820e6d8e1db0e6ec6d24ae","impliedFormat":99},{"version":"115cd4fb80b878cfcdc7f6fd16ff105eee596ec4336c9ecf8482753c4def34b1","impliedFormat":99},{"version":"316d7bdfb430fa119cbd460e01ffbf726321a5e54575c22b70e8ff56241d849a","impliedFormat":99},{"version":"d5a938d49803873c6de2daa0e81fa87ab44eee5259df765345932a28ecfb64fc","impliedFormat":99},{"version":"17044e5e7e129f8374daa67588cfb05367a511523f62d55ac215f86ed31b7bd5","impliedFormat":99},{"version":"2089a59a5359a6e33ab03808a1f2eb66169a8854d31c165e5586a0c9e83a008c","impliedFormat":99},{"version":"4ebc57d20caf062019a2b8c9ce1e54602a411022eb4f7fa325888b9bcf63693a","impliedFormat":99},{"version":"662cafdf363d512eff0d6c525c711684dba726ac5f4d09f473110a05c8ecd8e5","impliedFormat":99},{"version":"bc5687c148ac8c68aa2e732086df6691e8658c7d39ea6a3e4f2d29cc7c28945b","impliedFormat":99},{"version":"98678d6ac29dfa3f80452de2a87f464dee4908476f817d6f5e0677802ad43f7b","impliedFormat":99},{"version":"057f28f1e4c53bfdc397099ee4bf873ef32f26a938a135881b19bf10f968a805","impliedFormat":99},{"version":"d00e790b0d3738482ddb18bb446210b41019520dd32438570d6bc533f7b95239","impliedFormat":99},{"version":"c4e45ef293b9b228aad0d51acb0ef0397dad22a3454b3f6f751b6de1ac9e11e0","impliedFormat":99},{"version":"4665f7e4f0fa5900321d33f85d167ad7653b758ea654e5b6cd63481c6592f7df","impliedFormat":99},{"version":"981cb93ad7614aa65352d5ac31a51e90802284d28fb41a9fc583150ec94621ce","impliedFormat":99},{"version":"3802746f13335d428ea68f2a6b867e031cb8ffcbf5b6ee2f101b2bde38d9408b","impliedFormat":99},{"version":"078e626b45a175b01f691bc1f1fcb31357c7d105773f7bddc5cfe71d13dc12cf","impliedFormat":99},{"version":"21c0fdfb5f295a8f75815b89ddd2ce35ca67ee594996bc398e2f593927b72f7d","impliedFormat":99},{"version":"5e5bd661156168b6fd7a94d95deddea447a33a315cc5ceff165e3db6ebb17400","impliedFormat":99},{"version":"52ba05f2c14d30fc792c73f2c66ebbc85465dd630cb5553da997b282a24ce6f3","impliedFormat":99},{"version":"8f05922f3c5759f330d7fe66eb851f6b7ea832257c4abb48dad1cc8890ffe1a0","impliedFormat":99},{"version":"a8634e7c68875e6826de64501c813a1978613c115126c3ab07ca0d8803e5ba63","impliedFormat":99},{"version":"124e3dec3b595520139287b8b87ea1d9a17d1b6288a66cecf7318e868e8b445b","impliedFormat":99},{"version":"acece64467d97b31ce832aa6f93bc1cbd0f49e5e9e7bc0ef4976ea04c39b12f9","impliedFormat":99},{"version":"f20aaac0dd3957e75c40a3b5d30bbbbe2639c6af494b6ebaefc92c920d173ba4","impliedFormat":99},{"version":"9d1a7890dc88f0f68e3a5e4dd28a29566174644469a025e25837500e08cdb608","impliedFormat":99},{"version":"d82a659eab5a7bc4e555b8ed631db1e0b2277959c07097c3f1279c3dc74d843a","impliedFormat":99},{"version":"2d4e41ea9b4c2a5f924a221600988d9af6c631e111bd6fde3f5ce3d47b2e888e","impliedFormat":99},{"version":"e332d35d49326925df3c905987be62a101b1ddd0278cea0d321c54fb32fc1d2a","impliedFormat":99},{"version":"72920918942e421145fa7d3405d1e20e36126336f11355b0fad4ddf66c96b395","impliedFormat":99},{"version":"e932f7cdd6fee4f3cd57c0df201495f7111f4d843cfb20a73b31134babddad27","impliedFormat":99},{"version":"8dd893c4af9ecfbd6adeed499b9a34adb3562f9cdb461e7a390bf6c587706170","impliedFormat":99},{"version":"f82f1de6aec147664152eba85e4360be97387efb19a664ae97b248b6ff1bfc15","impliedFormat":99},{"version":"5aad98287d23e42aac230bab0c29d881e91e2042488f0268556f22b397a3b038","impliedFormat":99},{"version":"ffe342c99bb841bdc1955f43c0b1f388f6522560612fe3dade4c45f9982198d4","impliedFormat":99},{"version":"75eb76a81087ce95155f897e349b9a9b5ca3594d35252a0651aad2b74e94f4b4","impliedFormat":99},{"version":"a2503ed7836b0320bc274dfe29e786532ede72f43c844c4836bd6d634185d2f0","impliedFormat":99},{"version":"f485f3f6a0c8ca14161610a17c098957966c33f2dca98a57c5cce816d0ef7e39","impliedFormat":99},{"version":"e876d167fe328784d25f43057300ee5941e157a096691a0c3b7c5f49f80f987f","impliedFormat":99},{"version":"f157b9c028d71bf9c818186b3ee886641111cd91e710d0d98f854f83f531e647","impliedFormat":99},{"version":"49d33b0cec814e71f33a3c680b46ef8112b7b4ac76c304e8d86bcf5e8aafc148","impliedFormat":99},{"version":"e7e5890c53c38e44024c21be92850fbc323decccc2814e6e1582592e840a734d","impliedFormat":99},{"version":"a499d988e788c73d1ce066166f8a696ea0c72e497c8513fafd7b5c78a3c1c67f","impliedFormat":99},{"version":"014b27d82e806d9b835e7c09e499a07531c2f2f810fe2609d7c1eb597671f7b9","impliedFormat":99},{"version":"b3df52c6c8236e8117edb6724b572fbea846e2eec25c0dd768cdee7210caec95","impliedFormat":99},{"version":"75941176e22eb9eb3749de66634b65ab20420243da96054723fa823085c6c9ec","impliedFormat":99},{"version":"75010ee3a47aca74876cbe76c08636b376a0e4c622aeaa49fb905b767153a551","impliedFormat":99},{"version":"3d7cd95d231e345e45db12793781582bfaa84964e0d05882eb05b3aec2329cf1","impliedFormat":99},{"version":"92dc737f6c44f1a60d1aa575cfbb7c1b31610c27a8e028d922ac2b322f0fe4af","impliedFormat":99},{"version":"f03bcee0b61f7737004079f5d784a15f7f832dddb5f58c0112d5b2be4d719356","impliedFormat":99},{"version":"5785cabdf475ceb1493b6e215070ae2d3d212effd091c46bfeecbc9fb69363b3","impliedFormat":99},{"version":"e76f1c18be68f038519be05bae9ff4557ce664adc2f6bbd6ba88ae2d7a23a20a","impliedFormat":99},{"version":"0eeb382c1048583a94d9f630ca23e7f7b985d501c2287456869768bcc63b6a75","impliedFormat":99},{"version":"fc01dcdadd606a25fdcd89fe718544ff33c17db1c571eaf9f4ac18377a0716f3","impliedFormat":99},{"version":"24d7294c4165c6f0b171b41b6844c7bc9a7ce8f438b323ff293d09bcf4dd2282","impliedFormat":99},{"version":"0f525826e09edc94309b391668644cfdadc704918bf1c0c6b760a0ab5511a08e","impliedFormat":99},{"version":"5be129fe7c0b1d5c36a2c4f1a36a576b6b05fecbad1a8398c72924298eeffadb","impliedFormat":99},{"version":"d432bf55b58ee8fac50d09bb54cf844b9374e705b6a094d48c5b54d18147b88c","impliedFormat":99},{"version":"2396fac6caf45f20c826e40cc5aa0dd6dd33947c9f2a0f4cb1faef982018f668","impliedFormat":99},{"version":"c0a17bcedf9c0ce6eb1c5471261c15f1ee0ac7c17bf4b543f22845959a977bf0","impliedFormat":99},{"version":"207ecf493b69ddca525bbbd8f1d120d99d00be1448ae8c0e690526f24dc182ca","impliedFormat":99},{"version":"af6ac8a19dbd05c34feff97d0eae81194fd0be1358bd2366478e9a574492d332","impliedFormat":99},{"version":"a21c587d34edbe9808b8f4fac207d190f802687b477ef55ee0f494d79a427f31","impliedFormat":99},{"version":"f00b8fc0c970cfd54d4df6047aae216bce4d7a2ceb6610655541a678ac54c57a","impliedFormat":99},{"version":"11fd6a023d60896a902933f64a2c8363102e5276838dbe29aa02a24c2e69fbd1","impliedFormat":99},{"version":"d733ff04df93b131ff1d93300255400ccb5c7f807d130ace3447463c5b0107bf","impliedFormat":99},{"version":"85d3fe2d268f20c10cb35e83adf4868a42bda39e4cecac9f86ac7254df250f47","impliedFormat":99},{"version":"f811e036cb1c0580170cf9354001e34ec3cb8df2f8788d9f07bf37c44c608e36","impliedFormat":99},{"version":"92d7af328f554f85413a55f83e6718c3b8a827c3ae5abe5bef319ea25c32153a","impliedFormat":99},{"version":"08d77743e9ac7b4d9414d7286c9089600ccc87ce8e5d3972326aeb41c1b3680e","signature":"9aa4d058ece308996deed5971548a866f0e5bedc296e598724277a8f7e8ff203","impliedFormat":99}],"root":[162],"options":{"composite":true,"declaration":true,"declarationDir":"./esm","declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"outDir":"./esm","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":99},"fileIdsList":[[65],[153,154],[153],[153,154,155,156],[154],[106,152,158],[158,159,160],[106,152,157],[157],[66,106,152,161],[69],[67,68,69,70],[132],[88],[135],[133,134,135,136,137,138,139,140,141,142,143,144,145],[132,135,137,138,141],[106,132,135,137,138,141],[88,147],[147,148,149,150],[106,148,149],[71,132,146,151],[109],[107,110,111,112,113,114],[110],[88,146],[88,106,107,108,109,110,112,146],[109,110,112,115],[88,109,110,116,146],[88,109,117,132,146],[119,120,121],[118],[88,106,108,109,110,115,117,118,119],[88,115],[106,108,109,117,122,132],[109,117,123,132],[125,126],[109,115,124],[88,115,146],[88,106,108,109,115,117,124,127,146],[109,117,128,132],[109,117,128,129,132],[106,109],[108,109,115,116,117,118,122,123,124,127,128,129,130,131],[117,130],[88,106,107,108,146],[88,90,91],[88,90],[90],[94],[88,90,97],[90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],[89,90],[89],[88,92],[72,73,74,76],[72,73,77],[72,73,74,76,77],[75],[74],[75,78,85,86,87],[75,78,85],[78],[80],[80,81,82],[75,78,80],[79,83,84],[106,152,161]],"referencedMap":[[66,1],[155,2],[154,3],[157,4],[156,5],[159,6],[161,7],[158,8],[160,9],[162,10],[70,11],[71,12],[133,13],[134,14],[136,15],[146,16],[137,14],[138,13],[139,14],[135,13],[140,14],[142,17],[143,13],[141,14],[144,13],[145,18],[148,19],[149,19],[151,20],[150,21],[152,22],[110,23],[111,14],[115,24],[112,25],[113,26],[114,27],[107,26],[116,28],[117,29],[118,30],[122,31],[119,32],[120,33],[121,34],[123,35],[124,36],[127,37],[125,38],[126,39],[128,40],[129,41],[130,42],[108,43],[132,44],[131,45],[109,46],[92,47],[91,48],[93,49],[94,49],[95,49],[96,50],[98,51],[106,52],[99,49],[100,53],[101,49],[102,49],[90,54],[103,55],[104,48],[97,48],[105,48],[77,56],[74,57],[78,58],[76,59],[73,60],[88,61],[86,62],[79,63],[80,63],[81,64],[83,65],[82,66],[85,67],[84,63]],"exportedModulesMap":[[66,1],[155,2],[154,3],[157,4],[156,5],[159,6],[161,7],[158,8],[160,9],[162,68],[70,11],[71,12],[133,13],[134,14],[136,15],[146,16],[137,14],[138,13],[139,14],[135,13],[140,14],[142,17],[143,13],[141,14],[144,13],[145,18],[148,19],[149,19],[151,20],[150,21],[152,22],[110,23],[111,14],[115,24],[112,25],[113,26],[114,27],[107,26],[116,28],[117,29],[118,30],[122,31],[119,32],[120,33],[121,34],[123,35],[124,36],[127,37],[125,38],[126,39],[128,40],[129,41],[130,42],[108,43],[132,44],[131,45],[109,46],[92,47],[91,48],[93,49],[94,49],[95,49],[96,50],[98,51],[106,52],[99,49],[100,53],[101,49],[102,49],[90,54],[103,55],[104,48],[97,48],[105,48],[77,56],[74,57],[78,58],[76,59],[73,60],[88,61],[86,62],[79,63],[80,63],[81,64],[83,65],[82,66],[85,67],[84,63]],"semanticDiagnosticsPerFile":[66,65,63,64,12,14,13,2,15,16,17,18,19,20,21,22,3,4,23,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,59,10,1,11,62,61,60,89,153,155,154,157,156,159,161,158,160,162,67,68,70,71,69,133,134,136,146,137,138,139,135,140,142,143,141,144,145,148,149,151,150,147,152,110,111,115,112,113,114,107,116,117,118,122,119,120,121,123,124,127,125,126,128,129,130,108,132,131,109,92,91,93,94,95,96,98,106,99,100,101,102,90,103,104,97,105,77,74,78,72,76,73,88,86,87,79,80,81,83,82,85,84,75],"latestChangedDtsFile":"./esm/index.d.ts"},"version":"5.3.2"}
|
|
1
|
+
{"program":{"fileNames":["../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es5.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2016.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2021.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2023.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.dom.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2023.array.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.esnext.object.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.decorators.d.ts","../../common/temp/node_modules/.pnpm/typescript@5.4.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../common/temp/node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.d.ts","../../common/temp/node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/modules/index.d.ts","./src/renderer.ts","./src/bitmap.ts","../event/esm/disposable.d.ts","../event/esm/event.d.ts","../event/esm/event-emitter.d.ts","../event/esm/utils.d.ts","../event/esm/index.d.ts","../scrcpy/esm/codec/av1.d.ts","../scrcpy/esm/codec/h264.d.ts","../scrcpy/esm/codec/nalu.d.ts","../scrcpy/esm/codec/h265.d.ts","../scrcpy/esm/codec/index.d.ts","../struct/esm/basic/options.d.ts","../struct/esm/basic/struct-value.d.ts","../struct/esm/basic/field-value.d.ts","../struct/esm/utils.d.ts","../struct/esm/basic/stream.d.ts","../struct/esm/basic/definition.d.ts","../struct/esm/basic/index.d.ts","../struct/esm/types/bigint.d.ts","../struct/esm/types/buffer/base.d.ts","../struct/esm/types/buffer/fixed-length.d.ts","../struct/esm/types/buffer/variable-length.d.ts","../struct/esm/types/buffer/index.d.ts","../struct/esm/types/number.d.ts","../struct/esm/types/index.d.ts","../struct/esm/struct.d.ts","../struct/esm/sync-promise.d.ts","../struct/esm/index.d.ts","../stream-extra/esm/types.d.ts","../stream-extra/esm/stream.d.ts","../stream-extra/esm/buffered.d.ts","../stream-extra/esm/buffered-transform.d.ts","../stream-extra/esm/concat.d.ts","../stream-extra/esm/consumable.d.ts","../stream-extra/esm/decode-utf8.d.ts","../stream-extra/esm/distribution.d.ts","../stream-extra/esm/wrap-readable.d.ts","../stream-extra/esm/duplex.d.ts","../stream-extra/esm/inspect.d.ts","../stream-extra/esm/pipe-from.d.ts","../stream-extra/esm/push-readable.d.ts","../stream-extra/esm/split-string.d.ts","../stream-extra/esm/struct-deserialize.d.ts","../stream-extra/esm/struct-serialize.d.ts","../stream-extra/esm/wrap-writable.d.ts","../stream-extra/esm/index.d.ts","../scrcpy/esm/options/1_16/scroll.d.ts","../scrcpy/esm/options/codec.d.ts","../scrcpy/esm/options/types.d.ts","../scrcpy/esm/options/1_16/codec-options.d.ts","../scrcpy/esm/options/1_16/float-to-uint16.d.ts","../scrcpy/esm/options/1_16/init.d.ts","../scrcpy/esm/options/1_16/message.d.ts","../scrcpy/esm/options/1_16/options.d.ts","../scrcpy/esm/options/1_16/index.d.ts","../scrcpy/esm/options/1_17.d.ts","../scrcpy/esm/options/1_18.d.ts","../scrcpy/esm/options/1_21.d.ts","../scrcpy/esm/options/1_22/init.d.ts","../scrcpy/esm/options/1_22/options.d.ts","../scrcpy/esm/options/1_22/scroll.d.ts","../scrcpy/esm/options/1_22/index.d.ts","../scrcpy/esm/options/1_23.d.ts","../scrcpy/esm/options/1_24.d.ts","../scrcpy/esm/options/1_25/options.d.ts","../scrcpy/esm/options/1_25/scroll.d.ts","../scrcpy/esm/options/1_25/index.d.ts","../scrcpy/esm/options/2_0.d.ts","../scrcpy/esm/options/2_1.d.ts","../scrcpy/esm/options/2_2.d.ts","../scrcpy/esm/options/latest.d.ts","../scrcpy/esm/options/index.d.ts","../scrcpy/esm/control/back-or-screen-on.d.ts","../scrcpy/esm/control/basic.d.ts","../scrcpy/esm/control/inject-touch.d.ts","../scrcpy/esm/control/hover-helper.d.ts","../scrcpy/esm/control/inject-keycode.d.ts","../scrcpy/esm/control/inject-scroll.d.ts","../scrcpy/esm/control/inject-text.d.ts","../scrcpy/esm/control/rotate-device.d.ts","../scrcpy/esm/control/set-screen-power-mode.d.ts","../scrcpy/esm/control/serializer.d.ts","../scrcpy/esm/control/set-clipboard.d.ts","../scrcpy/esm/control/type.d.ts","../scrcpy/esm/control/writer.d.ts","../scrcpy/esm/control/index.d.ts","../scrcpy/esm/device-message/type.d.ts","../scrcpy/esm/device-message/ack-clipboard.d.ts","../scrcpy/esm/device-message/clipboard.d.ts","../scrcpy/esm/device-message/stream.d.ts","../scrcpy/esm/device-message/index.d.ts","../scrcpy/esm/index.d.ts","../scrcpy-decoder-tinyh264/esm/types.d.ts","../scrcpy-decoder-tinyh264/esm/decoder.d.ts","../scrcpy-decoder-tinyh264/esm/wrapper.d.ts","../scrcpy-decoder-tinyh264/esm/index.d.ts","./src/webgl.ts","./src/index.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","impliedFormat":1},{"version":"886e50ef125efb7878f744e86908884c0133e7a6d9d80013f421b0cd8fb2af94","impliedFormat":1},{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true,"impliedFormat":1},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true,"impliedFormat":1},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true,"impliedFormat":1},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true,"impliedFormat":1},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","impliedFormat":1},{"version":"31973b272be35eab5ecf20a38ea54bec84cdc0317117590cb813c72fe0ef75b3","impliedFormat":99},{"version":"f933f5db6e2eb630d3c83f221e0a7e2897dd02665822e13ea9b447ffcf3aceba","impliedFormat":99},{"version":"f315c84ae0b6750b7886963c0969f00cfec81edac1321c7d7b061eb0c5493889","signature":"322da539748d40d57d89eb452a60fc1228e00285fca8a34c60cb83f95d42a4be","impliedFormat":99},{"version":"207ecf493b69ddca525bbbd8f1d120d99d00be1448ae8c0e690526f24dc182ca","impliedFormat":99},{"version":"af6ac8a19dbd05c34feff97d0eae81194fd0be1358bd2366478e9a574492d332","impliedFormat":99},{"version":"a21c587d34edbe9808b8f4fac207d190f802687b477ef55ee0f494d79a427f31","impliedFormat":99},{"version":"f00b8fc0c970cfd54d4df6047aae216bce4d7a2ceb6610655541a678ac54c57a","impliedFormat":99},{"version":"11fd6a023d60896a902933f64a2c8363102e5276838dbe29aa02a24c2e69fbd1","impliedFormat":99},{"version":"ad324e6170d0e050a2681b9f6e7bb93d5c84240df5b513db656331fab3f238a6","impliedFormat":99},{"version":"8ba25a7b32fa40a6aad84745006f198b725c9c8013574df36505dbb4d098d92f","impliedFormat":99},{"version":"e87104e6d7ad32243163934f20940162c104eaaaddfafe5267e219991bbdd00b","impliedFormat":99},{"version":"4d7dc3c4b187c585b3328077821638ec38bb68454f331809fd977030178da96e","impliedFormat":99},{"version":"8dcee60e0ce1d2b35cb1ada17420565cd6a5307ae280f62b3d92e10fd344aebc","impliedFormat":99},{"version":"7ceac7d7800ef7065908464aba0a009e9a03ff95f177a44f999687bdf10d039f","impliedFormat":99},{"version":"6043ab81faab77b975cb2a8457cc28c3b6f90a766cbbd27914da686bc41c83a0","impliedFormat":99},{"version":"613051be0c04c0fadf883f5ec01dcb0a4639ac92d9e2c12a222680c91b374595","impliedFormat":99},{"version":"a740a1e2d889fc4344fbb49a7f8b02ee664850be5cdcf029ace8ceb4316623db","impliedFormat":99},{"version":"ffe3c0472cf0ad60edbf5037319135c645bd92e7acbf403d72101df3598258e0","impliedFormat":99},{"version":"64ebe41006e87ea8b5e9b3acf048018b5226c4b08c6575526a76f6801143bf90","impliedFormat":99},{"version":"5af3b8b1a9063e033fc1e32a3e95956f5f5e22548d5ccca628b1ab87e42087d1","impliedFormat":99},{"version":"2414e378fb9e46fe36d8a0f4fb7af126441078299c03a46096713b03a5f6571d","impliedFormat":99},{"version":"1ed47fe653ec1bbcbd8ed241873938642755f2917f9e9a2e78daef11519f0745","impliedFormat":99},{"version":"4e74287ad61c1544e88339e78a4da19cb79c729be8799b8cd190353368532e30","impliedFormat":99},{"version":"21a136c72551be7c24d797d4fa1401d35ee62325bec7442a6869cea50a50ad7a","impliedFormat":99},{"version":"5ea1325a998e722fffc89ff8c2d00eaf35e491f3fada16fb56c6360f63d16d79","impliedFormat":99},{"version":"2f50c2700b3397c9961c1e14b903d0ff1120e064755603740cecdcdf3b05d20f","impliedFormat":99},{"version":"e24d67437856c921a9a40f7fbac38ac576439e6616eb698fb769279ecbc7802a","impliedFormat":99},{"version":"cff4f19e514fccc06aafecb44d2c6b10516d604d2972da407fa38d344872389e","impliedFormat":99},{"version":"15cc3dd9a039f8ba1628d1e27cdf4b45582fc387a4241ebb65eff1786b89f522","impliedFormat":99},{"version":"01056fd3092681e2f1c0cb0e1fec91ac081b5bb758551494fca1c1d27f06c2b4","affectsGlobalScope":true,"impliedFormat":99},{"version":"13f965dea037ca58f3b0a5bd7541d1b3e2c71286759478c2aadba2a9647e5b0a","impliedFormat":99},{"version":"45771e2ee1ae0e12008b5090224a0a47d7c4af0a3b248deba572ab19232b1621","impliedFormat":99},{"version":"d189c9a6203dd8c814cbabb78ee77ec7f806a8c4f92c4029e8c84cf4d3b69013","impliedFormat":99},{"version":"7e9aecc83330a5c15b10f8995dfce2e1004f9bbdd0c4a9df18e8483facd76703","impliedFormat":99},{"version":"f2afaf5947dd98685a6b7996b57d7fedd13a04ca95820e6d8e1db0e6ec6d24ae","impliedFormat":99},{"version":"bbda3357c726ff3765eedddba81ee347295d3cdf4bc413e83e4d2f2d040e190f","impliedFormat":99},{"version":"316d7bdfb430fa119cbd460e01ffbf726321a5e54575c22b70e8ff56241d849a","impliedFormat":99},{"version":"d5a938d49803873c6de2daa0e81fa87ab44eee5259df765345932a28ecfb64fc","impliedFormat":99},{"version":"17044e5e7e129f8374daa67588cfb05367a511523f62d55ac215f86ed31b7bd5","impliedFormat":99},{"version":"2089a59a5359a6e33ab03808a1f2eb66169a8854d31c165e5586a0c9e83a008c","impliedFormat":99},{"version":"4ebc57d20caf062019a2b8c9ce1e54602a411022eb4f7fa325888b9bcf63693a","impliedFormat":99},{"version":"52279f70738da349b60a09be1294e3295c7e37189c10deb083ed6b5eb1c86744","impliedFormat":99},{"version":"bc5687c148ac8c68aa2e732086df6691e8658c7d39ea6a3e4f2d29cc7c28945b","impliedFormat":99},{"version":"98678d6ac29dfa3f80452de2a87f464dee4908476f817d6f5e0677802ad43f7b","impliedFormat":99},{"version":"057f28f1e4c53bfdc397099ee4bf873ef32f26a938a135881b19bf10f968a805","impliedFormat":99},{"version":"d00e790b0d3738482ddb18bb446210b41019520dd32438570d6bc533f7b95239","impliedFormat":99},{"version":"f36862ddf4c1d6dc6c2638baa6fa84ba196b0642b765e6af0163a4d688b6676d","impliedFormat":99},{"version":"4665f7e4f0fa5900321d33f85d167ad7653b758ea654e5b6cd63481c6592f7df","impliedFormat":99},{"version":"981cb93ad7614aa65352d5ac31a51e90802284d28fb41a9fc583150ec94621ce","impliedFormat":99},{"version":"3802746f13335d428ea68f2a6b867e031cb8ffcbf5b6ee2f101b2bde38d9408b","impliedFormat":99},{"version":"078e626b45a175b01f691bc1f1fcb31357c7d105773f7bddc5cfe71d13dc12cf","impliedFormat":99},{"version":"21c0fdfb5f295a8f75815b89ddd2ce35ca67ee594996bc398e2f593927b72f7d","impliedFormat":99},{"version":"5e5bd661156168b6fd7a94d95deddea447a33a315cc5ceff165e3db6ebb17400","impliedFormat":99},{"version":"52ba05f2c14d30fc792c73f2c66ebbc85465dd630cb5553da997b282a24ce6f3","impliedFormat":99},{"version":"8f05922f3c5759f330d7fe66eb851f6b7ea832257c4abb48dad1cc8890ffe1a0","impliedFormat":99},{"version":"792184de8c4aa96dfea1f1f573d1797e5baa0a603c330b54e251007563791c8a","impliedFormat":99},{"version":"124e3dec3b595520139287b8b87ea1d9a17d1b6288a66cecf7318e868e8b445b","impliedFormat":99},{"version":"9ce62dd72334b05ad761b4bc5bacb0b3493207feb1ec34526b2850467d307b76","impliedFormat":99},{"version":"88611fc3b0f708c8a5a138fd457e9229bad092af6c2885d776dd5a41c0873370","impliedFormat":99},{"version":"127ee9705ba1030ebcbc14eee3d55aebd9331cab619e7d6eb8106f2a6907acc4","impliedFormat":99},{"version":"d82a659eab5a7bc4e555b8ed631db1e0b2277959c07097c3f1279c3dc74d843a","impliedFormat":99},{"version":"aad9eca2a759c57dd744701712ec42b68f840081a57878d60e69e4574502bc84","impliedFormat":99},{"version":"e332d35d49326925df3c905987be62a101b1ddd0278cea0d321c54fb32fc1d2a","impliedFormat":99},{"version":"72920918942e421145fa7d3405d1e20e36126336f11355b0fad4ddf66c96b395","impliedFormat":99},{"version":"fa94ca9166e9094fe832050a2083d737e334fc08110ec559378351c9ef0a014c","impliedFormat":99},{"version":"9f90a838a7e6b1aeebe5cde674c1e0c77a4b3b646f9935ec0babd1959a107203","impliedFormat":99},{"version":"f82f1de6aec147664152eba85e4360be97387efb19a664ae97b248b6ff1bfc15","impliedFormat":99},{"version":"5aad98287d23e42aac230bab0c29d881e91e2042488f0268556f22b397a3b038","impliedFormat":99},{"version":"ffe342c99bb841bdc1955f43c0b1f388f6522560612fe3dade4c45f9982198d4","impliedFormat":99},{"version":"6008894e5fcaf85bf93b283af7ad6ae2644286a45a64c71213f4ecb35f202bf0","impliedFormat":99},{"version":"53f70d5b3a5f099fc3c1d0bfbc2e32cbef84b7bb3391af5c4b48cc25531673da","impliedFormat":99},{"version":"4ff9aee1f04b0e6488b93906d7061cc55ffb87a3724c40a02fc21c85ff2be6c7","impliedFormat":99},{"version":"e876d167fe328784d25f43057300ee5941e157a096691a0c3b7c5f49f80f987f","impliedFormat":99},{"version":"f157b9c028d71bf9c818186b3ee886641111cd91e710d0d98f854f83f531e647","impliedFormat":99},{"version":"49d33b0cec814e71f33a3c680b46ef8112b7b4ac76c304e8d86bcf5e8aafc148","impliedFormat":99},{"version":"e7e5890c53c38e44024c21be92850fbc323decccc2814e6e1582592e840a734d","impliedFormat":99},{"version":"a499d988e788c73d1ce066166f8a696ea0c72e497c8513fafd7b5c78a3c1c67f","impliedFormat":99},{"version":"014b27d82e806d9b835e7c09e499a07531c2f2f810fe2609d7c1eb597671f7b9","impliedFormat":99},{"version":"b3df52c6c8236e8117edb6724b572fbea846e2eec25c0dd768cdee7210caec95","impliedFormat":99},{"version":"75941176e22eb9eb3749de66634b65ab20420243da96054723fa823085c6c9ec","impliedFormat":99},{"version":"75010ee3a47aca74876cbe76c08636b376a0e4c622aeaa49fb905b767153a551","impliedFormat":99},{"version":"3d7cd95d231e345e45db12793781582bfaa84964e0d05882eb05b3aec2329cf1","impliedFormat":99},{"version":"92dc737f6c44f1a60d1aa575cfbb7c1b31610c27a8e028d922ac2b322f0fe4af","impliedFormat":99},{"version":"f03bcee0b61f7737004079f5d784a15f7f832dddb5f58c0112d5b2be4d719356","impliedFormat":99},{"version":"5785cabdf475ceb1493b6e215070ae2d3d212effd091c46bfeecbc9fb69363b3","impliedFormat":99},{"version":"e76f1c18be68f038519be05bae9ff4557ce664adc2f6bbd6ba88ae2d7a23a20a","impliedFormat":99},{"version":"0eeb382c1048583a94d9f630ca23e7f7b985d501c2287456869768bcc63b6a75","impliedFormat":99},{"version":"fc01dcdadd606a25fdcd89fe718544ff33c17db1c571eaf9f4ac18377a0716f3","impliedFormat":99},{"version":"24d7294c4165c6f0b171b41b6844c7bc9a7ce8f438b323ff293d09bcf4dd2282","impliedFormat":99},{"version":"0f525826e09edc94309b391668644cfdadc704918bf1c0c6b760a0ab5511a08e","impliedFormat":99},{"version":"5be129fe7c0b1d5c36a2c4f1a36a576b6b05fecbad1a8398c72924298eeffadb","impliedFormat":99},{"version":"d432bf55b58ee8fac50d09bb54cf844b9374e705b6a094d48c5b54d18147b88c","impliedFormat":99},{"version":"2396fac6caf45f20c826e40cc5aa0dd6dd33947c9f2a0f4cb1faef982018f668","impliedFormat":99},{"version":"c0a17bcedf9c0ce6eb1c5471261c15f1ee0ac7c17bf4b543f22845959a977bf0","impliedFormat":99},{"version":"af85a4638d055a58476dbd6f6be841baf6962828cf3432db82f5a36ff5d8b202","impliedFormat":99},{"version":"9ed45042d274b91c8308ae63eb3e1f2e4086d88a3ade3c4fd5f04930d3caad7b","impliedFormat":99},{"version":"f811e036cb1c0580170cf9354001e34ec3cb8df2f8788d9f07bf37c44c608e36","impliedFormat":99},{"version":"92d7af328f554f85413a55f83e6718c3b8a827c3ae5abe5bef319ea25c32153a","impliedFormat":99},{"version":"44f1363f038b7d67a31f701d0c192f068a1c9008c748ff78ade7718fa06e896b","signature":"3d9118f15159adc177d976a481472f0b22a80c9dfb111a9c1a95f52bda93c87c","impliedFormat":99},{"version":"c45ff6803ed0d0c892793dfb50dabbf71feb6937259d2f95bff266b8838edd1f","signature":"a385720cf82fc9d225f9e0d8e34c697a3b4cc010c6256d26ce25e63aa40da012","impliedFormat":99}],"root":[71,72,168,169],"options":{"composite":true,"declaration":true,"declarationDir":"./esm","declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"importHelpers":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"outDir":"./esm","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":99},"fileIdsList":[[69],[73,74],[73],[73,74,75,76],[74],[77,117,163,164],[164,165,166],[77,117,163],[77],[70,71],[70,71,72,77,117,163,167,168],[70],[80],[78,79,80,81],[143],[99],[146],[144,145,146,147,148,149,150,151,152,153,154,155,156],[143,146,148,149,152],[117,143,146,148,149,152],[99,158],[158,159,160,161],[117,159,160],[82,143,157,162],[120],[118,121,122,123,124,125],[121],[99,157],[99,117,118,119,120,121,123,157],[120,121,123,126],[99,120,121,127,157],[99,120,128,143,157],[130,131,132],[129],[99,117,119,120,121,126,128,129,130],[99,126],[117,119,120,128,133,143],[120,128,134,143],[136,137],[120,126,135],[99,126,157],[99,117,119,120,126,128,135,138,157],[120,128,139,143],[120,128,139,140,143],[117,120],[119,120,126,127,128,129,133,134,135,138,139,140,141,142],[128,141],[99,117,118,119,157],[99,101,102],[99,101],[101],[105],[99,101,108],[101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116],[100,101],[100],[99,103],[83,84,85,87],[83,84,88],[83,84,85,87,88],[86],[85],[86,89,96,97,98],[86,89,96],[89],[91],[91,92,93],[86,89,91],[90,94,95],[71],[77,117,163,167]],"referencedMap":[[70,1],[75,2],[74,3],[77,4],[76,5],[165,6],[167,7],[164,8],[166,9],[72,10],[169,11],[71,12],[168,10],[81,13],[82,14],[144,15],[145,16],[147,17],[157,18],[148,16],[149,15],[150,16],[146,15],[151,16],[153,19],[154,15],[152,16],[155,15],[156,20],[159,21],[160,21],[162,22],[161,23],[163,24],[121,25],[122,16],[126,26],[123,27],[124,28],[125,29],[118,28],[127,30],[128,31],[129,32],[133,33],[130,34],[131,35],[132,36],[134,37],[135,38],[138,39],[136,40],[137,41],[139,42],[140,43],[141,44],[119,45],[143,46],[142,47],[120,48],[103,49],[102,50],[104,51],[105,51],[106,51],[107,52],[109,53],[117,54],[110,51],[111,55],[112,51],[113,51],[101,56],[114,57],[115,50],[108,50],[116,50],[88,58],[85,59],[89,60],[87,61],[84,62],[99,63],[97,64],[90,65],[91,65],[92,66],[94,67],[93,68],[96,69],[95,65]],"exportedModulesMap":[[70,1],[75,2],[74,3],[77,4],[76,5],[165,6],[167,7],[164,8],[166,9],[72,70],[169,71],[71,12],[168,70],[81,13],[82,14],[144,15],[145,16],[147,17],[157,18],[148,16],[149,15],[150,16],[146,15],[151,16],[153,19],[154,15],[152,16],[155,15],[156,20],[159,21],[160,21],[162,22],[161,23],[163,24],[121,25],[122,16],[126,26],[123,27],[124,28],[125,29],[118,28],[127,30],[128,31],[129,32],[133,33],[130,34],[131,35],[132,36],[134,37],[135,38],[138,39],[136,40],[137,41],[139,42],[140,43],[141,44],[119,45],[143,46],[142,47],[120,48],[103,49],[102,50],[104,51],[105,51],[106,51],[107,52],[109,53],[117,54],[110,51],[111,55],[112,51],[113,51],[101,56],[114,57],[115,50],[108,50],[116,50],[88,58],[85,59],[89,60],[87,61],[84,62],[99,63],[97,64],[90,65],[91,65],[92,66],[94,67],[93,68],[96,69],[95,65]],"semanticDiagnosticsPerFile":[70,69,67,68,12,14,13,2,15,16,17,18,19,20,21,22,3,23,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,46,47,42,43,44,45,8,51,48,49,50,52,9,53,54,55,58,56,57,59,60,10,1,61,11,65,63,62,66,64,73,75,74,77,76,165,167,164,166,72,169,71,168,78,79,81,82,80,144,145,147,157,148,149,150,146,151,153,154,152,155,156,159,160,162,161,158,163,121,122,126,123,124,125,118,127,128,129,133,130,131,132,134,135,138,136,137,139,140,141,119,143,142,120,103,102,104,105,106,107,109,117,110,111,112,113,101,114,115,100,108,116,88,85,89,83,87,84,99,97,98,90,91,92,94,93,96,95,86],"latestChangedDtsFile":"./esm/index.d.ts"},"version":"5.4.2"}
|