@eluvio/elv-player-js 1.0.140 → 2.0.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 +35 -6
- package/dist/.vite/manifest.json +67 -0
- package/dist/Analytics-HWXR7tWt.mjs +2028 -0
- package/dist/Analytics-IUVysdzU.js +29 -0
- package/dist/dash.all.min-1QS9Xbir.js +25 -0
- package/dist/dash.all.min-9V1xYBRv.mjs +19428 -0
- package/dist/elv-player-js.cjs.js +1 -0
- package/dist/elv-player-js.css +1 -0
- package/dist/elv-player-js.es.js +5 -0
- package/dist/hls-1eCRapWm.mjs +15461 -0
- package/dist/hls-6O5SV1FQ.js +26 -0
- package/dist/index-6cMQneJf.mjs +2273 -0
- package/dist/index-C8mwW09z.js +23 -0
- package/dist/index-J4QpmTkA.js +367 -0
- package/dist/index-hvQzQ6UX.mjs +67432 -0
- package/lib/index.js +7 -0
- package/{src → lib/player}/Analytics.js +9 -8
- package/lib/player/Controls.js +913 -0
- package/{src → lib/player}/FairPlay.js +2 -0
- package/lib/player/Player.js +881 -0
- package/lib/player/PlayerParameters.js +173 -0
- package/lib/static/icons/Icons.js +29 -0
- package/lib/static/icons/svgs/backward-circle.svg +5 -0
- package/lib/static/icons/svgs/backward.svg +4 -0
- package/lib/static/icons/svgs/captions-off.svg +7 -0
- package/lib/static/icons/svgs/captions.svg +6 -0
- package/lib/static/icons/svgs/check.svg +1 -0
- package/lib/static/icons/svgs/chevron-left.svg +1 -0
- package/lib/static/icons/svgs/chevron-right.svg +1 -0
- package/lib/static/icons/svgs/forward-circle.svg +5 -0
- package/lib/static/icons/svgs/forward.svg +4 -0
- package/{src/static/icons/media/Full Screen icon.svg → lib/static/icons/svgs/full-screen.svg} +1 -1
- package/lib/static/icons/svgs/large-play-circle.svg +4 -0
- package/lib/static/icons/svgs/list.svg +1 -0
- package/{src/static/icons → lib/static/icons/svgs}/minimize.svg +1 -1
- package/{src/static/icons/media/Pause icon.svg → lib/static/icons/svgs/pause-circle.svg} +3 -3
- package/lib/static/icons/svgs/pause.svg +1 -0
- package/{src/static/icons/media/Play icon.svg → lib/static/icons/svgs/play-circle.svg} +1 -1
- package/lib/static/icons/svgs/play.svg +1 -0
- package/lib/static/icons/svgs/rotate-cw.svg +1 -0
- package/lib/static/icons/svgs/settings.svg +11 -0
- package/{src/static/icons/media/skip back icon.svg → lib/static/icons/svgs/skip-backward.svg} +2 -3
- package/{src/static/icons/media/Skip forward icon.svg → lib/static/icons/svgs/skip-forward.svg} +2 -3
- package/{src/static/icons/media/Volume icon.svg → lib/static/icons/svgs/volume-high.svg} +3 -3
- package/lib/static/icons/svgs/volume-low.svg +10 -0
- package/{src/static/icons/media/low volume icon.svg → lib/static/icons/svgs/volume-medium.svg} +2 -2
- package/{src/static/icons/media/no volume icon.svg → lib/static/icons/svgs/volume-off.svg} +3 -3
- package/lib/static/stylesheets/common.module.scss +486 -0
- package/lib/static/stylesheets/controls-tv.module.scss +488 -0
- package/lib/static/stylesheets/controls-web.module.scss +422 -0
- package/lib/static/stylesheets/player-profile-form.module.scss +141 -0
- package/lib/static/stylesheets/player.module.scss +92 -0
- package/lib/static/stylesheets/reset.module.scss +79 -0
- package/lib/static/stylesheets/ticket-form.module.scss +123 -0
- package/lib/ui/BuildIcons.cjs +44 -0
- package/lib/ui/Common.js +210 -0
- package/lib/ui/Components.jsx +342 -0
- package/lib/ui/Observers.js +449 -0
- package/lib/ui/PlayerProfileForm.jsx +106 -0
- package/lib/ui/PlayerUI.jsx +317 -0
- package/lib/ui/TVControls.jsx +337 -0
- package/lib/ui/TicketForm.jsx +147 -0
- package/lib/ui/WebControls.jsx +290 -0
- package/package.json +35 -47
- package/dist/index.js +0 -2
- package/dist/index.js.LICENSE.txt +0 -80
- package/src/BuildIcons.js +0 -27
- package/src/PlayerControls.js +0 -1478
- package/src/index.js +0 -1417
- package/src/static/icons/Icons.js +0 -15
- package/src/static/icons/Settings icon.svg +0 -4
- package/src/static/icons/chat icon collapse.svg +0 -1
- package/src/static/icons/chat icon.svg +0 -11
- package/src/static/icons/chat send.svg +0 -1
- package/src/static/icons/full screen.svg +0 -1
- package/src/static/icons/media/LargePlayIcon.svg +0 -4
- package/src/static/icons/media/Settings icon.svg +0 -4
- package/src/static/icons/media/Skip backward icon.svg +0 -4
- package/src/static/icons/media/list.svg +0 -1
- package/src/static/icons/media/loop icon.svg +0 -12
- package/src/static/icons/media/shuffle icon.svg +0 -13
- package/src/static/icons/muted.svg +0 -11
- package/src/static/icons/pause.svg +0 -1
- package/src/static/icons/play circle.svg +0 -1
- package/src/static/icons/play.svg +0 -1
- package/src/static/icons/settings.svg +0 -1
- package/src/static/icons/slider circle.svg +0 -1
- package/src/static/icons/unmuted.svg +0 -10
- package/src/static/images/ELUV.IO logo embed player.png +0 -0
- package/src/static/images/ELUV.IO logo embed player.svg +0 -1
- package/src/static/images/ELUV.IO white 20 px V2.png +0 -0
- package/src/static/images/ELUVIO white.svg +0 -26
- package/src/static/images/Logo.png +0 -0
- package/src/static/stylesheets/player.scss +0 -1065
- package/webpack.config.js +0 -152
- /package/{src/static/icons → lib/static/icons/svgs}/arrow-left.svg +0 -0
- /package/{src/static/icons/live icon.svg → lib/static/icons/svgs/live.svg} +0 -0
- /package/{src/static/icons → lib/static/icons/svgs}/multiview.svg +0 -0
- /package/{src/static/icons/media → lib/static/icons/svgs}/next.svg +0 -0
- /package/{src/static/icons/media → lib/static/icons/svgs}/previous.svg +0 -0
- /package/{src/static/icons → lib/static/icons/svgs}/x.svg +0 -0
- /package/{dist/5897e28fa3e8ac0a2fae.png → lib/static/images/Logo.png} +0 -0
|
@@ -0,0 +1,2273 @@
|
|
|
1
|
+
import { c as cI, e as CI, r as vA, a as eI, b as fA, i as dA, s as xA, g as wI } from "./index-hvQzQ6UX.mjs";
|
|
2
|
+
class EA {
|
|
3
|
+
constructor(I) {
|
|
4
|
+
this.wasm = I;
|
|
5
|
+
}
|
|
6
|
+
/*
|
|
7
|
+
* Converts a byte array (Uint8Array) to hex string
|
|
8
|
+
*/
|
|
9
|
+
static bytesToHex(I) {
|
|
10
|
+
return I.reduce(
|
|
11
|
+
(A, Q) => A + Q.toString(16).padStart(2, "0"),
|
|
12
|
+
""
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
static bytesToBinary(I) {
|
|
16
|
+
return I.reduce(
|
|
17
|
+
(A, Q) => A + Q.toString(2).padStart(8, "0") + " ",
|
|
18
|
+
""
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
/*
|
|
22
|
+
* Converts a hex string to a byte array (Uint8Array)
|
|
23
|
+
*/
|
|
24
|
+
static hexToBytes(I) {
|
|
25
|
+
return new Uint8Array(
|
|
26
|
+
I.match(/.{1,2}/g).map((A) => parseInt(A, 16))
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
static randomBytes(I) {
|
|
30
|
+
if (typeof window < "u" && window.crypto !== "undefined") {
|
|
31
|
+
let A = new Uint8Array(I);
|
|
32
|
+
return window.crypto.getRandomValues(A), A;
|
|
33
|
+
} else
|
|
34
|
+
return cI.randomBytes(I);
|
|
35
|
+
}
|
|
36
|
+
/*
|
|
37
|
+
* Write TypedArray to memory to use in a WASM function call. Caller is
|
|
38
|
+
* responsible for freeing the pointer.
|
|
39
|
+
*
|
|
40
|
+
* Returns {
|
|
41
|
+
* ptr: [for WASM],
|
|
42
|
+
* len: arr.length
|
|
43
|
+
* }
|
|
44
|
+
*/
|
|
45
|
+
arrayToBuf(I) {
|
|
46
|
+
const A = this.wasm, Q = {
|
|
47
|
+
ptr: null,
|
|
48
|
+
len: 0
|
|
49
|
+
};
|
|
50
|
+
if (!I)
|
|
51
|
+
return Q;
|
|
52
|
+
let C = null;
|
|
53
|
+
if (I instanceof Uint8Array || typeof Buffer < "u" && I instanceof Buffer)
|
|
54
|
+
C = I;
|
|
55
|
+
else if (I instanceof ArrayBuffer || I.__proto__.toString().includes("ArrayBuffer"))
|
|
56
|
+
C = new Uint8Array(I);
|
|
57
|
+
else
|
|
58
|
+
throw new Error(`arrayToBuf() failed: Expected Uint8Array, Buffer, or
|
|
59
|
+
ArrayBuffer`);
|
|
60
|
+
return Q.len = C.length, Q.ptr = A._malloc(C.length), A.writeArrayToMemory(C, Q.ptr), Q;
|
|
61
|
+
}
|
|
62
|
+
/*
|
|
63
|
+
* Automatically free the pointer later on the event loop
|
|
64
|
+
*/
|
|
65
|
+
arrayToSmartBuf(I) {
|
|
66
|
+
const A = this.wasm, Q = this.arrayToBuf(I);
|
|
67
|
+
return Q.ptr && setTimeout(() => {
|
|
68
|
+
A._free(Q.ptr), Q.len = 0, Q.ptr = null;
|
|
69
|
+
}, 0), Q;
|
|
70
|
+
}
|
|
71
|
+
/*
|
|
72
|
+
* Allocate a buffer to be automatically freed later on the event loop
|
|
73
|
+
*/
|
|
74
|
+
smartMalloc(I) {
|
|
75
|
+
const A = this.wasm, Q = A._malloc(I);
|
|
76
|
+
return setTimeout(() => {
|
|
77
|
+
A._free(Q);
|
|
78
|
+
}, 0), Q;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
class OA {
|
|
82
|
+
constructor(I) {
|
|
83
|
+
this.wasm = I, this.ptr = null, this.len = 0;
|
|
84
|
+
}
|
|
85
|
+
clear() {
|
|
86
|
+
this.len = 0;
|
|
87
|
+
}
|
|
88
|
+
free() {
|
|
89
|
+
this.ptr !== null && (this.wasm._free(this.ptr), this.len = 0, this.ptr = null);
|
|
90
|
+
}
|
|
91
|
+
resize(I) {
|
|
92
|
+
this.ptr !== null && this.free(), this.len = I, this.ptr = this.wasm._malloc(I);
|
|
93
|
+
}
|
|
94
|
+
ensureSize(I) {
|
|
95
|
+
(this.ptr === null || this.len < I) && this.resize(I);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
class yI {
|
|
99
|
+
/*
|
|
100
|
+
* wasm
|
|
101
|
+
* secretKey [Uint8Array SECRET_KEY_SIZE]
|
|
102
|
+
* symmetricKey [Uint8Array AES_KEY_SIZE]
|
|
103
|
+
*/
|
|
104
|
+
constructor(I, A, Q) {
|
|
105
|
+
const C = new EA(I);
|
|
106
|
+
this.wasm = I, this.utils = C, this.context = I._NewCryptoContext(null, 0), this.scratchBuf = new OA(I), this.sk = A, this.skBuf = C.arrayToBuf(A), this.symKey = Q, this.symKeyBuf = C.arrayToBuf(Q);
|
|
107
|
+
}
|
|
108
|
+
clearBuf() {
|
|
109
|
+
this.scratchBuf.clear();
|
|
110
|
+
}
|
|
111
|
+
free() {
|
|
112
|
+
if (!this.context)
|
|
113
|
+
return;
|
|
114
|
+
const I = this.wasm;
|
|
115
|
+
I._FreeCryptoContext(this.context), this.scratchBuf.free(), I._free(this.skBuf.ptr), I._free(this.symKeyBuf.ptr), this.context = null, this.scratchBuf = null, this.sk = null, this.skBuf = null, this.symKey = null, this.symKeyBuf = null, this.utils = null, this.wasm = null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
class lI {
|
|
119
|
+
/*
|
|
120
|
+
* wasm
|
|
121
|
+
* publicKey [Uint8Array PRIMARY_PK_KEY_SIZE]
|
|
122
|
+
* secretKey [Uint8Array SECRET_KEY_SIZE] - Optional (needed for DecryptPrimary)
|
|
123
|
+
* symmetricKey [Uint8Array AES_KEY_SIZE]
|
|
124
|
+
* iv [Uint8Array IV_SIZE]
|
|
125
|
+
*/
|
|
126
|
+
constructor(I, A, Q, C, o) {
|
|
127
|
+
const a = new EA(I), h = EA.randomBytes(I._EMS_SEED_SIZE_()), r = a.arrayToSmartBuf(h);
|
|
128
|
+
this.wasm = I, this.utils = a, this.context = I._NewCryptoContext(r.ptr, r.len), this.iv = o, this.pk = A, this.pkBuf = a.arrayToBuf(A), this.scratchBuf = new OA(I), this.sk = Q, this.skBuf = a.arrayToBuf(Q), this.symKey = C, this.symKeyBuf = a.arrayToBuf(C);
|
|
129
|
+
}
|
|
130
|
+
clearBuf() {
|
|
131
|
+
this.scratchBuf.clear();
|
|
132
|
+
}
|
|
133
|
+
free() {
|
|
134
|
+
if (!this.context)
|
|
135
|
+
return;
|
|
136
|
+
const I = this.wasm;
|
|
137
|
+
I._FreeCryptoContext(this.context), I._free(this.pkBuf.ptr), this.scratchBuf.free(), I._free(this.symKeyBuf.ptr), this.context = null, this.iv = null, this.pk = null, this.pkBuf = null, this.scratchBuf = null, this.sk = null, this.skBuf = null, this.symKey = null, this.symKeyBuf = null, this.wasm = null, this.utils = null;
|
|
138
|
+
}
|
|
139
|
+
generateNextBlockIV() {
|
|
140
|
+
let I = EA.randomBytes(this.iv.length);
|
|
141
|
+
for (let A = 0; A < this.iv.length; A++)
|
|
142
|
+
I[A] ^= this.iv[A];
|
|
143
|
+
return I;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
var uI = (() => {
|
|
147
|
+
var E = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0;
|
|
148
|
+
return function(I = {}) {
|
|
149
|
+
var A = I, Q, C;
|
|
150
|
+
A.ready = new Promise((i, s) => {
|
|
151
|
+
Q = i, C = s;
|
|
152
|
+
});
|
|
153
|
+
var o = Object.assign({}, A), a = "";
|
|
154
|
+
function h(i) {
|
|
155
|
+
return A.locateFile ? A.locateFile(i, a) : a + i;
|
|
156
|
+
}
|
|
157
|
+
typeof document < "u" && document.currentScript && (a = document.currentScript.src), E && (a = E), a.indexOf("blob:") !== 0 ? a = a.substr(0, a.replace(/[?#].*/, "").lastIndexOf("/") + 1) : a = "";
|
|
158
|
+
var r = A.print || console.log.bind(console), D = A.printErr || console.error.bind(console);
|
|
159
|
+
Object.assign(A, o), o = null, A.arguments && A.arguments, A.thisProgram && A.thisProgram, A.quit && A.quit;
|
|
160
|
+
var G;
|
|
161
|
+
A.wasmBinary && (G = A.wasmBinary), A.noExitRuntime, typeof WebAssembly != "object" && IA("no native wasm support detected");
|
|
162
|
+
var N, b = !1, q, S, R, c, y, H, F;
|
|
163
|
+
function l() {
|
|
164
|
+
var i = N.buffer;
|
|
165
|
+
A.HEAP8 = q = new Int8Array(i), A.HEAP16 = R = new Int16Array(i), A.HEAPU8 = S = new Uint8Array(i), A.HEAPU16 = new Uint16Array(i), A.HEAP32 = c = new Int32Array(i), A.HEAPU32 = y = new Uint32Array(i), A.HEAPF32 = H = new Float32Array(i), A.HEAPF64 = F = new Float64Array(i);
|
|
166
|
+
}
|
|
167
|
+
var k = [], Y = [], W = [];
|
|
168
|
+
function J() {
|
|
169
|
+
if (A.preRun)
|
|
170
|
+
for (typeof A.preRun == "function" && (A.preRun = [A.preRun]); A.preRun.length; )
|
|
171
|
+
rA(A.preRun.shift());
|
|
172
|
+
e(k);
|
|
173
|
+
}
|
|
174
|
+
function p() {
|
|
175
|
+
e(Y);
|
|
176
|
+
}
|
|
177
|
+
function V() {
|
|
178
|
+
if (A.postRun)
|
|
179
|
+
for (typeof A.postRun == "function" && (A.postRun = [A.postRun]); A.postRun.length; )
|
|
180
|
+
CA(A.postRun.shift());
|
|
181
|
+
e(W);
|
|
182
|
+
}
|
|
183
|
+
function rA(i) {
|
|
184
|
+
k.unshift(i);
|
|
185
|
+
}
|
|
186
|
+
function DA(i) {
|
|
187
|
+
Y.unshift(i);
|
|
188
|
+
}
|
|
189
|
+
function CA(i) {
|
|
190
|
+
W.unshift(i);
|
|
191
|
+
}
|
|
192
|
+
var X = 0, z = null;
|
|
193
|
+
function cA(i) {
|
|
194
|
+
X++, A.monitorRunDependencies && A.monitorRunDependencies(X);
|
|
195
|
+
}
|
|
196
|
+
function AA(i) {
|
|
197
|
+
if (X--, A.monitorRunDependencies && A.monitorRunDependencies(X), X == 0 && z) {
|
|
198
|
+
var s = z;
|
|
199
|
+
z = null, s();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
function IA(i) {
|
|
203
|
+
A.onAbort && A.onAbort(i), i = "Aborted(" + i + ")", D(i), b = !0, i += ". Build with -sASSERTIONS for more info.";
|
|
204
|
+
var s = new WebAssembly.RuntimeError(i);
|
|
205
|
+
throw C(s), s;
|
|
206
|
+
}
|
|
207
|
+
var gA = "data:application/octet-stream;base64,";
|
|
208
|
+
function aA(i) {
|
|
209
|
+
return i.startsWith(gA);
|
|
210
|
+
}
|
|
211
|
+
var $;
|
|
212
|
+
$ = "data:application/octet-stream;base64,AGFzbQEAAAABqAEWYAJ/fwBgAX8AYAN/f38AYAF/AX9gA39/fwF/YAABf2ACf38Bf2AEf39/fwF/YAV/f39/fwBgBH9/f38AYAV/f39/fwF/YAp/f39/f39/f39/AX9gBH9/fn8AYAl/f39/f39/f38Bf2AHf39/f39/fwF/YAABfGAFf35+fn4AYAAAYAN/fn8BfmAGf39/f39/AGAIf39/f39/f38Bf2AGf39/f39/AX8CHwUBYQFhAAoBYQFiAAMBYQFjAAcBYQFkAAMBYQFlAA8DhQKDAgECAQECAgICEAIAAgAAAQAEAAIAAgIAAAEABAABAAACAAAAAAECAAAAAgAAAgICAAEAAAABAgADAgABCAABAwAAAQACAQMCAwMAAQAAAQEBAgABBgIDBgwCAAABAAADAAADAgECAQgDAwYGAAADAQEBDAACAQgCAQEAAAACAAAAAgkDAAEAAAQAAQgAAgICAAICAAEBAgEGAAABEQEBAQIDAgAAAAEAAgMAAAQCCQEAAgkCCQIBBgYCAwoDBAgAAAsFBQAFDQsLAAADAQACAAABAgIBAQABAQADBAABBAIGAwAAAQISBAMKBgcHBAcBDg0TBQUFBQUFBQUHFA4VAwMGAwMEBQFwAQQEBQcBAYACgIACBggBfwFBoL4ECwfPASoBZgIAAWcAoAEBaADJAQFpAP0BAWoA/gEBawD3AQFsAMYBAW0A/AEBbgD7AQFvAPoBAXAAxwEBcQDHAQFyAMYBAXMA+QEBdAD4AQF1AMkBAXYAQgF3AEwBeAD/AQF5AIcCAXoAhgIBQQCFAgFCAIQCAUMAgwIBRACCAgFFAIECAUYAgAIBRwDMAQFIAMsBAUkA9gEBSgD1AQFLAMUBAUwA9AEBTQDzAQFOAPIBAU8A8QEBUADvAQFRAPABAVIA7gEBUwDBAQFUAO0BAVUBAAkMAQBBAQsD7AHrAeoBCqjHA4MCSwIBfgJ/A0AgACACQQN0aiIDIAMpAwAgAXwiAUL//////////wODNwMAIAFCOochASACQQFqIgJBBkcNAAsgACAAKQMwIAF8NwMwC04BAX8jAEFAaiIDJAAgACABIAIQlQEgACACKAI4IAEoAjhqIgE2AjggAUGBgIAQTgRAIANBwC4QDyAAIAMQJyAAQQE2AjgLIANBQGskAAtLAgF+An8DQCAAIAJBA3RqIgMgAykDACABfCIBQv//////////AIM3AwAgAUI4hyEBIAJBAWoiAkEERw0ACyAAIAApAyAgAXw3AyALDQAgABAFIABBQGsQBQtyAQN/IwBBMGsiAyQAA0AgACAEQQN0IgVqIAIgBWopAwAgASAFaikDAHw3AwAgBEEBaiIEQQVHDQALIAAgAigCKCABKAIoaiIBNgIoIAFBgYCACE4EQCADQZApEBQgACADEC0gAEEBNgIoCyADQTBqJAALaAEBfyMAQbABayIDJAAgAjQCOCABNAI4fkKBgIAQWQRAIANBwC4QDyABIAMQJyABQQE2AjgLIAMgASACEF0gA0HwAGoiAUHALhAPIAAgAUG4LykDACADEFwgAEECNgI4IANBsAFqJAALHgAgACABIAIQDiAAQYABaiABQYABaiACQYABahAOC2kBAX8jAEGAAWsiAyQAIAI0AiggATQCKH5CgYCACFkEQCADQZApEBQgASADEC0gAUEBNgIoCyADIAEgAhDpASADQdAAaiIBQZApEBQgACABQegpKQMAIAMQdiAAQQI2AiggA0GAAWokAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALGwAgACABIAIQBiAAQUBrIAFBQGsgAkFAaxAGCwsAIAAgAUEHELkBC80CAQZ/IwBB8AVrIgMkACADQcAuEA8gA0HAAWpBAEE4EBUhBUEHIQQDQCAFIARBA3QiBmogAyAGakE4aykDADcDACAEQQFqIgRBDkcNAAsgAUFAayEEAkAgAigCeCACKAI4aqwgASgCeCIFIAEoAjgiBmqsfkKBgIAQUw0AIAZBAk4EfyABEB0gASgCeAUgBQtBAkgNACAEEB0LIANBgAVqIgcgASACEF0gA0GQBGoiCCAEIAJBQGsiBhBdIANBgAFqIgUgASAEEJUBIAUQBSADQUBrIgEgAiAGEJUBIAEQBSADQaADaiICIAUgARBdIANBsAJqIgEgByAIENYBIAggA0HAAWogCBDXASAHIAcgCBDWASACIAIgARDXASAHENsBIAAgBxCQASAAQQM2AjggAhDbASAAQUBrIAIQkAEgAEECNgJ4IANB8AVqJAALTAECfyMAQfABayICJAAgAkGALxAPIAJBQGsiAyABIAIQXSACQbABaiIBQcAuEA8gACABQbgvKQMAIAMQXCAAQQI2AjggAkHwAWokAAscACAAIAFHBEAgACABEBsgAEFAayABQUBrEBsLCw4AIAAQCCAAQYABahAICwsAIAAgAUEFELkBCykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACwsAIAAgAUEwELcBCyIBAX8jAEFAaiIDJAAgAyACECYgACABIAMQBiADQUBrJAAL1AECA38BfiMAQUBqIgMkAANAIAEgAkEDdGoiBCAEKQMAIAV8IgVC//////////8DgzcDACAFQjqHIQUgAkEBaiICQQZHDQALIAEgASkDMCAFfDcDMCADIAFBOBAfIQNBLyECA0AgACACIgFqIAMpAwAiBTwAAEEAIQIDQCADIAJBA3RqIAVCCIcgAyACQQFqIgJBA3RqKQMAIgVCMoZCgICAgICAgP4Dg4Q3AwAgAkEGRw0ACyADIAMpAzBCCIc3AzAgAUEBayECIAENAAsgA0FAayQACyIBAX8jAEEwayIDJAAgAyACEFEgACABIAMQCSADQTBqJAALngEBBn8jAEGABGsiAyQAIANBgANqIgYgASACEBAgA0GAAmoiBSABQYABaiIHIAJBgAFqIggQECADQYABaiIEIAggAhAOIAMgByABEA4gAxAIIAQQCCADIAMgBBAQIAQgBhArIAMgAyAEEA4gAxAIIAQgBRArIABBgAFqIgEgAyAEEA4gBRApIAAgBSAGEA4gABAIIAEQCCADQYAEaiQACxIAIAAgARAPIAAgASgCODYCOAs9AQF/IwBBsAFrIgIkACACENkBIAIgARDaASACQfAAaiIBQcAuEA8gACABQbgvKQMAIAIQXCACQbABaiQACygBAX8jAEFAaiIBJAAgAUHALhAPIAAgARAnIABBATYCOCABQUBrJAALtgIBCX8jAEGADGsiAiQAIAJBgApqIgogACABEBogAkGABmoiBSAAQYACaiIGIAFBgAJqIgcQGiACQYACaiIDIAAgBhALIAIgASAHEAsgAxATIAIQEyACQYAIaiIJIAMgAhAaIAMgBiAAQYAEaiIIEAsgAiAHIAFBgARqIgcQCyADEBMgAhATIAJBgARqIgQgAyACEBogAyAKED4gAiAFED4gCSAJIAMQCyAGIAkgAhALIAQgBCACEAsgBSAFIAMQCyADIAAgCBALIAIgASAHEAsgAxATIAIQEyADIAIgAxAaIAUgBSADEAsgAyAIIAcQGiACIAMQPiAIIAUgAhALIAQgBCACEAsgAxAhIAYgBiADEAsgBBATIAQQISAAIAogBBALIAAQEyAGEBMgCBATIAJBgAxqJAALMwEBfyACBEAgACEDA0AgAyABLQAAOgAAIANBAWohAyABQQFqIQEgAkEBayICDQALCyAACykAIAAgARBHIAAgABCDASAAQYACaiIBIAEQggEgAEGABGoiACAAEIMBC2gBBX8jAEHAAmsiASQAIAEgAEGAAWoiAxASIAFBgAFqIgIgARASIAFBgAJqIgQgAhAbIAIgAUHAAWoiBRAmIAUgBBAbIAEgASACEA4gAyAAEBIgACABEBIgABAIIAMQCCABQcACaiQAC7ALAgd+CX8jAEGwAWsiCyQAIAE0AjgiAiACfkKBgIAQWgRAIAtBwC4QDyABIAsQJyABQQE2AjgLIwBB0AFrIgkkACAJQcABaiABKQMAIgIgAkI/hyIDIAIgAxANIAsgCSkDwAEiAkL//////////wODNwMAIAkpA8gBIgNCBoYgAkI6iIQhBSADQjqIIQZBASEMQQEhDQNAIAlBsAFqIAEpAwAiAiACQj+HIAEgDUEDdCIOaikDACICIAJCP4cQDUECIAwgDEECTRshDyAJKQO4ASEDIAkpA7ABIQJBASEKIA1BA08EQANAIAlBoAFqIAEgCkEDdGopAwAiBCAEQj+HIAEgDSAKa0EDdGopAwAiBCAEQj+HEA0gCSkDoAEiBCACfCICIARUrSAJKQOoASADfHwhAyAKQQFqIgogD0cNAAsLIA1BAWoiEEEBdiERIAsgDmogAkIBhiIEIAV8IgVC//////////8DgzcDACAJQZABaiABKQMAIgcgB0I/hyABIBBBA3QiDmopAwAiByAHQj+HEA0gBCAFVq0gA0IBhiACQj+IhCAGfHwiBEI6hyEHIAkpA5gBIQNBASEKIAkpA5ABIQIgDUECTwRAA0AgCUGAAWogASAKQQN0aikDACIGIAZCP4cgASAQIAprQQN0aikDACIGIAZCP4cQ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IAJBA3QiA2oiBiAGIAMgBGogCEIAUxspAwA3AwAgAkEBaiICQQdHDQALIAVBAUohByAFQQFrIQUgBw0ACwsgBEFAayQACwsAIAAgAUEvELcBC0wBA38jAEHAAWsiASQAIAEgABASIAFBgAFqIgMgABAbIAAgAEFAayICECYgAiADEBsgACABIAAQBiACIAFBQGsgAhAGIAFBwAFqJAALNQEBfyMAQYABayIDJAAgAyACECsgACABIAMQBiAAQUBrIAFBQGsgA0FAaxAGIANBgAFqJAALRwEDfyMAQYABayICJAAgAkFAayIDIAEgAUFAayIEEAYgAyADECYgAiADIAQQBiAAQUBrIAMgARAGIAAgAhAbIAJBgAFqJAALgQkCB34KfyMAQYABayIKJAAgATQCKCICIAJ+QoGAgAhaBEAgCkGQKRAUIAEgChAtIAFBATYCKAsjAEHAAWsiCSQAIAlBsAFqIAEpAwAiAiACQj+HIgQgAiAEEA0gCiAJKQOwASICQv//////////AIM3AwAgCSkDuAEiBEIIhiACQjiIhCEFIARCOIghBEEBIQ5BASENA0AgCUGgAWogASkDACICIAJCP4cgASANQQN0IhBqIgspAwAiAiACQj+HEA0gCSkDqAEhAyAJKQOgASECIAwEQCAJQZABaiABKQMIIgYgBkI/hyALQQhrKQMAIgYgBkI/hxANIAkpA5ABIgYgAnwiAiAGVK0gCSkDmAEgA3x8IQMLIA1BAWoiD0EBdiERIAogEGogAkIBhiIGIAV8IgVC//////////8AgzcDACAJQYABaiABKQMAIgcgB0I/hyABIA9BA3RqKQMAIgcgB0I/hxANIAUgBlStIANCAYYgAkI/iIQgBHx8IgZCOIchByAJKQOIASEEIAkpA4ABIQIgDARAIAlB8ABqIAEpAwgiAyADQj+HIAspAwAiAyADQj+HEA0gCSkDcCIDIAJ8IgIgA1StIAkpA3ggBHx8IQQLQQMhDSAJQeAAaiABIBFBA3RqKQMAIgMgA0I/hyIIIAMgCBANIAogD0EDdGogAkIBhiIIIAZCCIYgBUI4iIR8IgUgCSkDYHwiA0L//////////wCDNwMAIAMgBVStIAkpA2ggBSAIVK0gBEIBhiACQj+IhCAHfHx8fCICQjiHIQQgAkIIhiADQjiIhCEFQQEhDCAOIRJBACEOIBINAAsgCUHQAGogASkDECICIAJCP4cgASkDGCICIAJCP4cQDSAJQUBrIAEpAwgiAiACQj+HIAEpAyAiAiACQj+HEA0gCiAJKQNQIgYgCSkDQHwiAkIBhiIHIAV8IgVC//////////8AgzcDKCAJQSBqIAEpAxAiAyADQj+HIAEpAyAiAyADQj+HEA0gCUEwaiABKQMYIgMgA0I/hyIIIAMgCBANIAogCSkDICIDQgGGIgggBSAHVK0gAiAGVK0gCSkDWCAJKQNIfHxCAYYgAkI/iIQgBHx8IgZCCIYgBUI4iIR8IgIgCSkDMHwiBEL//////////wCDNwMwIAlBEGogASkDGCIFIAVCP4cgASkDICIFIAVCP4cQDSAKIAkpAxAiBUIBhiIHIAIgBFatIAkpAzggAiAIVK0gCSkDKEIBhiADQj+IhCAGQjiHfHx8fCIDQgiGIARCOIiEfCICQv//////////AIM3AzggCSABKQMgIgQgBEI/hyIGIAQgBhANIAogCSkDACIEIAIgB1StIAkpAxhCAYYgBUI/iIQgA0I4h3x8IgVCCIYgAkI4iIR8IgJC//////////8AgzcDQCAKIAIgBFStIAkpAwggBUI4h3x8QgiGIAJCOIiENwNIIAlBwAFqJAAgCkHQAGoiAUGQKRAUIAAgAUHoKSkDACAKEHYgAEECNgIoIApBgAFqJAAL/wMCBn8CfiMAQTBrIgQkAANAIAAgAkEDdGoiAyADKQMAIAh8IghC//////////8AgzcDACAIQjiHIQggAkEBaiICQQRHDQALIAAgACkDICAIfDcDIEEEIQMCQAJAA0AgACADIgJBA3QiA2opAwAiCCABIANqKQMAIglRBEAgAkEBayEDIAINAQwCCwsgCCAJVw0BCwNAIAFBARB3IAVBAWohBUEEIQMDQCAAIAMiAkEDdCIDaikDACIIIAEgA2opAwAiCVEEQCACQQFrIQMgAg0BDAILCyAIIAlVDQALA0AgASkDACEIQQAhAgNAIAEgAkEDdGogCEIBhyABIAJBAWoiAkEDdGopAwAiCEI3hkKAgICAgICAwACDhDcDACACQQRHDQALIAEgASkDIEIBhzcDIEEAIQJBACEDA0AgBCADQQN0IgZqIAAgBmopAwAgASAGaikDAH03AwAgA0EBaiIDQQVHDQALQgAhCANAIAQgAkEDdGoiAyADKQMAIAh8IghC//////////8AgzcDACAIQjiHIQggAkEBaiICQQRHDQALIAQgBCkDICAIfCIINwMgQQAhAgNAIAAgAkEDdCIDaiIGIAYgAyAEaiAIQgBTGykDADcDACACQQFqIgJBBUcNAAsgBUEBSiEHIAVBAWshBSAHDQALCyAEQTBqJAALLQAgACABIAIQhQEgAEGAAWogAUGAAWogAhCFASAAQYACaiABQYACaiACEIUBCx4AIAAgAUcEQCAAIAEQEiAAQYABaiABQYABahASCwtjAQR/IwBBwAFrIgIkACACQYABaiIDIAEgAUFAayIEEAYgAiAEECYgAkFAayIFIAEgARAGIAUQBSAAQUBrIAUgBBAKIAAgASACEAYgAxAFIAAQBSAAIAMgABAKIAJBwAFqJAALKAAgACABIAIQWSAAQUBrIAFBQGsgAhBZIABBgAFqIAFBgAFqIAIQWQuDAQEDfyMAQYABayIEJAACQCACIAJBH3UiA3MgA2siAyABKAI4bEGAgIAQTARAIAAgASADEJMBIAAgASgCOCADbDYCOAwBCyAEQUBrIgUQ3AEgBSADEF4gBRAFIAQgBRARIAAgASAEEAoLIAJBAEgEQCAAIAAQJiAAEAULIARBgAFqJAALKwAgACABIAIQmgEgAEEwaiABQTBqIAIQmgEgAEHgAGogAUHgAGogAhCaAQuUAQEEfyMAQYADayIDJAAgAyABIAFBgAFqIgQQECADQYABaiICIAQQEiADQYACaiIFIAEgBBAOIAIQKSACIAEgAhAOIAUQCCACEAggACAFIAIQECACIAMQEiACECkgAiACIAMQDiACEAggAiACECsgACAAIAIQDiAAQYABaiIBIAMgAxAOIAAQCCABEAggA0GAA2okAAsOACAAED8gAEGAAWoQPwsgAQF/IwBBQGoiAiQAIAIgARAPIAAgAhARIAJBQGskAAskACAAIAEQEiAAQYABaiABQYABahASIABBgAJqIAFBgAJqEBILWwEDfyMAQYACayICJAAgAkGAAWoiAyABEDAgAiADIAEQECAAIAIQgAEgAEGAAmoiBCACEIABIABBgARqIgAgAhCAASAEIAQgARBnIAAgACADEGcgAkGAAmokAAsOACAAENwBIABBATYCOAv8AQIFfwR+IwBB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a0EDdCIMaikDACACIAhBA3QiDWopAwB9IgUgBUI/hyABIA1qKQMAIAEgDGopAwB9IgUgBUI/hxANIAkpAwAiBSADfCIDIAVUrSAJKQMIIAR8fCEEIAhBAWsiCCAKSw0ACwsgACALQQN0aiADQv//////////A4M3AwAgBEIGhiADQjqIhCEDIARCOochBCALQQFqIgtBDUcNAAsgACADNwNoIAlBoAFqJAALWQIBfgJ/A0AgACADQQN0aiIEIAQpAwAgAnwiAkL//////////wODNwMAIAJCOochAiADQQFqIgNBBkcNAAsgACAAKQMwIAJ8NwMwIAAgACkDACABrHw3AwALZAEDfkE6IAFrrSEEIAGtIQJBACEBIAApAwAhAwNAIAAgAUEDdGogAyAChyAAIAFBAWoiAUEDdGopAwAiAyAEhkL//////////wODhDcDACABQQZHDQALIAAgACkDMCAChzcDMAv9BQEIfyMAQYADayIDJAACQEHAJygCAEUEQCADQdACaiICIABBMGoiBxAsIANBoAJqIgYgByAAQeAAaiIBEAwgA0HwAWoiBCABECwgASACIAIQCSABEAcgASABIAEQCSABIAEgARAJIAEQByAEIARBxCcoAgBBA2wQOiADQZABaiIIIAQgARAMIANB4ABqIgUgAiAEEAkgBRAHIAEgASAGEAwgBiAEIAQQCSAEIAQgBhAJIAIgAiAEEBkgAhAHIAUgBSACEAwgBSAFIAgQCSAGIAAgBxAMIAIQByAAIAIgBhAMIAAgACAAEAkgABAHIAcgBRBEDAELQcQnKAIAIgRFBEAgAxCbAQsgA0HQAmogABAsIANBoAJqIABBMGoiBRAsIANB8AFqIgIgAEHgAGoiBxAsIANBwAFqIgEgACAFEAwgASABIAEQCSABEAcgA0EwaiIBIAcgABAMIAEgASABEAkgARAHAkAgBEUEQCADQeAAaiACIAMQDAwBCyADQeAAaiADQfABaiAEEDoLIANB4ABqIgEgASADQTBqIgYQGSADQZABaiICIAEgARAJIAIQByABIAEgAhAJIAIgA0GgAmoiCCABEBkgAhAHIAEgASAIEAkgARAHIAEgASACEAwgAiACIANBwAFqIgIQDCACIANB8AFqIgEgARAJIAEgASACEAkCQCAERQRAIAYgBiADEAwMAQsgA0EwaiIBIAEgBBA6CyADQTBqIgIgAiADQfABaiIGEBkgAiACIANB0AJqIgEQGSACEAcgA0HAAWoiBCACIAIQCSACIAIgBBAJIAIQByAEIAEgARAJIAEgASAEEAkgASABIAYQGSABEAcgASABIAIQDCADQeAAaiIEIAQgARAJIAEgBSAHEAwgASABIAEQCSABEAcgAiACIAEQDCAAIANBkAFqIAIQGSABIAEgARAJIAEQByADQaACaiICIAIgAhAJIAIQByAHIAEgAhAMIAAQByAFIAQQRCAFEAcLIAcQByADQYADaiQACzYBAX8gAEEAQSgQFSEAA0AgAEEIEHcgACAAKQMAIAEgAmoxAAB8NwMAIAJBAWoiAkEgRw0ACwvUAQIDfwF+IwBBMGsiAyQAA0AgASACQQN0aiIEIAQpAwAgBXwiBUL//////////wCDNwMAIAVCOIchBSACQQFqIgJBBEcNAAsgASABKQMgIAV8NwMgIAMgAUEoEB8hA0EfIQIDQCAAIAIiAWogAykDACIFPAAAQQAhAgNAIAMgAkEDdGogBUIIhyADIAJBAWoiAkEDdGopAwAiBUIwhkKAgICAgIDA/wCDhDcDACACQQRHDQALIAMgAykDIEIIhzcDICABQQFrIQIgAQ0ACyADQTBqJAALnwECAn8DfgNAIAAgAUEDdGoiAiACKQMAIAN8IgNC//////////8AgzcDACADQjiHIQMgAUEBaiIBQQRHDQALIAAgACkDICADfDcDIEEEIQICQANAIAAgAiIBQQN0aikDACIDQgBSDQEgAUEBayECIAENAAtBAA8LIAFBOGwhAQNAIAFBAWohASADQgF8IQUgA0ICfyEDIAVCAlYNAAsgAQuiBQEJfyMAQfAfayIEJAAgABBKIABBgAJqEEpxRQRAIAAQfSAEQfAbaiICIAAQNyACEEYgBEHwA2ogABA3QQEhAgNAIARB8ANqIAJBgANsaiIDIANBgANrEDcgAyAEQfAbaiIDEGUgAkEBaiICQQhHDQALIARB8B5qIgIgARAPIAIQPCEFIAJBARBeIAIQBSACEDwhBiAEQbAfaiIBIAIQDyABQQEQXiABEAUgAiABIAUQlgEgAyAAIAYQLiAEQfAAaiADEDcgAhBDIgFBA2pBBG0iAkEBaiEFIAFBekgiBkUEQEEAIQEgAkEAIAJBAEobIQcDQCABIARqIARB8B5qIgNBBRBbQRBrIgg6AAAgAyAIwBBwIAMQBSADQQQQXyABIAdHIQkgAUEBaiEBIAkNAAsLIAQgBWogBEHwHmpBBRBbIgE6AAAgACAEQfADaiABwEEBa0ECbcFBgANsahA3IAZFBEADQCACIARqLAAAIQcjAEGAA2siBiQAIARB8BtqIgEgBEHwA2oiAyAHQR91IgUgB3MgBUF/c2pBAm0iBUEBa0EfdhAuIAEgA0GAA2ogBUEBc0EBa0EfdhAuIAEgA0GABmogBUECc0EBa0EfdhAuIAEgA0GACWogBUEDc0EBa0EfdhAuIAEgA0GADGogBUEEc0EBa0EfdhAuIAEgA0GAD2ogBUEFc0EBa0EfdhAuIAEgA0GAEmogBUEGc0EBa0EfdhAuIAEgA0GAFWogBUEHc0EBa0EfdhAuIAYgARA3IAYQUiABIAYgB0EfdhAuIAZBgANqJAAgABBGIAAQRiAAEEYgABBGIAAgARBlIAJBAEohCiACQQFrIQIgCg0ACwsgBEHwAGoiARBSIAAgARBlIAEQUiAAEH0LIARB8B9qJAALsQMBC38jAEGACGsiAyQAIANBgAdqIgYgACABEBAgA0GABmoiByAAQYABaiIKIAFBgAFqIgIQECADQYAFaiIIIABBgAJqIgsgAUGAAmoiDBAQIANBgARqIgkgACAKEA4gCRAIIANBgANqIgQgASACEA4gBBAIIAkgCSAEEBAgBCAGIAcQDiAJIAkgBBAqIAkQCCAEIAogCxAOIAQQCCADQYACaiIFIAIgDBAOIAUQCCAEIAQgBRAQIAUgByAIEA4gBCAEIAUQKiAEEAggBSAAIAsQDiAFEAggA0GAAWoiAiABIAwQDiACEAggBSAFIAIQECACIAYgCBAOIAIgBSACECogAhAIIAUgBiAGEA4gBiAGIAUQDiAGEAggCCAIQfQpKAIAQQNsIgEQSCAIECkgAyAHIAgQDiADEAggByAHIAgQKiAHEAggAiACIAEQSCACECkgAhAIIAUgAiAEEBAgCCAJIAcQECAAIAggBRAqIAIgAiAGEBAgByAHIAMQECAKIAIgBxAOIAYgBiAJEBAgAyADIAQQECALIAMgBhAOIAAQCCAKEAggCxAIIANBgAhqJAALLAEDfyAAIAAoAlwiAUEBajYCXCAAIAFqLQBgIQMgAUEfTgRAIAAQqgELIAMLGgAgACABIAIQECAAQYABaiABQYABaiACEBALDgAgABBJIABBgAFqEEkLGAAgACABIAIQCiAAQUBrIAFBQGsgAhAKCyUBAX8jAEFAaiIBJAAgARBPIAAgARAbIABBQGsQOSABQUBrJAALrQIBA39BICEHIwBBoAlrIgUkACAFQaQGahCfASAAKAIAQQBKBEADQCAFQaQGaiAAKAIIIAZqLAAAEEEgBkEBaiIGIAAoAgBIDQALCyABQQBKBEAgBSABQf8BcTYCnAkgBSABQRh2NgKQCSAFIAFBCHZB/wFxNgKYCSAFIAFBEHZB/wFxNgKUCUEAIQYDQCAFQaQGaiAFQZAJaiAGQQJ0aigCABBBIAZBAWoiBkEERw0ACwsCQCACRQ0AIAIoAgBBAEwNAEEAIQYDQCAFQaQGaiACKAIIIAZqLAAAEEEgBkEBaiIGIAIoAgBIDQALCyAFQaQGaiAFEIQBIAMQmQECQCAERQ0AIARBIEwEQCAEIQcMAQsgAyAEQSBrEOYBCyADIAUgBxB4IAVBoAlqJAALCgAgAEEwa0EKSQsYACAAEFpFBEBBAA8LIABBgAFqEFpBAEcLlwIBA38Cf0EAIABB/wFxIgNFDQAaQQAgAUH/AXEiBEUNABogBEHAJWotAAAgA0HAJWotAABqQf8BcEHAI2otAAALIQMgAEGA/gNxRSABQYD+A3FFckUEQCABQQh2Qf8BcUHAJWotAAAgAEEIdkH/AXFBwCVqLQAAakH/AXBBwCNqLQAAIQILQQAhBCAAQYCAgAhJIAFBgICACElyBH9BAAUgAUEYdkHAJWotAAAgAEEYdkHAJWotAABqQf8BcEHAI2otAAALAn9BACAAQYCA/AdxRQ0AGkEAIAFBgID8B3FFDQAaIAFBEHZB/wFxQcAlai0AACAAQRB2Qf8BcUHAJWotAABqQf8BcEHAI2otAAALIAIgA3NzcwsiAQF/IAAgAUE6bSICQQN0aikDACABIAJBOmxrrYinQQFxC1kCAX4CfwNAIAAgA0EDdGoiBCAEKQMAIAJ8IgJC//////////8DgzcDACACQjqHIQIgA0EBaiIDQQZHDQALIAAgACkDMCACfDcDMCAAIAApAwAgAax9NwMAC4wBAgN+A38gACAAKQMwIAGtIgKGIAApAygiA0E6IAFrrSIEh4Q3AzBBBSEBA0AgACABQQN0aiADIAKGQv//////////A4MgACABQQFrIgVBA3RqKQMAIgMgBIeENwMAIAFBAUshByAFIQEgBw0ACyAAIAApAwAgAoZC//////////8DgzcDACAAKQMwGgsaACAAEOUBRQRAQQAPCyAAQeAAahDlAUEARwsfAQF/IwBBMGsiASQAIAEQoQEgACABEDsgAUEwaiQACygBAX8jAEEwayIBJAAgAUGQKRAUIAAgARAtIABBATYCKCABQTBqJAALDgAgABCiASAAQQE2AigL6QYCC34HfyMAQeABayIPJAAgDyADKQMAIgQgAn5C//////////8AgyILNwNgIA9B0ABqIAtCACABKQMAIgwgDEI/hyINEA0gBCAPKQNQIgV8IgYgBVStIA8pA1ggBEI/h3x8IgRCOIcgAykDCCIFQj+HfCAFIARCCIYgBkI4iIQiBXwiBCAFVK18IQVCACEGQQEhEANAIA9BQGsgASAQQQN0IhFqKQMAIgkgCUI/hyIKIAtCABANIA8pA0ggBCAGfCIEIAZUrSAFIAh8fHwgBCAEIA8pA0B8IgRWrXwhBSAQQQFrIhIgEEEBdiIUSwRAA0AgD0EwaiABIBJBA3QiE2opAwAgASAQIBJrQQN0IhVqKQMAfSIHIAdCP4cgFSAPQeAAaiIVaikDACATIBVqKQMAfSIHIAdCP4cQDSAPKQMwIgcgBHwiBCAHVK0gDykDOCAFfHwhBSASQQFrIhIgFEoNAAsLIA9B4ABqIBFqIAIgBH5C//////////8AgyIHNwMAIA9BIGogB0IAIAwgDRANIA9BEGogB0IAIAkgChANIAMgEEEBaiISQQN0aikDACEJIA9BkAFqIBBBBHRqIhAgDykDGCIKNwMIIBAgDykDECIHNwMAIAQgDykDICIEfCIOIARUrSAPKQMoIAV8fCIEQjiHIAlCP4d8IAkgBEIIhiAOQjiIhCIFfCIEIAVUrXwhBSAGIAd8IgYgB1StIAggCnx8IQhBBSERIBIiEEEFRw0ACwNAIAQgBnwiBCAGVK0gBSAIfHwhBSARQQdNBEAgEUEBdiEQQQQhEgNAIA8gASASQQN0IhRqKQMAIAEgESASa0EDdCITaikDAH0iAiACQj+HIBMgD0HgAGoiE2opAwAgEyAUaikDAH0iAiACQj+HEA0gDykDACICIAR8IgQgAlStIA8pAwggBXx8IQUgEkEBayISIBBLDQALCyARQQN0IABqQShrIARC//////////8AgzcDACAFQjiHIAMgEUEBaiIQQQN0aikDACICQj+HfCACIAVCCIYgBEI4iIQiAnwiBCACVK18IQUgCCARQQR0IA9qIhFB0ABqKQMIfSAGIBEpA1AiAlStfSEIIAYgAn0hBiAQIhFBCUcNAAsgACAEQv//////////AIM3AyAgD0HgAWokAAuMAQIDfgN/IAAgACkDICABrSIChiAAKQMYIgNBOCABa60iBIeENwMgQQMhAQNAIAAgAUEDdGogAyAChkL//////////wCDIAAgAUEBayIFQQN0aikDACIDIASHhDcDACABQQFLIQcgBSEBIAcNAAsgACAAKQMAIAKGQv//////////AIM3AwAgACgCJBoLVQECfwJAIAJBAEwNACAAKAIAIQMDQCADIAAoAgRODQEgACgCCCADaiABIARqLQAAOgAAIAAgACgCAEEBajYCACADQQFqIQMgBEEBaiIEIAJHDQALCwv5AgEGfyMAQcAgayIDJAAgA0GAH2oiBUGALBAPIANBwB5qIgFBwC8QNiADQYAeaiICQYAwEDYgA0HAH2oiBCABEBsgBEFAayACEBsgA0GAGGoiASAAEH4gACAAECAgACABEB4gASAAEEcgACAEEDggACAEEDggACABEB4gA0GAEmoiBiAAEKkBIANBgAxqIgEgBiAFED0gASABECAgBUEBEF8gA0GABmoiAiABIAUQPSACIAIQICAFQQEQcSADIAAQICABIAMQHiABIAEQICABIAIQHiACIAEgBRA9IAIgAhAgIAMgAiAFED0gAyADECAgASABECAgAyABEB4gASABECAgASAEEDggASAEEDggASAEEDggAiAEEDggAiAEEDggASACEB4gAiADIAUQPSACIAIQICACIAYQHiACIAAQHiABIAIQHiACIAMQRyACIAQQOCABIAIQHiAAIAEQRyAAEDUgAEGAAmoQNSAAQYAEahA1IANBwCBqJAAL7gMBBn8jAEGACmsiBiQAIAFBgAJqIQogAUGAAWohCQJAIAEgAkYEQCAGQYAJaiIHIAEQEiAGQYAIaiIIIAkQEiAGQYAHaiICIAoQEiAGQYAGaiIFIAgQEiAFIAUgAhAQIAcgBxAwIAggCBAwIAIgAhAwIAUgBUEEEEggBSAFECsgBRAIIAcgB0EGEEggByAHIAMQaSACIAJB9CkoAgBBA2wQSCAFIAUgBBBpIAIQKSACIAIgAhAOIAUQKSAFEAggAhAIIAggCCAIEA4gAiACIAgQKiACEAggBkGABGogBSACEKwBIAZBgAJqEGggBiAHEKsBIAEQRgwBCyAGQYAJaiIIIAEQEiAGQYAIaiIFIAkQEiAGQYAHaiIJIAoQEiAGQYAGaiIHIAkQEiAJIAkgAkGAAWoiChAQIAcgByACEBAgCCAIIAcQKiAIEAggBSAFIAkQKiAFEAggCSAIEBIgCCAIIAQQaSAIECkgCBAIIAkgCSAKEBAgByAFEBIgByAHIAIQECAHIAcgCRAqIAcQCCAFIAUgAxBpIAUgBRArIAUQCCAGQYAEaiAIIAcQrAEgBkGAAmoQaCAGIAUQqwEgASACEGULIAAgBkGABGoQLyAAQYACaiAGQYACahAvIABBgARqIAYQLyAGQYAKaiQAC5AEAQh/IwBBwAtrIgMkACADQYALaiIFQYAsEA8gA0HACmoiBCAFEA8gBBAFIANBgApqIgUgBEEDEJMBIAUQBSADQcAJaiACEBsgA0GACWogAkFAaxAbIANBgAZqIAEQNyAAEGogAEGAAWoQSSAAQYACahBoIABBgARqEGggBRBDIgJBA04EQCACQQJrIQIDQCMAQYAIayIGJAAgBkGABmoiBCAAEDQgBkGABGoiByAAQYACaiIIIABBgARqIgUQGiAHIAcgBxALIAcQEyAGQYACaiIJIAUQNCAGIAAgCBAaIAYgBiAGEAsgBSAAIAUQCyAFIAggBRALIAUQEyAFIAUQNCAAIAQQLyAEIAQgBxALIAQQEyAEIAQgCRALIAQgBCAGEAsgBBATIAQgBBA+IAcQISAJECEgACAAIAcQCyAIIAkgBhALIAUgBSAEEAsgABATIAgQEyAFEBMgBkGACGokACADIANBgAZqIgQgBCADQcAJaiADQYAJahB6IAAgAxB/AkACQAJAIANBgApqIAIQbyADQcAKaiACEG9rQQFqDgMBAgACCyADIANBgAZqIAEgA0HACWogA0GACWoQeiAAIAMQfwwBCyABEFIgAyADQYAGaiABIANBwAlqIANBgAlqEHogACADEH8gARBSCyACQQFKIQogAkEBayECIAoNAAsLIAAgABAgIANBwAtqJAALSAECfyMAQYACayIBJAAgAUGAAWoiAkHALBA2IAFBwAFqQYAtEDYgAUHALRA2IAFBQGtBgC4QNiAAIAIgARCmASABQYACaiQAC64BAQV/IwBBgAJrIgEkAAJAIAAQSiAAQYACaiIDEEpxDQAgAUGAAWoQaiMAQUBqIgIkACACEE8gAxAdIANBQGsiBBAdAn8gAyACEFgEQEEBIAQQWg0BGgtBAAshBSACQUBrJAAgBQRAIAAQPyAAQYABahA/DAELIAEgAxCuASAAIAAgARAQIABBgAFqIgIgAiABEBAgABA/IAIQPyADIAFBgAFqEBILIAFBgAJqJAALvgIBB38jAEGACGsiAiQAIAJBgAZqIgcgARA0IAJBgARqIgQgAUGAAmoiAyABQYAEaiIGEBogBBAhIAcgByAEEIEBIAcQEyAEIAYQNCAEECEgAkGAAmoiBSABIAMQGiAEIAQgBRCBASAEEBMgBSADEDQgAiABIAYQGiAFIAUgAhCBASAFEBMgAiADIAUQGiACECEgACAHIAEQGiACIAAgAhALIABBgARqIgggBCAGEBogCBAhIAIgCCACEAsgAhATIwBBgAJrIgMkACADQYABaiIBIAIQMCADIAJBgAFqIgYQMCADECkgAxAIIAEgASADECogASABEK4BIAIgASACEBAgASABECsgARAIIAYgASAGEBAgA0GAAmokACAAIAcgAhAaIABBgAJqIAQgAhAaIAggBSACEBogAkGACGokAAuMAgEIfyMAQYAMayIDJAAgA0GACmoiCCAAIAEQGiADQYACaiICIAAgAEGAAmoiBRALIAIQEyADQYAIaiIEIAIgARAaIAIgBSAAQYAEaiIHEAsgAhATIANBgARqIgYgAiABQYAFaiIJEGcgBhAhIAIgCBA+IAQgBCACEAsgBSAEEC8gA0GABmoiBCACEC8gAiAAIAcQCyADIAEgAUGABGoQCyACEBMgAxATIAIgAyACEBogBCAEIAIQCyACIAcgCRBnIAIQISADIAIQPiACECEgByAEIAMQCyAGIAYgAxALIAUgBSACEAsgBhATIAYiARAhIAAgCCABEAsgABATIAUQEyAHEBMgA0GADGokAAseACAAIAAQrwEgAEGAAWoiACAAEK8BIAAgASAAEBAL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ApwBIANBAWoiAyAHRw0ACwsLKQEBfyMAQUBqIgIkACACQcAuEA8gACACQbgvKQMAIAEQXCACQUBrJAAL5A8CBn8CfiMAQYADayIDJAAgASACECcgA0HAAmogAUE4EB8aIANBgAJqIAJBOBAfGiADQgE3AwAgA0EIckEAQTAQFRogA0HAAWogA0E4EB8aIANBgAFqQQBBOBAVGiADQbABaiEHIANB8AFqIQhBBiEBA0BBBiEEAkACQCABIgVBA3QiASADQcACamopAwAgASADaikDAFEEQCAFQQFrIQEgBUUNAQwDCwNAIAQiAUEDdCIEIANBgAJqaikDACADIARqKQMAUg0CIAFBAWshBCABDQALC0EGIQQgAAJ/A0AgA0GAAWogBCIBQQN0IgIgA0HAAmpqKQMAIAIgA2opAwBSDQEaIAFBAWshBCABDQALIANBwAFqC0E4EB8aIANBgANqJAAPCyADKQPAAiIJQgKBp0UEQEEAIQEDQCADQcACaiIEIAFBA3RqIAlCAYcgAUEBaiIBQQN0IARqKQMAIglCOYZCgICAgICAgIACg4Q3AwAgAUEGRw0AIAMgAykD8AJCAYc3A/ACQQAhAUEAIQQgAykDwAEiCUICgacEQANAIARBA3QiBSADQcABamoiBiAGKQMAIAIgBWopAwB8NwMAIARBAWoiBEEHRw0AC0IAIQkDQCADQcABaiABQQN0aiIEIAQpAwAgCXwiCUL//////////wODNwMAIAlCOochCSABQQFqIgFBBkcNAAsgAyADKQPwASAJfDcD8AEgAykDwAEhCQtBACEBA0AgA0HAAWoiBCABQQN0aiAJQgGHIAFBAWoiAUEDdCAEaikDACIJQjmGQoCAgICAgICAAoOENwMAIAFBBkcNAAsgAyADKQPwAUIBhzcD8AFBACEBIAMpA8ACIglCAoGnRQ0ACwsgAykDgAIiCUICgadFBEBBACEBA0AgA0GAAmoiBCABQQN0aiAJQgGHIAFBAWoiAUEDdCAEaikDACIJQjmGQoCAgICAgICAAoOENwMAIAFBBkcNACADIAMpA7ACQgGHNwOwAkEAIQFBACEEIAMpA4ABIglCAoGnBEADQCAEQQN0IgUgA0GAAWpqIgYgBikDACACIAVqKQMAfDcDACAEQQFqIgRBB0cNAAtCACEJA0AgA0GAAWogAUEDdGoiBCAEKQMAIAl8IglC//////////8DgzcDACAJQjqHIQkgAUEBaiIBQQZHDQALIAMgAykDsAEgCXw3A7ABIAMpA4ABIQkLQQAhAQNAIANBgAFqIgQgAUEDdGogCUIBhyABQQFqIgFBA3QgBGopAwAiCUI5hkKAgICAgICAgAKDhDcDACABQQZHDQALIAMgAykDsAFCAYc3A7ABQQAhASADKQOAAiIJQgKBp0UNAAsLQQYhBAJ/AkACQANAIAQiAUEDdCIEIANBwAJqaikDACIJIANBgAJqIARqKQMAIgpRBEAgAUEBayEEIAENAQwCCwtBACEBQQAhBCAJIApXDQELQQAhAUEAIQQDQCAEQQN0IgUgA0HAAmpqIgYgBikDACADQYACaiAFaikDAH03AwAgBEEBaiIEQQdHDQALQgAhCQNAIANBwAJqIAFBA3RqIgQgBCkDACAJfCIJQv//////////A4M3AwAgCUI6hyEJIAFBAWoiAUEGRw0ACyADIAMpA/ACIAl8NwPwAkEGIQQCQAJAAkADQCAEIgFBA3QiBCADQcABamopAwAiCSADQYABaiAEaikDACIKUQRAIAFBAWshBCABDQEMAgsLQQAhAUEAIQQgCSAKVw0BC0EAIQEDQCABQQN0IgQgA0HAAWpqIgUgBSkDACADQYABaiAEaikDAH03AwAgAUEBaiIBQQdHDQALDAELA0AgBEEDdCIFIANBQGtqIAIgBWopAwAgA0GAAWogBWopAwB9NwMAIARBAWoiBEEHRw0ACwNAIAFBA3QiBCADQcABamoiBSADQUBrIARqKQMAIAUpAwB8NwMAIAFBAWoiAUEHRw0ACwtBACEBQgAhCQNAIANBwAFqIAFBA3RqIgQgBCkDACAJfCIJQv//////////A4M3AwAgCUI6hyEJIAFBAWoiAUEGRw0ACyAIDAELA0AgBEEDdCIFIANBgAJqaiIGIAYpAwAgA0HAAmogBWopAwB9NwMAIARBAWoiBEEHRw0AC0IAIQkDQCADQYACaiABQQN0aiIEIAQpAwAgCXwiCUL//////////wODNwMAIAlCOochCSABQQFqIgFBBkcNAAsgAyADKQOwAiAJfDcDsAJBBiEEAkACQAJAA0AgBCIBQQN0IgQgA0GAAWpqKQMAIgkgA0HAAWogBGopAwAiClEEQCABQQFrIQQgAQ0BDAILC0EAIQFBACEEIAkgClcNAQtBACEBA0AgAUEDdCIEIANBgAFqaiIFIAUpAwAgA0HAAWogBGopAwB9NwMAIAFBAWoiAUEHRw0ACwwBCwNAIARBA3QiBSADQUBraiACIAVqKQMAIANBwAFqIAVqKQMAfTcDACAEQQFqIgRBB0cNAAsDQCABQQN0IgQgA0GAAWpqIgUgA0FAayAEaikDACAFKQMAfDcDACABQQFqIgFBB0cNAAsLQQAhAUIAIQkDQCADQYABaiABQQN0aiIEIAQpAwAgCXwiCUL//////////wODNwMAIAlCOochCSABQQFqIgFBBkcNAAsgBwsiASABKQMAIAl8NwMAQQYhAQwACwAL/AUCBX8CfiMAQfAAayIFJAAgBUEAQfAAEBUhBSABEENBAEoEQANAAn8gA0UEQCACEGYMAQsgBEEBdQshBCAFENUBIAUgBSkDACAEQQFxrXw3AwAgA0EBakEHcSEDIAZBAWoiBiABEENBAXRIDQALCyAAIQJBACEDIwBB4AFrIgQkAANAIAUgA0EDdGoiACAAKQMAIAh8IghC//////////8DgzcDACAIQjqHIQggA0EBaiIDQQ1HDQALIAUgBSkDaCAIfDcDaCAEQfAAaiABQTAQHxogBCABKQMwIghCOoc3A6gBIAQgCEL//////////wODNwOgASAEQbABakEAQTAQFRpBDSEAAkACQANAIAUgACIBQQN0IgBqKQMAIgkgBEHwAGogAGopAwAiCFEEQCABQQFrIQAgAQ0BDAILCyAIIAlTDQAMAQtBACEGA0AgBEHwAGoQ1QEgBkEBaiEGQQ0hAANAIAUgACIBQQN0IgBqKQMAIgkgBEHwAGogAGopAwAiCFEEQCABQQFrIQAgAQ0BDAILCyAIIAlTDQALA0BBACEDIAQpA3AhCANAIARB8ABqIgAgA0EDdGogCEIBhyADQQFqIgNBA3QgAGopAwAiCEI5hkKAgICAgICAgAKDhDcDACADQQ1HDQALIAQgBCkD2AFCAYc3A9gBQQAhA0EAIQADQCAEIABBA3QiAWogASAFaikDACAEQfAAaiABaikDAH03AwAgAEEBaiIAQQ5HDQALQgAhCANAIAQgA0EDdGoiACAAKQMAIAh8IghC//////////8DgzcDACAIQjqHIQggA0EBaiID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KCAIQQBKBEADQCABIAEQLCABIAEQLCABIAEQLCABIAEQLCABIAEgAkEwaiAEQQFrIgMgAkGwBmpqLAAAQTBsahAMIARBAUohDCADIQQgDA0ACwsgAkGAB2oiBEGQKRAUIAEgBBAtIAFBATYCKCACQbAHaiQAIAVBMGokACAAIAAgARAMIABBMGoiBCAEIAEQDCAEEHQgABB0IAYgChBECyABQeAAaiQACwkAIABBADYCAAsmACAAIAEgAhCkASAAQQAgAmsgACgCKCIAIAEoAihzcSAAczYCKAshAQF/IwBBMGsiASQAIAFB0CcQFCAAIAEQOyABQTBqJAALWQIBfgJ/A0AgACADQQN0aiIEIAQpAwAgAnwiAkL//////////wCDNwMAIAJCOIchAiADQQFqIgNBBEcNAAsgACAAKQMgIAJ8NwMgIAAoAgBBfyABdEF/c3ELWQIBfgJ/A0AgACADQQN0aiIEIAQpAwAgAnwiAkL//////////wCDNwMAIAJCOIchAiADQQFqIgNBBEcNAAsgACAAKQMgIAJ8NwMgIAAgACkDACABrH03AwALWQIBfgJ/A0AgACADQQN0aiIEIAQpAwAgAnwiAkL//////////wCDNwMAIAJCOIchAiADQQFqIgNBBEcNAAsgACAAKQMgIAJ8NwMgIAAgACkDACABrHw3AwALXgAgAEEoakEAQYACEBUaIABBIDYC6AIgAEKrs4/8kaOz8NsANwIgIABC/6S5iMWR2oKbfzcCGCAAQvLmu+Ojp/2npX83AhAgAELnzKfQ1tDrs7t/NwIIIABCADcCAAsCAAslACAAQgE3AwAgAEIANwMIIABCADcDECAAQgA3AxggAEIANwMgCwsAIABBAEEoEBUaC1UCAX8BfiAAKQMAIQIDQCAAIAFBA3RqIAJCBIcgACABQQFqIgFBA3RqKQMAIgJCNIZC//////////8Ag4Q3AwAgAUEERw0ACyAAIAApAyBCBIc3AyALDQAgACABIAJBBRC4AQsJACAAQQUQuwEL2wEBBn8jAEGAAmsiBSQAIAUgAhAwIwBBwAFrIgQkACAEQUBrIgMgARAwIAVBgAFqIgYgAyABEBAgBEGAKhAPIAMgBBARIANBQGsQOSADEAggAxApIAMQCCAGIAMgBhAOIAYQPyAEQcABaiQAIABBgAJqIQMgAEGAAWohBCAFEB0gBUFAayIHEB0gBhAdIAZBQGsiCBAdAkACfyAFIAYQWARAQQEgByAIEFgNARoLQQALRQRAIAAQSSAEEGogAxBJDAELIAAgARASIAQgAhASIAMQagsgBUGAAmokAAueAgEBfyMAQUBqIgIkACACIAEoAggQFiAAIAIQESACIAEoAghBMGoQFiAAQUBrIAIQESACIAEoAghB4ABqEBYgAEGAAWogAhARIAIgASgCCEGQAWoQFiAAQcABaiACEBEgAiABKAIIQcABahAWIABBgAJqIAIQESACIAEoAghB8AFqEBYgAEHAAmogAhARIAIgASgCCEGgAmoQFiAAQYADaiACEBEgAiABKAIIQdACahAWIABBwANqIAIQESACIAEoAghBgANqEBYgAEGABGogAhARIAIgASgCCEGwA2oQFiAAQcAEaiACEBEgAiABKAIIQeADahAWIABBgAVqIAIQESACIAEoAghBkARqEBYgAEHABWogAhARIAJBQGskAAumAgEBfyMAQUBqIgIkACAAQcAENgIAIAIgARAcIAAoAgggAhAYIAIgAUFAaxAcIAAoAghBMGogAhAYIAIgAUGAAWoQHCAAKAIIQeAAaiACEBggAiABQcABahAcIAAoAghBkAFqIAIQGCACIAFBgAJqEBwgACgCCEHAAWogAhAYIAIgAUHAAmoQHCAAKAIIQfABaiACEBggAiABQYADahAcIAAoAghBoAJqIAIQGCACIAFBwANqEBwgACgCCEHQAmogAhAYIAIgAUGABGoQHCAAKAIIQYADaiACEBggAiABQcAEahAcIAAoAghBsANqIAIQGCACIAFBgAVqEBwgACgCCEHgA2ogAhAYIAIgAUHABWoQHCAAKAIIQZAEaiACEBggAkFAayQAC+kBAQV/IwBBgAhrIgMkACADQYAGaiICIAEQLyAAIAEQNCADIAAgABALIAAgAyAAEAsgABATIAIgAhCCASACIAIgAhALIAAgACACEAsgA0GABGoiBCABQYAEaiIGEDQgBBAhIAMgBCAEEAsgBCAEIAMQCyAEEBMgA0GAAmoiBSABQYACaiICEDQgAyAFIAUQCyAFIAUgAxALIAUQEyAAQYACaiIBIAIQgwEgASABIAEQCyAAQYAEaiICIAYQggEgAiACIAIQCyABIAQgARALIAIgBSACEAsg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AgAgBUEfdCEFIAJBAWoiAkEERw0ACyAFBEAgASABKAIAQYCAgIh+czYCAAsgB0EBaiIHQYABRw0ACyAAQgA3AqAQIABBqBBqQgA3AgACQCADQQxGBEBBACECA0AgACACakGgFGogAiAEai0AADoAACACQQFqIgJBDEcNAAsgAEGsFGpBgICACDYAACAAQZAQaiAAQaAUaikAADcAACAAQZgQaiAAQagUaikAADcAAAwBCyAAQQE2ArAQIANBAEoEQEEAIQJBACEFA0AgACAFakGAEGoiASABLQAAIAIgBGotAABzOgAAIAAgACgCrBBBAWoiATYCrBAgAUUEQCAAIAAoAqgQQQFqNgKoEAsgAkEBaiECIAVBDk0EQCAFQQFqIQUgAiADSA0BCyAAEFRBACEFIAIgA0gNAAsLIANBD3EEQCAAQQI2ArAQCyAAQaAQaiEBIAAQugFBACECA0AgACACaiIDQaAUaiADQYAQaiIELQAAIgU6AAAgA0GQEGogBToAACAEQQA6AAAgAkEBaiICQRBHDQALIAFCADcCACABQgA3AggLIABBADYCsBAgBkEQaiQAC6oBAQN/IwBBEGsiAiQAIAAtAABBBEYEQCACQsCBgICAGDcCBCACIABBAWo2AgwjAEHAAmsiACQAIABBgAJqIgMgAigCDBAWIABBgAFqIgQgAxARIAMgAigCDEEwahAWIABBwAFqIAMQESADIAIoAgxB4ABqEBYgACADEBEgAyACKAIMQZABahAWIABBQGsgAxARIAEgBCAAEKYBIABBwAJqJAALIAJBEGokAAtXAQJ/IwBBgAFrIgIkACACQUBrIQMgARBtRQRAIAEQjgEgAiABQUBrEBwgAhA8GiADIAEQHAsgAEEEOgAAIABBAWogAxAYIABBMWogAhAYIAJBgAFqJAALuwoBDn8jAEGgE2siCiQAAn8gByAFQbQEbSILQQAgBWsgC0HMe2xHaiINQcAEbCILRwRAIAogBzYCBCAKIAs2AgBB8TAgChCIAUF/DAELAkAgACgCrBAiCwRAIAAoArAQIAVODQELIAsQQiAFEEwhCyAAIAU2ArAQIAAgCzYCrBALIAogAjYC6AogCkKQgICAgAI3AuAKIAogAzYC6AQgCkKMgICAwAE3AuAEQQAhByAKQeQzKAIANgIoIApB3DMpAgA3AyAgCiAENgLoECAKIAU2AuQQIAogBTYC4BAgCiALNgLoEiAKIAU2AuQSIAogBTYC4BIgCiAINgKoEiAKQpCAgICAAjcCoBIgCkGgEmohDkEAIQMjAEGwFGsiAiQAIAIgCkHgCmoiBCgCACAEKAIIIAooAuAEIAooAugEEMIBIAIgCigCKCAKKAIgELUBIApB4BJqIhEoAgghEiAKQeAQaiIMKAIIIRMgDCgCACEEIwBBEGsiCCQAAkACQAJAIAIoArAQDgIAAQILIAJBATYCsBALIARBAEoEQCACQaAUaiEQIAJBtBBqIRQDQCACIAIoAKwUIgtBGHQgC0GA/gNxQQh0ciALQQh2QYD+A3EgC0EYdnJyQQFqIgtBGHQgC0GA/gNxQQh0ciALQQh2QYD+A3EgC0EYdnJyNgCsFCAIIBApAAg3AwggCCAQKQAANwMAIBQgCBAlQQAhCwJAIAMgBE4NAANAIAMgEmogCCALai0AACADIBNqLQAAcyIPOgAAIAIgC2pBgBBqIhUgFS0AACAPczoAACACIAIoAqwQQQFqIg82AqwQIA9FBEAgAiACKAKoEEEBajYCqBALIANBAWohAyALQQ5LDQEgC0EBaiELIAMgBEgNAAsLIAIQVCADIARIDQALCyAEQQ9xRQ0AIAJBAjYCsBALIAhBEGokACARIAwoAgA2AgAgAiAOKAIIELQBIA5BEDYCACACQbAUaiQAIA4gAEGAAWogABCSASABIAwQiwEgDBBtBEBBrDNBLhBWQX8MAQsgCkHgEGogCkGgEmoiARDRASAKQeAKaiAAQfgFaiABED0gDUEAIA1BAEobIQMgAEH4C2ohBCANQQFrIQggCkGgCmohDSAKQeAJaiEOIApBoAlqIQwgCkHgCGohECAKQaAIaiERIApB4AdqIRIgCkGgB2ohEyAKQeAGaiEUIApBoAZqIQ8gCkHgBWohFSAKQaAFaiEWA0AgAyAHRwRAIAdBtARsIgEgACgCrBBqIQsCQCAHIAhHDQAgBSABayICQbMESg0AIApBIGoiASAEQbQEEB8aIAEgCyACEB8aIAEhCwsgCiALNgIcIApCtISAgMDGADcCFCAKQeASaiIBIAsQKCAKQeAEaiICIAEQESABIAooAhxBL2oQKCAWIAEQESABIAooAhxB3gBqECggFSABEBEgASAKKAIcQY0BahAoIA8gARARIAEgCigCHEG8AWoQKCAUIAEQESABIAooAhxB6wFqECggEyABEBEgASAKKAIcQZoCahAoIBIgARARIAEgCigCHEHJAmoQKCARIAEQESABIAooAhxB+AJqECggECABEBEgASAKKAIcQacDahAoIAwgARARIAEgCigCHEHWA2oQKCAOIAEQESABIAooAhxBhQRqECggDSABEBEgAiAKQeAKahAeIAogBiAHQcAEbGo2AhwgCkLAhICAgMgANwIUIAdBAWohByAKQRRqIAIQqAEMAQsLIAkgCkHgEGoQxAFBAAshFyAKQaATaiQAIBcLBQBBwQELBQBB4QAL3AQBCX8jAEEQayIFJAACQAJAAkACQAJAAkACQAJAIAAoAggiBg4WAgMEBAcEBwcHBwcHBwcBAQcBBwcHAQALIAZBHWsiA0EQSw0GQQEgA3RBloIEcQ0EIAMNBgsgACAAQewDahAlIAZBDmshBANAIAEgAmoiAyADLQAAIAAgAmotAOwDczoAACACIARGIQggAkEBaiECIAhFDQALDAULIAAgARDOAQwECwNAIAQgBWogACAEaiIDLQDsAzoAACADIAEgBGotAAA6AOwDIARBAWoiBEEQRw0ACyAAIAEQzgEDQCABIAJqIgAgAC0AACACIAVqIgAtAABzOgAAIABBADoAACACQQFqIgJBEEcNAAsMAwsgBkEBayEDA0AgACACaiwA7AMgBEEIdHIhBCACQQFqIgIgA0cNAAsMAQsgBSAAKQD0AzcDCCAFIABB7ANqIgcpAAA3AwAgACAFECUgBkEeayEEQQAhAANAIAEgAmoiAyADLQAAIAIgBWotAABzOgAAIAIgBEchCSACQQFqIQIgCQ0ACwNAIAAgB2oiASABLQAAQQFqIgE6AAAgAUH/AXENAiAAQQFqIgBBEEcNAAsMAQsgBSAAKQD0AzcDCCAFIABB7ANqIgcpAAA3AwAgBkERSARAIAMhAgNAIAcgAiADa2ogAiAHai0AADoAACACQQ9IIQogAkEBaiECIAoNAAsLIAAgBRAlQQAhAgNAIAIgBmsgAGogASACaiIELQAAOgD9AyAEIAQtAAAgAiAFai0AAHM6AAAgAkEBaiICIANHDQALCyAFQRBqJAALBABBEAuECgEPfyMAQcAHayIJJABBfyADQcAEbSIKQbQEbEEAIANrIApB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AUEBayIEIAJBwAhqaiwAAEEGdGoQCiABQQFKIQogBCEBIAoNAAsLIAJBsAlqIgFBwC4QDyAAIAEQJyAAQQE2AjggAkHwCWokACAFQUBrJAALNgECfyAAKAIAQQBKBEADQCAAKAIIIAJqIgMgAy0AACABczoAACACQQFqIgIgACgCAEgNAAsLC3UBAn9BDCEBIAAgACkDaEIBhiAAQeAAaikDAEI5h4Q3A2gDQCAAIAFBA3RqIgIgAikDAEIBhkL//////////wODIAJBCGspAwBCOYeENwMAIAFBAWsiAUEASg0ACyAAIAApAwBCAYZC//////////8DgzcDAAsNACAAIAEgAkEOELYBCzEBAn8DQCAAIANBA3QiBGogASAEaikDACACIARqKQMAfTcDACADQQFqIgNBDkcNAAsLFQAgAEIBNwMAIABBCGpBAEEwEBUaCwwAIABBAEHwABAVGgtWAQJ/A0AgACACQQN0IgNqIAEgA2opAwA3AwAgAkEBaiICQQZHDQALIAAgASkDMEL//////////wODNwMwIAAgASkDMEI6hzcDOCAAQUBrQQBBMBAVGgtLAgF+An8DQCAAIAJBA3RqIgMgAykDACABfCIBQv//////////A4M3AwAgAUI6hyEBIAJBAWoiAkENRw0ACyAAIAApA2ggAXw3A2gLCwAgAEEAQTgQFRoLfgEEfwJAIAAoAgAiA0EIaiICIAAoAgRKDQADQCAAKAIIIANqQQA6AAAgA0EBaiIDIAJIDQALIAAgAjYCACACQQBMIAFBAExyDQADQCACQQFrIgMgACgCCGogAToAACACQQJJDQEgAUH/AUshBSABQQh2IQEgAyECIAUNAAsLCwkAIABBBxC7AQuaAQEEfyMAQdACayIDJAAgA0HwAWoiBSAAKAIIEGEgA0HAAWoiACABKAIIQQFqEGEgAyABKAIIQSFqEGFBfSEBAkAgA0EwaiIEIAAgAxDiAUUNACADQaACaiIGQYAoEBQgBSAGEC0gBCAFEOABIAQQcg0AIAAgACAEEOMBIAJBIDYCACACKAIIIAAQYkEAIQELIANB0AJqJAAgAQvcBQEJfyMAQdAMayIEJAACQCAAEHINACABEKUBBEAgABB1IABBMGoQcyAAQeAAahB1DAELIAAQmAEgBEHgCmoiAiAAEFAgAhBgIARB4AFq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QYEBaiAAEB8aQQAhBQsgBQupAQEDfyMAQRBrIgMkAEG4EBBMIgIgACABEFUgAkG4AWoiABDQASACQfgCaiIBEHwgAkH4BWoiBCABIAAQeyAEEHkgAkGAAWpBwCoQDyADIAJB+AtqNgIMIANCtISAgMDGADcCBEEAIQAgAygCBEEASgRAA0AgAhBmIQEgAygCDCAAaiABOgAAIABBAWoiACADKAIESA0ACwsgAkIANwKsECADQRBqJAAgAgtrAQJ/IwBBgAVrIgQkACAEQYAEaiIFIAAgARBVIAQQfCAEQcADaiIBQcAqEA8gBEGAA2oiACABIAUQkgEgBCAAEGQgAgRAIAIgABAYCyADBEAgAyAEEIoBCyAEQYAEahBTIARBgAVqJABBAAulAgIGfwF+IwBBwAFrIgQkACAEQUBrIgkgACABEFVBACEBIARBAEE4EBUhAANAAn8gAUUEQCAJEGYMAQsgBUEBdQshBSAAIAApAzBCAYYiCjcDMEEFIQYgACAKIAApAyhCOYeENwMwA0AgACAGQQN0aiIIIAgpAwBCAYZC//////////8DgyAIQQhrKQMAQjmHhDcDACAGQQFrIgZBAEoNAAsgACAAKQMAQgGGQv//////////A4M3AwAgACAAKQMAIAVBAXGtfDcDACABQQFqQQdxIQEgB0EBaiIHQYADRw0ACyACBEAgAiAEKQMANwAAIAIgBCkDCDcACAsgAwRAIAMgBCkDEDcAACADIAQoAhg2AAgLIARBQGsQUyAEQcABaiQAQQALUwECfyMAQcAEayIDJAAgA0GABGoiBCAAEBYgASADQYABaiIAEMMBIANBQGsiAUHAKhAPIAMgBCABEJEBIAAgAxBkIAIgABCKASADQcAEaiQAQQALbQECfyMAQcADayIEJAAgBEHAAmoiBSAAIAEQVSAEENABIARBgAJqIgFBwCoQDyAEQcABaiIAIAEgBRCSASAEIAAQ0QEgAgRAIAIgABAYCyADBEAgAyAEEMQBCyAEQcACahBTIARBwANqJABBAAsSACAAEFMgACgCrBAQQiAAEEILWAAgBiADKQAANwAAIAYgAygACDYACCAGIAUQhwE2ABwgACABIAIgBiAEIAUgBkGBAWogBUG0BG0iAEEAIAVrIABBzHtsR2pBwARsIAZBDGogBkEgahDFAQuDDgIIfwJ+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", aA($) || ($ = h($));
|
|
213
|
+
function nA(i) {
|
|
214
|
+
if (i == $ && G)
|
|
215
|
+
return new Uint8Array(G);
|
|
216
|
+
var s = uA(i);
|
|
217
|
+
if (s)
|
|
218
|
+
return s;
|
|
219
|
+
throw "both async and sync fetching of the wasm failed";
|
|
220
|
+
}
|
|
221
|
+
function BA(i) {
|
|
222
|
+
return Promise.resolve().then(() => nA(i));
|
|
223
|
+
}
|
|
224
|
+
function wA(i, s, d) {
|
|
225
|
+
return BA(i).then((u) => WebAssembly.instantiate(u, s)).then((u) => u).then(d, (u) => {
|
|
226
|
+
D(`failed to asynchronously prepare wasm: ${u}`), IA(u);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function yA(i, s, d, u) {
|
|
230
|
+
return wA(s, d, u);
|
|
231
|
+
}
|
|
232
|
+
function t() {
|
|
233
|
+
var i = { a: UA };
|
|
234
|
+
function s(u, L) {
|
|
235
|
+
return U = u.exports, N = U.f, l(), DA(U.g), AA(), U;
|
|
236
|
+
}
|
|
237
|
+
cA();
|
|
238
|
+
function d(u) {
|
|
239
|
+
s(u.instance);
|
|
240
|
+
}
|
|
241
|
+
if (A.instantiateWasm)
|
|
242
|
+
try {
|
|
243
|
+
return A.instantiateWasm(i, s);
|
|
244
|
+
} catch (u) {
|
|
245
|
+
D(`Module.instantiateWasm callback failed with error: ${u}`), C(u);
|
|
246
|
+
}
|
|
247
|
+
return yA(G, $, i, d).catch(C), {};
|
|
248
|
+
}
|
|
249
|
+
var e = (i) => {
|
|
250
|
+
for (; i.length > 0; )
|
|
251
|
+
i.shift()(A);
|
|
252
|
+
};
|
|
253
|
+
function f(i, s = "i8") {
|
|
254
|
+
switch (s.endsWith("*") && (s = "*"), s) {
|
|
255
|
+
case "i1":
|
|
256
|
+
return q[i >> 0];
|
|
257
|
+
case "i8":
|
|
258
|
+
return q[i >> 0];
|
|
259
|
+
case "i16":
|
|
260
|
+
return R[i >> 1];
|
|
261
|
+
case "i32":
|
|
262
|
+
return c[i >> 2];
|
|
263
|
+
case "i64":
|
|
264
|
+
IA("to do getValue(i64) use WASM_BIGINT");
|
|
265
|
+
case "float":
|
|
266
|
+
return H[i >> 2];
|
|
267
|
+
case "double":
|
|
268
|
+
return F[i >> 3];
|
|
269
|
+
case "*":
|
|
270
|
+
return y[i >> 2];
|
|
271
|
+
default:
|
|
272
|
+
IA(`invalid type for getValue: ${s}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
var M = () => Date.now(), _ = () => 2147483648, g = (i) => {
|
|
276
|
+
var s = N.buffer, d = (i - s.byteLength + 65535) / 65536;
|
|
277
|
+
try {
|
|
278
|
+
return N.grow(d), l(), 1;
|
|
279
|
+
} catch {
|
|
280
|
+
}
|
|
281
|
+
}, B = (i) => {
|
|
282
|
+
var s = S.length;
|
|
283
|
+
i >>>= 0;
|
|
284
|
+
var d = _();
|
|
285
|
+
if (i > d)
|
|
286
|
+
return !1;
|
|
287
|
+
for (var u = (x, Z) => x + (Z - x % Z) % Z, L = 1; L <= 4; L *= 2) {
|
|
288
|
+
var m = s * (1 + 0.2 / L);
|
|
289
|
+
m = Math.min(m, i + 100663296);
|
|
290
|
+
var T = Math.min(d, u(Math.max(i, m), 65536)), P = g(T);
|
|
291
|
+
if (P)
|
|
292
|
+
return !0;
|
|
293
|
+
}
|
|
294
|
+
return !1;
|
|
295
|
+
}, n = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, w = (i, s, d) => {
|
|
296
|
+
for (var u = s + d, L = s; i[L] && !(L >= u); )
|
|
297
|
+
++L;
|
|
298
|
+
if (L - s > 16 && i.buffer && n)
|
|
299
|
+
return n.decode(i.subarray(s, L));
|
|
300
|
+
for (var m = ""; s < L; ) {
|
|
301
|
+
var T = i[s++];
|
|
302
|
+
if (!(T & 128)) {
|
|
303
|
+
m += String.fromCharCode(T);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
var P = i[s++] & 63;
|
|
307
|
+
if ((T & 224) == 192) {
|
|
308
|
+
m += String.fromCharCode((T & 31) << 6 | P);
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
var x = i[s++] & 63;
|
|
312
|
+
if ((T & 240) == 224 ? T = (T & 15) << 12 | P << 6 | x : T = (T & 7) << 18 | P << 12 | x << 6 | i[s++] & 63, T < 65536)
|
|
313
|
+
m += String.fromCharCode(T);
|
|
314
|
+
else {
|
|
315
|
+
var Z = T - 65536;
|
|
316
|
+
m += String.fromCharCode(55296 | Z >> 10, 56320 | Z & 1023);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return m;
|
|
320
|
+
}, O = (i) => 52;
|
|
321
|
+
function K(i, s, d, u, L) {
|
|
322
|
+
return 70;
|
|
323
|
+
}
|
|
324
|
+
var v = [null, [], []], eA = (i, s) => {
|
|
325
|
+
var d = v[i];
|
|
326
|
+
s === 0 || s === 10 ? ((i === 1 ? r : D)(w(d, 0)), d.length = 0) : d.push(s);
|
|
327
|
+
}, sA = (i, s, d, u) => {
|
|
328
|
+
for (var L = 0, m = 0; m < d; m++) {
|
|
329
|
+
var T = y[s >> 2], P = y[s + 4 >> 2];
|
|
330
|
+
s += 8;
|
|
331
|
+
for (var x = 0; x < P; x++)
|
|
332
|
+
eA(i, S[T + x]);
|
|
333
|
+
L += P;
|
|
334
|
+
}
|
|
335
|
+
return y[u >> 2] = L, 0;
|
|
336
|
+
}, RA = (i, s) => {
|
|
337
|
+
q.set(i, s);
|
|
338
|
+
}, UA = { e: M, b: B, d: O, a: K, c: sA }, U = t();
|
|
339
|
+
A._EMS_AES_KEY_SIZE_ = () => (A._EMS_AES_KEY_SIZE_ = U.h)(), A._EMS_CRYPTO_TYPE_TARGET_ = () => (A._EMS_CRYPTO_TYPE_TARGET_ = U.i)(), A._EMS_CRYPTO_TYPE_PRIMARY_ = () => (A._EMS_CRYPTO_TYPE_PRIMARY_ = U.j)(), A._EMS_TARGET_BLOCK_KEY_SIZE_ = () => (A._EMS_TARGET_BLOCK_KEY_SIZE_ = U.k)(), A._EMS_TARGET_PK_KEY_SIZE_ = () => (A._EMS_TARGET_PK_KEY_SIZE_ = U.l)(), A._EMS_ECIES_PK_KEY_SIZE_ = () => (A._EMS_ECIES_PK_KEY_SIZE_ = U.m)(), A._EMS_ECIES_SK_KEY_SIZE_ = () => (A._EMS_ECIES_SK_KEY_SIZE_ = U.n)(), A._EMS_IV_SIZE_ = () => (A._EMS_IV_SIZE_ = U.o)(), A._EMS_PRIMARY_BLOCK_KEY_SIZE_ = () => (A._EMS_PRIMARY_BLOCK_KEY_SIZE_ = U.p)(), A._EMS_PRIMARY_PK_KEY_SIZE_ = () => (A._EMS_PRIMARY_PK_KEY_SIZE_ = U.q)(), A._EMS_RE_ENCRYPTION_KEY_SIZE_ = () => (A._EMS_RE_ENCRYPTION_KEY_SIZE_ = U.r)(), A._EMS_SECRET_KEY_SIZE_ = () => (A._EMS_SECRET_KEY_SIZE_ = U.s)(), A._EMS_SEED_SIZE_ = () => (A._EMS_SEED_SIZE_ = U.t)(), A._EMS_TAG_SIZE_ = () => (A._EMS_TAG_SIZE_ = U.u)(), A._free = (i) => (A._free = U.v)(i), A._malloc = (i) => (A._malloc = U.w)(i), A._DeriveTargetKeys = (i, s, d, u) => (A._DeriveTargetKeys = U.x)(i, s, d, u), A._CalcEncByteCount = (i) => (A._CalcEncByteCount = U.y)(i), A._CalcEncByteCountFromTargetH = (i) => (A._CalcEncByteCountFromTargetH = U.z)(i), A._CalcEncByteCountH = (i, s) => (A._CalcEncByteCountH = U.A)(i, s), A._CalcEncECIESByteCount = (i) => (A._CalcEncECIESByteCount = U.B)(i), A._CalcTargetByteCountH = (i) => (A._CalcTargetByteCountH = U.C)(i), A._DecryptAES = (i, s, d, u, L, m) => (A._DecryptAES = U.D)(i, s, d, u, L, m), A._DecryptECIES = (i, s, d, u, L, m, T) => (A._DecryptECIES = U.E)(i, s, d, u, L, m, T), A._DecryptH = (i, s, d, u, L, m, T, P) => (A._DecryptH = U.F)(i, s, d, u, L, m, T, P), A._DecryptTarget = (i, s, d, u, L, m, T, P, x, Z) => (A._DecryptTarget = U.G)(i, s, d, u, L, m, T, P, x, Z), A._DecryptPrimary = (i, s, d, u, L, m, T, P, x, Z) => (A._DecryptPrimary = U.H)(i, s, d, u, L, m, T, P, x, Z), A._EncryptAES = (i, s, d, u, L, m) => (A._EncryptAES = U.I)(i, s, d, u, L, m), A._EncryptECIES = (i, s, d, u, L, m, T, P, x) => (A._EncryptECIES = U.J)(i, s, d, u, L, m, T, P, x), A._EncryptPrimary = (i, s, d, u, L, m, T, P, x, Z) => (A._EncryptPrimary = U.K)(i, s, d, u, L, m, T, P, x, Z), A._EncryptPrimaryH = (i, s, d, u, L, m, T) => (A._EncryptPrimaryH = U.L)(i, s, d, u, L, m, T), A._FreeCryptoContext = (i) => (A._FreeCryptoContext = U.M)(i), A._GeneratePrimaryKeys = (i, s, d, u) => (A._GeneratePrimaryKeys = U.N)(i, s, d, u), A._GenerateReEncryptionKey = (i, s, d) => (A._GenerateReEncryptionKey = U.O)(i, s, d), A._GenerateTargetKeys = (i, s, d, u) => (A._GenerateTargetKeys = U.P)(i, s, d, u), A._GenerateSymmetricKeys = (i, s, d, u) => (A._GenerateSymmetricKeys = U.Q)(i, s, d, u), A._NewCryptoContext = (i, s) => (A._NewCryptoContext = U.R)(i, s), A._ReEncryptBlockKey = (i, s, d) => (A._ReEncryptBlockKey = U.S)(i, s, d), A._ReEncryptH = (i, s, d, u, L) => (A._ReEncryptH = U.T)(i, s, d, u, L);
|
|
340
|
+
function lA(i) {
|
|
341
|
+
try {
|
|
342
|
+
for (var s = atob(i), d = new Uint8Array(s.length), u = 0; u < s.length; ++u)
|
|
343
|
+
d[u] = s.charCodeAt(u);
|
|
344
|
+
return d;
|
|
345
|
+
} catch {
|
|
346
|
+
throw new Error("Converting base64 string to bytes failed.");
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function uA(i) {
|
|
350
|
+
if (aA(i))
|
|
351
|
+
return lA(i.slice(gA.length));
|
|
352
|
+
}
|
|
353
|
+
A.getValue = f, A.writeArrayToMemory = RA;
|
|
354
|
+
var iA;
|
|
355
|
+
z = function i() {
|
|
356
|
+
iA || tA(), iA || (z = i);
|
|
357
|
+
};
|
|
358
|
+
function tA() {
|
|
359
|
+
if (X > 0 || (J(), X > 0))
|
|
360
|
+
return;
|
|
361
|
+
function i() {
|
|
362
|
+
iA || (iA = !0, A.calledRun = !0, !b && (p(), Q(A), A.onRuntimeInitialized && A.onRuntimeInitialized(), V()));
|
|
363
|
+
}
|
|
364
|
+
A.setStatus ? (A.setStatus("Running..."), setTimeout(function() {
|
|
365
|
+
setTimeout(function() {
|
|
366
|
+
A.setStatus("");
|
|
367
|
+
}, 1), i();
|
|
368
|
+
}, 1)) : i();
|
|
369
|
+
}
|
|
370
|
+
if (A.preInit)
|
|
371
|
+
for (typeof A.preInit == "function" && (A.preInit = [A.preInit]); A.preInit.length > 0; )
|
|
372
|
+
A.preInit.pop()();
|
|
373
|
+
return tA(), I.ready;
|
|
374
|
+
};
|
|
375
|
+
})();
|
|
376
|
+
const SI = uI;
|
|
377
|
+
var GA = { exports: {} }, mA = { exports: {} }, iI = CI.EventEmitter, pA, ZA;
|
|
378
|
+
function dI() {
|
|
379
|
+
if (ZA)
|
|
380
|
+
return pA;
|
|
381
|
+
ZA = 1;
|
|
382
|
+
function E(S, R) {
|
|
383
|
+
var c = Object.keys(S);
|
|
384
|
+
if (Object.getOwnPropertySymbols) {
|
|
385
|
+
var y = Object.getOwnPropertySymbols(S);
|
|
386
|
+
R && (y = y.filter(function(H) {
|
|
387
|
+
return Object.getOwnPropertyDescriptor(S, H).enumerable;
|
|
388
|
+
})), c.push.apply(c, y);
|
|
389
|
+
}
|
|
390
|
+
return c;
|
|
391
|
+
}
|
|
392
|
+
function I(S) {
|
|
393
|
+
for (var R = 1; R < arguments.length; R++) {
|
|
394
|
+
var c = arguments[R] != null ? arguments[R] : {};
|
|
395
|
+
R % 2 ? E(Object(c), !0).forEach(function(y) {
|
|
396
|
+
A(S, y, c[y]);
|
|
397
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(S, Object.getOwnPropertyDescriptors(c)) : E(Object(c)).forEach(function(y) {
|
|
398
|
+
Object.defineProperty(S, y, Object.getOwnPropertyDescriptor(c, y));
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
return S;
|
|
402
|
+
}
|
|
403
|
+
function A(S, R, c) {
|
|
404
|
+
return R = a(R), R in S ? Object.defineProperty(S, R, { value: c, enumerable: !0, configurable: !0, writable: !0 }) : S[R] = c, S;
|
|
405
|
+
}
|
|
406
|
+
function Q(S, R) {
|
|
407
|
+
if (!(S instanceof R))
|
|
408
|
+
throw new TypeError("Cannot call a class as a function");
|
|
409
|
+
}
|
|
410
|
+
function C(S, R) {
|
|
411
|
+
for (var c = 0; c < R.length; c++) {
|
|
412
|
+
var y = R[c];
|
|
413
|
+
y.enumerable = y.enumerable || !1, y.configurable = !0, "value" in y && (y.writable = !0), Object.defineProperty(S, a(y.key), y);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
function o(S, R, c) {
|
|
417
|
+
return R && C(S.prototype, R), c && C(S, c), Object.defineProperty(S, "prototype", { writable: !1 }), S;
|
|
418
|
+
}
|
|
419
|
+
function a(S) {
|
|
420
|
+
var R = h(S, "string");
|
|
421
|
+
return typeof R == "symbol" ? R : String(R);
|
|
422
|
+
}
|
|
423
|
+
function h(S, R) {
|
|
424
|
+
if (typeof S != "object" || S === null)
|
|
425
|
+
return S;
|
|
426
|
+
var c = S[Symbol.toPrimitive];
|
|
427
|
+
if (c !== void 0) {
|
|
428
|
+
var y = c.call(S, R || "default");
|
|
429
|
+
if (typeof y != "object")
|
|
430
|
+
return y;
|
|
431
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
432
|
+
}
|
|
433
|
+
return (R === "string" ? String : Number)(S);
|
|
434
|
+
}
|
|
435
|
+
var r = vA(), D = r.Buffer, G = eI, N = G.inspect, b = N && N.custom || "inspect";
|
|
436
|
+
function q(S, R, c) {
|
|
437
|
+
D.prototype.copy.call(S, R, c);
|
|
438
|
+
}
|
|
439
|
+
return pA = /* @__PURE__ */ function() {
|
|
440
|
+
function S() {
|
|
441
|
+
Q(this, S), this.head = null, this.tail = null, this.length = 0;
|
|
442
|
+
}
|
|
443
|
+
return o(S, [{
|
|
444
|
+
key: "push",
|
|
445
|
+
value: function(c) {
|
|
446
|
+
var y = {
|
|
447
|
+
data: c,
|
|
448
|
+
next: null
|
|
449
|
+
};
|
|
450
|
+
this.length > 0 ? this.tail.next = y : this.head = y, this.tail = y, ++this.length;
|
|
451
|
+
}
|
|
452
|
+
}, {
|
|
453
|
+
key: "unshift",
|
|
454
|
+
value: function(c) {
|
|
455
|
+
var y = {
|
|
456
|
+
data: c,
|
|
457
|
+
next: this.head
|
|
458
|
+
};
|
|
459
|
+
this.length === 0 && (this.tail = y), this.head = y, ++this.length;
|
|
460
|
+
}
|
|
461
|
+
}, {
|
|
462
|
+
key: "shift",
|
|
463
|
+
value: function() {
|
|
464
|
+
if (this.length !== 0) {
|
|
465
|
+
var c = this.head.data;
|
|
466
|
+
return this.length === 1 ? this.head = this.tail = null : this.head = this.head.next, --this.length, c;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}, {
|
|
470
|
+
key: "clear",
|
|
471
|
+
value: function() {
|
|
472
|
+
this.head = this.tail = null, this.length = 0;
|
|
473
|
+
}
|
|
474
|
+
}, {
|
|
475
|
+
key: "join",
|
|
476
|
+
value: function(c) {
|
|
477
|
+
if (this.length === 0)
|
|
478
|
+
return "";
|
|
479
|
+
for (var y = this.head, H = "" + y.data; y = y.next; )
|
|
480
|
+
H += c + y.data;
|
|
481
|
+
return H;
|
|
482
|
+
}
|
|
483
|
+
}, {
|
|
484
|
+
key: "concat",
|
|
485
|
+
value: function(c) {
|
|
486
|
+
if (this.length === 0)
|
|
487
|
+
return D.alloc(0);
|
|
488
|
+
for (var y = D.allocUnsafe(c >>> 0), H = this.head, F = 0; H; )
|
|
489
|
+
q(H.data, y, F), F += H.data.length, H = H.next;
|
|
490
|
+
return y;
|
|
491
|
+
}
|
|
492
|
+
// Consumes a specified amount of bytes or characters from the buffered data.
|
|
493
|
+
}, {
|
|
494
|
+
key: "consume",
|
|
495
|
+
value: function(c, y) {
|
|
496
|
+
var H;
|
|
497
|
+
return c < this.head.data.length ? (H = this.head.data.slice(0, c), this.head.data = this.head.data.slice(c)) : c === this.head.data.length ? H = this.shift() : H = y ? this._getString(c) : this._getBuffer(c), H;
|
|
498
|
+
}
|
|
499
|
+
}, {
|
|
500
|
+
key: "first",
|
|
501
|
+
value: function() {
|
|
502
|
+
return this.head.data;
|
|
503
|
+
}
|
|
504
|
+
// Consumes a specified amount of characters from the buffered data.
|
|
505
|
+
}, {
|
|
506
|
+
key: "_getString",
|
|
507
|
+
value: function(c) {
|
|
508
|
+
var y = this.head, H = 1, F = y.data;
|
|
509
|
+
for (c -= F.length; y = y.next; ) {
|
|
510
|
+
var l = y.data, k = c > l.length ? l.length : c;
|
|
511
|
+
if (k === l.length ? F += l : F += l.slice(0, c), c -= k, c === 0) {
|
|
512
|
+
k === l.length ? (++H, y.next ? this.head = y.next : this.head = this.tail = null) : (this.head = y, y.data = l.slice(k));
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
++H;
|
|
516
|
+
}
|
|
517
|
+
return this.length -= H, F;
|
|
518
|
+
}
|
|
519
|
+
// Consumes a specified amount of bytes from the buffered data.
|
|
520
|
+
}, {
|
|
521
|
+
key: "_getBuffer",
|
|
522
|
+
value: function(c) {
|
|
523
|
+
var y = D.allocUnsafe(c), H = this.head, F = 1;
|
|
524
|
+
for (H.data.copy(y), c -= H.data.length; H = H.next; ) {
|
|
525
|
+
var l = H.data, k = c > l.length ? l.length : c;
|
|
526
|
+
if (l.copy(y, y.length - c, 0, k), c -= k, c === 0) {
|
|
527
|
+
k === l.length ? (++F, H.next ? this.head = H.next : this.head = this.tail = null) : (this.head = H, H.data = l.slice(k));
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
++F;
|
|
531
|
+
}
|
|
532
|
+
return this.length -= F, y;
|
|
533
|
+
}
|
|
534
|
+
// Make sure the linked list only shows the minimal necessary information.
|
|
535
|
+
}, {
|
|
536
|
+
key: b,
|
|
537
|
+
value: function(c, y) {
|
|
538
|
+
return N(this, I(I({}, y), {}, {
|
|
539
|
+
// Only inspect one level.
|
|
540
|
+
depth: 0,
|
|
541
|
+
// It should not recurse.
|
|
542
|
+
customInspect: !1
|
|
543
|
+
}));
|
|
544
|
+
}
|
|
545
|
+
}]), S;
|
|
546
|
+
}(), pA;
|
|
547
|
+
}
|
|
548
|
+
function RI(E, I) {
|
|
549
|
+
var A = this, Q = this._readableState && this._readableState.destroyed, C = this._writableState && this._writableState.destroyed;
|
|
550
|
+
return Q || C ? (I ? I(E) : E && (this._writableState ? this._writableState.errorEmitted || (this._writableState.errorEmitted = !0, process.nextTick(TA, this, E)) : process.nextTick(TA, this, E)), this) : (this._readableState && (this._readableState.destroyed = !0), this._writableState && (this._writableState.destroyed = !0), this._destroy(E || null, function(o) {
|
|
551
|
+
!I && o ? A._writableState ? A._writableState.errorEmitted ? process.nextTick(FA, A) : (A._writableState.errorEmitted = !0, process.nextTick(jA, A, o)) : process.nextTick(jA, A, o) : I ? (process.nextTick(FA, A), I(o)) : process.nextTick(FA, A);
|
|
552
|
+
}), this);
|
|
553
|
+
}
|
|
554
|
+
function jA(E, I) {
|
|
555
|
+
TA(E, I), FA(E);
|
|
556
|
+
}
|
|
557
|
+
function FA(E) {
|
|
558
|
+
E._writableState && !E._writableState.emitClose || E._readableState && !E._readableState.emitClose || E.emit("close");
|
|
559
|
+
}
|
|
560
|
+
function FI() {
|
|
561
|
+
this._readableState && (this._readableState.destroyed = !1, this._readableState.reading = !1, this._readableState.ended = !1, this._readableState.endEmitted = !1), this._writableState && (this._writableState.destroyed = !1, this._writableState.ended = !1, this._writableState.ending = !1, this._writableState.finalCalled = !1, this._writableState.prefinished = !1, this._writableState.finished = !1, this._writableState.errorEmitted = !1);
|
|
562
|
+
}
|
|
563
|
+
function TA(E, I) {
|
|
564
|
+
E.emit("error", I);
|
|
565
|
+
}
|
|
566
|
+
function MI(E, I) {
|
|
567
|
+
var A = E._readableState, Q = E._writableState;
|
|
568
|
+
A && A.autoDestroy || Q && Q.autoDestroy ? E.destroy(I) : E.emit("error", I);
|
|
569
|
+
}
|
|
570
|
+
var tI = {
|
|
571
|
+
destroy: RI,
|
|
572
|
+
undestroy: FI,
|
|
573
|
+
errorOrDestroy: MI
|
|
574
|
+
}, oA = {};
|
|
575
|
+
function GI(E, I) {
|
|
576
|
+
E.prototype = Object.create(I.prototype), E.prototype.constructor = E, E.__proto__ = I;
|
|
577
|
+
}
|
|
578
|
+
var rI = {};
|
|
579
|
+
function j(E, I, A) {
|
|
580
|
+
A || (A = Error);
|
|
581
|
+
function Q(o, a, h) {
|
|
582
|
+
return typeof I == "string" ? I : I(o, a, h);
|
|
583
|
+
}
|
|
584
|
+
var C = /* @__PURE__ */ function(o) {
|
|
585
|
+
GI(a, o);
|
|
586
|
+
function a(h, r, D) {
|
|
587
|
+
return o.call(this, Q(h, r, D)) || this;
|
|
588
|
+
}
|
|
589
|
+
return a;
|
|
590
|
+
}(A);
|
|
591
|
+
C.prototype.name = A.name, C.prototype.code = E, rI[E] = C;
|
|
592
|
+
}
|
|
593
|
+
function VA(E, I) {
|
|
594
|
+
if (Array.isArray(E)) {
|
|
595
|
+
var A = E.length;
|
|
596
|
+
return E = E.map(function(Q) {
|
|
597
|
+
return String(Q);
|
|
598
|
+
}), A > 2 ? "one of ".concat(I, " ").concat(E.slice(0, A - 1).join(", "), ", or ") + E[A - 1] : A === 2 ? "one of ".concat(I, " ").concat(E[0], " or ").concat(E[1]) : "of ".concat(I, " ").concat(E[0]);
|
|
599
|
+
} else
|
|
600
|
+
return "of ".concat(I, " ").concat(String(E));
|
|
601
|
+
}
|
|
602
|
+
function NI(E, I, A) {
|
|
603
|
+
return E.substr(!A || A < 0 ? 0 : +A, I.length) === I;
|
|
604
|
+
}
|
|
605
|
+
function kI(E, I, A) {
|
|
606
|
+
return (A === void 0 || A > E.length) && (A = E.length), E.substring(A - I.length, A) === I;
|
|
607
|
+
}
|
|
608
|
+
function UI(E, I, A) {
|
|
609
|
+
return typeof A != "number" && (A = 0), A + I.length > E.length ? !1 : E.indexOf(I, A) !== -1;
|
|
610
|
+
}
|
|
611
|
+
j("ERR_INVALID_OPT_VALUE", function(E, I) {
|
|
612
|
+
return 'The value "' + I + '" is invalid for option "' + E + '"';
|
|
613
|
+
}, TypeError);
|
|
614
|
+
j("ERR_INVALID_ARG_TYPE", function(E, I, A) {
|
|
615
|
+
var Q;
|
|
616
|
+
typeof I == "string" && NI(I, "not ") ? (Q = "must not be", I = I.replace(/^not /, "")) : Q = "must be";
|
|
617
|
+
var C;
|
|
618
|
+
if (kI(E, " argument"))
|
|
619
|
+
C = "The ".concat(E, " ").concat(Q, " ").concat(VA(I, "type"));
|
|
620
|
+
else {
|
|
621
|
+
var o = UI(E, ".") ? "property" : "argument";
|
|
622
|
+
C = 'The "'.concat(E, '" ').concat(o, " ").concat(Q, " ").concat(VA(I, "type"));
|
|
623
|
+
}
|
|
624
|
+
return C += ". Received type ".concat(typeof A), C;
|
|
625
|
+
}, TypeError);
|
|
626
|
+
j("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF");
|
|
627
|
+
j("ERR_METHOD_NOT_IMPLEMENTED", function(E) {
|
|
628
|
+
return "The " + E + " method is not implemented";
|
|
629
|
+
});
|
|
630
|
+
j("ERR_STREAM_PREMATURE_CLOSE", "Premature close");
|
|
631
|
+
j("ERR_STREAM_DESTROYED", function(E) {
|
|
632
|
+
return "Cannot call " + E + " after a stream was destroyed";
|
|
633
|
+
});
|
|
634
|
+
j("ERR_MULTIPLE_CALLBACK", "Callback called multiple times");
|
|
635
|
+
j("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable");
|
|
636
|
+
j("ERR_STREAM_WRITE_AFTER_END", "write after end");
|
|
637
|
+
j("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError);
|
|
638
|
+
j("ERR_UNKNOWN_ENCODING", function(E) {
|
|
639
|
+
return "Unknown encoding: " + E;
|
|
640
|
+
}, TypeError);
|
|
641
|
+
j("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event");
|
|
642
|
+
oA.codes = rI;
|
|
643
|
+
var pI = oA.codes.ERR_INVALID_OPT_VALUE;
|
|
644
|
+
function HI(E, I, A) {
|
|
645
|
+
return E.highWaterMark != null ? E.highWaterMark : I ? E[A] : null;
|
|
646
|
+
}
|
|
647
|
+
function YI(E, I, A, Q) {
|
|
648
|
+
var C = HI(I, Q, A);
|
|
649
|
+
if (C != null) {
|
|
650
|
+
if (!(isFinite(C) && Math.floor(C) === C) || C < 0) {
|
|
651
|
+
var o = Q ? A : "highWaterMark";
|
|
652
|
+
throw new pI(o, C);
|
|
653
|
+
}
|
|
654
|
+
return Math.floor(C);
|
|
655
|
+
}
|
|
656
|
+
return E.objectMode ? 16 : 16 * 1024;
|
|
657
|
+
}
|
|
658
|
+
var aI = {
|
|
659
|
+
getHighWaterMark: YI
|
|
660
|
+
}, KI = _I;
|
|
661
|
+
function _I(E, I) {
|
|
662
|
+
if (HA("noDeprecation"))
|
|
663
|
+
return E;
|
|
664
|
+
var A = !1;
|
|
665
|
+
function Q() {
|
|
666
|
+
if (!A) {
|
|
667
|
+
if (HA("throwDeprecation"))
|
|
668
|
+
throw new Error(I);
|
|
669
|
+
HA("traceDeprecation") ? console.trace(I) : console.warn(I), A = !0;
|
|
670
|
+
}
|
|
671
|
+
return E.apply(this, arguments);
|
|
672
|
+
}
|
|
673
|
+
return Q;
|
|
674
|
+
}
|
|
675
|
+
function HA(E) {
|
|
676
|
+
try {
|
|
677
|
+
if (!fA.localStorage)
|
|
678
|
+
return !1;
|
|
679
|
+
} catch {
|
|
680
|
+
return !1;
|
|
681
|
+
}
|
|
682
|
+
var I = fA.localStorage[E];
|
|
683
|
+
return I == null ? !1 : String(I).toLowerCase() === "true";
|
|
684
|
+
}
|
|
685
|
+
var YA, XA;
|
|
686
|
+
function oI() {
|
|
687
|
+
if (XA)
|
|
688
|
+
return YA;
|
|
689
|
+
XA = 1, YA = J;
|
|
690
|
+
function E(t) {
|
|
691
|
+
var e = this;
|
|
692
|
+
this.next = null, this.entry = null, this.finish = function() {
|
|
693
|
+
yA(e, t);
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
var I;
|
|
697
|
+
J.WritableState = Y;
|
|
698
|
+
var A = {
|
|
699
|
+
deprecate: KI
|
|
700
|
+
}, Q = iI, C = vA().Buffer, o = (typeof fA < "u" ? fA : typeof window < "u" ? window : typeof self < "u" ? self : {}).Uint8Array || function() {
|
|
701
|
+
};
|
|
702
|
+
function a(t) {
|
|
703
|
+
return C.from(t);
|
|
704
|
+
}
|
|
705
|
+
function h(t) {
|
|
706
|
+
return C.isBuffer(t) || t instanceof o;
|
|
707
|
+
}
|
|
708
|
+
var r = tI, D = aI, G = D.getHighWaterMark, N = oA.codes, b = N.ERR_INVALID_ARG_TYPE, q = N.ERR_METHOD_NOT_IMPLEMENTED, S = N.ERR_MULTIPLE_CALLBACK, R = N.ERR_STREAM_CANNOT_PIPE, c = N.ERR_STREAM_DESTROYED, y = N.ERR_STREAM_NULL_VALUES, H = N.ERR_STREAM_WRITE_AFTER_END, F = N.ERR_UNKNOWN_ENCODING, l = r.errorOrDestroy;
|
|
709
|
+
dA(J, Q);
|
|
710
|
+
function k() {
|
|
711
|
+
}
|
|
712
|
+
function Y(t, e, f) {
|
|
713
|
+
I = I || hA(), t = t || {}, typeof f != "boolean" && (f = e instanceof I), this.objectMode = !!t.objectMode, f && (this.objectMode = this.objectMode || !!t.writableObjectMode), this.highWaterMark = G(this, t, "writableHighWaterMark", f), this.finalCalled = !1, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1, this.destroyed = !1;
|
|
714
|
+
var M = t.decodeStrings === !1;
|
|
715
|
+
this.decodeStrings = !M, this.defaultEncoding = t.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function(_) {
|
|
716
|
+
cA(e, _);
|
|
717
|
+
}, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1, this.emitClose = t.emitClose !== !1, this.autoDestroy = !!t.autoDestroy, this.bufferedRequestCount = 0, this.corkedRequestsFree = new E(this);
|
|
718
|
+
}
|
|
719
|
+
Y.prototype.getBuffer = function() {
|
|
720
|
+
for (var e = this.bufferedRequest, f = []; e; )
|
|
721
|
+
f.push(e), e = e.next;
|
|
722
|
+
return f;
|
|
723
|
+
}, function() {
|
|
724
|
+
try {
|
|
725
|
+
Object.defineProperty(Y.prototype, "buffer", {
|
|
726
|
+
get: A.deprecate(function() {
|
|
727
|
+
return this.getBuffer();
|
|
728
|
+
}, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003")
|
|
729
|
+
});
|
|
730
|
+
} catch {
|
|
731
|
+
}
|
|
732
|
+
}();
|
|
733
|
+
var W;
|
|
734
|
+
typeof Symbol == "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] == "function" ? (W = Function.prototype[Symbol.hasInstance], Object.defineProperty(J, Symbol.hasInstance, {
|
|
735
|
+
value: function(e) {
|
|
736
|
+
return W.call(this, e) ? !0 : this !== J ? !1 : e && e._writableState instanceof Y;
|
|
737
|
+
}
|
|
738
|
+
})) : W = function(e) {
|
|
739
|
+
return e instanceof this;
|
|
740
|
+
};
|
|
741
|
+
function J(t) {
|
|
742
|
+
I = I || hA();
|
|
743
|
+
var e = this instanceof I;
|
|
744
|
+
if (!e && !W.call(J, this))
|
|
745
|
+
return new J(t);
|
|
746
|
+
this._writableState = new Y(t, this, e), this.writable = !0, t && (typeof t.write == "function" && (this._write = t.write), typeof t.writev == "function" && (this._writev = t.writev), typeof t.destroy == "function" && (this._destroy = t.destroy), typeof t.final == "function" && (this._final = t.final)), Q.call(this);
|
|
747
|
+
}
|
|
748
|
+
J.prototype.pipe = function() {
|
|
749
|
+
l(this, new R());
|
|
750
|
+
};
|
|
751
|
+
function p(t, e) {
|
|
752
|
+
var f = new H();
|
|
753
|
+
l(t, f), process.nextTick(e, f);
|
|
754
|
+
}
|
|
755
|
+
function V(t, e, f, M) {
|
|
756
|
+
var _;
|
|
757
|
+
return f === null ? _ = new y() : typeof f != "string" && !e.objectMode && (_ = new b("chunk", ["string", "Buffer"], f)), _ ? (l(t, _), process.nextTick(M, _), !1) : !0;
|
|
758
|
+
}
|
|
759
|
+
J.prototype.write = function(t, e, f) {
|
|
760
|
+
var M = this._writableState, _ = !1, g = !M.objectMode && h(t);
|
|
761
|
+
return g && !C.isBuffer(t) && (t = a(t)), typeof e == "function" && (f = e, e = null), g ? e = "buffer" : e || (e = M.defaultEncoding), typeof f != "function" && (f = k), M.ending ? p(this, f) : (g || V(this, M, t, f)) && (M.pendingcb++, _ = DA(this, M, g, t, e, f)), _;
|
|
762
|
+
}, J.prototype.cork = function() {
|
|
763
|
+
this._writableState.corked++;
|
|
764
|
+
}, J.prototype.uncork = function() {
|
|
765
|
+
var t = this._writableState;
|
|
766
|
+
t.corked && (t.corked--, !t.writing && !t.corked && !t.bufferProcessing && t.bufferedRequest && gA(this, t));
|
|
767
|
+
}, J.prototype.setDefaultEncoding = function(e) {
|
|
768
|
+
if (typeof e == "string" && (e = e.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((e + "").toLowerCase()) > -1))
|
|
769
|
+
throw new F(e);
|
|
770
|
+
return this._writableState.defaultEncoding = e, this;
|
|
771
|
+
}, Object.defineProperty(J.prototype, "writableBuffer", {
|
|
772
|
+
// making it explicit this property is not enumerable
|
|
773
|
+
// because otherwise some prototype manipulation in
|
|
774
|
+
// userland will fail
|
|
775
|
+
enumerable: !1,
|
|
776
|
+
get: function() {
|
|
777
|
+
return this._writableState && this._writableState.getBuffer();
|
|
778
|
+
}
|
|
779
|
+
});
|
|
780
|
+
function rA(t, e, f) {
|
|
781
|
+
return !t.objectMode && t.decodeStrings !== !1 && typeof e == "string" && (e = C.from(e, f)), e;
|
|
782
|
+
}
|
|
783
|
+
Object.defineProperty(J.prototype, "writableHighWaterMark", {
|
|
784
|
+
// making it explicit this property is not enumerable
|
|
785
|
+
// because otherwise some prototype manipulation in
|
|
786
|
+
// userland will fail
|
|
787
|
+
enumerable: !1,
|
|
788
|
+
get: function() {
|
|
789
|
+
return this._writableState.highWaterMark;
|
|
790
|
+
}
|
|
791
|
+
});
|
|
792
|
+
function DA(t, e, f, M, _, g) {
|
|
793
|
+
if (!f) {
|
|
794
|
+
var B = rA(e, M, _);
|
|
795
|
+
M !== B && (f = !0, _ = "buffer", M = B);
|
|
796
|
+
}
|
|
797
|
+
var n = e.objectMode ? 1 : M.length;
|
|
798
|
+
e.length += n;
|
|
799
|
+
var w = e.length < e.highWaterMark;
|
|
800
|
+
if (w || (e.needDrain = !0), e.writing || e.corked) {
|
|
801
|
+
var O = e.lastBufferedRequest;
|
|
802
|
+
e.lastBufferedRequest = {
|
|
803
|
+
chunk: M,
|
|
804
|
+
encoding: _,
|
|
805
|
+
isBuf: f,
|
|
806
|
+
callback: g,
|
|
807
|
+
next: null
|
|
808
|
+
}, O ? O.next = e.lastBufferedRequest : e.bufferedRequest = e.lastBufferedRequest, e.bufferedRequestCount += 1;
|
|
809
|
+
} else
|
|
810
|
+
CA(t, e, !1, n, M, _, g);
|
|
811
|
+
return w;
|
|
812
|
+
}
|
|
813
|
+
function CA(t, e, f, M, _, g, B) {
|
|
814
|
+
e.writelen = M, e.writecb = B, e.writing = !0, e.sync = !0, e.destroyed ? e.onwrite(new c("write")) : f ? t._writev(_, e.onwrite) : t._write(_, g, e.onwrite), e.sync = !1;
|
|
815
|
+
}
|
|
816
|
+
function X(t, e, f, M, _) {
|
|
817
|
+
--e.pendingcb, f ? (process.nextTick(_, M), process.nextTick(BA, t, e), t._writableState.errorEmitted = !0, l(t, M)) : (_(M), t._writableState.errorEmitted = !0, l(t, M), BA(t, e));
|
|
818
|
+
}
|
|
819
|
+
function z(t) {
|
|
820
|
+
t.writing = !1, t.writecb = null, t.length -= t.writelen, t.writelen = 0;
|
|
821
|
+
}
|
|
822
|
+
function cA(t, e) {
|
|
823
|
+
var f = t._writableState, M = f.sync, _ = f.writecb;
|
|
824
|
+
if (typeof _ != "function")
|
|
825
|
+
throw new S();
|
|
826
|
+
if (z(f), e)
|
|
827
|
+
X(t, f, M, e, _);
|
|
828
|
+
else {
|
|
829
|
+
var g = aA(f) || t.destroyed;
|
|
830
|
+
!g && !f.corked && !f.bufferProcessing && f.bufferedRequest && gA(t, f), M ? process.nextTick(AA, t, f, g, _) : AA(t, f, g, _);
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
function AA(t, e, f, M) {
|
|
834
|
+
f || IA(t, e), e.pendingcb--, M(), BA(t, e);
|
|
835
|
+
}
|
|
836
|
+
function IA(t, e) {
|
|
837
|
+
e.length === 0 && e.needDrain && (e.needDrain = !1, t.emit("drain"));
|
|
838
|
+
}
|
|
839
|
+
function gA(t, e) {
|
|
840
|
+
e.bufferProcessing = !0;
|
|
841
|
+
var f = e.bufferedRequest;
|
|
842
|
+
if (t._writev && f && f.next) {
|
|
843
|
+
var M = e.bufferedRequestCount, _ = new Array(M), g = e.corkedRequestsFree;
|
|
844
|
+
g.entry = f;
|
|
845
|
+
for (var B = 0, n = !0; f; )
|
|
846
|
+
_[B] = f, f.isBuf || (n = !1), f = f.next, B += 1;
|
|
847
|
+
_.allBuffers = n, CA(t, e, !0, e.length, _, "", g.finish), e.pendingcb++, e.lastBufferedRequest = null, g.next ? (e.corkedRequestsFree = g.next, g.next = null) : e.corkedRequestsFree = new E(e), e.bufferedRequestCount = 0;
|
|
848
|
+
} else {
|
|
849
|
+
for (; f; ) {
|
|
850
|
+
var w = f.chunk, O = f.encoding, K = f.callback, v = e.objectMode ? 1 : w.length;
|
|
851
|
+
if (CA(t, e, !1, v, w, O, K), f = f.next, e.bufferedRequestCount--, e.writing)
|
|
852
|
+
break;
|
|
853
|
+
}
|
|
854
|
+
f === null && (e.lastBufferedRequest = null);
|
|
855
|
+
}
|
|
856
|
+
e.bufferedRequest = f, e.bufferProcessing = !1;
|
|
857
|
+
}
|
|
858
|
+
J.prototype._write = function(t, e, f) {
|
|
859
|
+
f(new q("_write()"));
|
|
860
|
+
}, J.prototype._writev = null, J.prototype.end = function(t, e, f) {
|
|
861
|
+
var M = this._writableState;
|
|
862
|
+
return typeof t == "function" ? (f = t, t = null, e = null) : typeof e == "function" && (f = e, e = null), t != null && this.write(t, e), M.corked && (M.corked = 1, this.uncork()), M.ending || wA(this, M, f), this;
|
|
863
|
+
}, Object.defineProperty(J.prototype, "writableLength", {
|
|
864
|
+
// making it explicit this property is not enumerable
|
|
865
|
+
// because otherwise some prototype manipulation in
|
|
866
|
+
// userland will fail
|
|
867
|
+
enumerable: !1,
|
|
868
|
+
get: function() {
|
|
869
|
+
return this._writableState.length;
|
|
870
|
+
}
|
|
871
|
+
});
|
|
872
|
+
function aA(t) {
|
|
873
|
+
return t.ending && t.length === 0 && t.bufferedRequest === null && !t.finished && !t.writing;
|
|
874
|
+
}
|
|
875
|
+
function $(t, e) {
|
|
876
|
+
t._final(function(f) {
|
|
877
|
+
e.pendingcb--, f && l(t, f), e.prefinished = !0, t.emit("prefinish"), BA(t, e);
|
|
878
|
+
});
|
|
879
|
+
}
|
|
880
|
+
function nA(t, e) {
|
|
881
|
+
!e.prefinished && !e.finalCalled && (typeof t._final == "function" && !e.destroyed ? (e.pendingcb++, e.finalCalled = !0, process.nextTick($, t, e)) : (e.prefinished = !0, t.emit("prefinish")));
|
|
882
|
+
}
|
|
883
|
+
function BA(t, e) {
|
|
884
|
+
var f = aA(e);
|
|
885
|
+
if (f && (nA(t, e), e.pendingcb === 0 && (e.finished = !0, t.emit("finish"), e.autoDestroy))) {
|
|
886
|
+
var M = t._readableState;
|
|
887
|
+
(!M || M.autoDestroy && M.endEmitted) && t.destroy();
|
|
888
|
+
}
|
|
889
|
+
return f;
|
|
890
|
+
}
|
|
891
|
+
function wA(t, e, f) {
|
|
892
|
+
e.ending = !0, BA(t, e), f && (e.finished ? process.nextTick(f) : t.once("finish", f)), e.ended = !0, t.writable = !1;
|
|
893
|
+
}
|
|
894
|
+
function yA(t, e, f) {
|
|
895
|
+
var M = t.entry;
|
|
896
|
+
for (t.entry = null; M; ) {
|
|
897
|
+
var _ = M.callback;
|
|
898
|
+
e.pendingcb--, _(f), M = M.next;
|
|
899
|
+
}
|
|
900
|
+
e.corkedRequestsFree.next = t;
|
|
901
|
+
}
|
|
902
|
+
return Object.defineProperty(J.prototype, "destroyed", {
|
|
903
|
+
// making it explicit this property is not enumerable
|
|
904
|
+
// because otherwise some prototype manipulation in
|
|
905
|
+
// userland will fail
|
|
906
|
+
enumerable: !1,
|
|
907
|
+
get: function() {
|
|
908
|
+
return this._writableState === void 0 ? !1 : this._writableState.destroyed;
|
|
909
|
+
},
|
|
910
|
+
set: function(e) {
|
|
911
|
+
this._writableState && (this._writableState.destroyed = e);
|
|
912
|
+
}
|
|
913
|
+
}), J.prototype.destroy = r.destroy, J.prototype._undestroy = r.undestroy, J.prototype._destroy = function(t, e) {
|
|
914
|
+
e(t);
|
|
915
|
+
}, YA;
|
|
916
|
+
}
|
|
917
|
+
var KA, zA;
|
|
918
|
+
function hA() {
|
|
919
|
+
if (zA)
|
|
920
|
+
return KA;
|
|
921
|
+
zA = 1;
|
|
922
|
+
var E = Object.keys || function(D) {
|
|
923
|
+
var G = [];
|
|
924
|
+
for (var N in D)
|
|
925
|
+
G.push(N);
|
|
926
|
+
return G;
|
|
927
|
+
};
|
|
928
|
+
KA = a;
|
|
929
|
+
var I = sI(), A = oI();
|
|
930
|
+
dA(a, I);
|
|
931
|
+
for (var Q = E(A.prototype), C = 0; C < Q.length; C++) {
|
|
932
|
+
var o = Q[C];
|
|
933
|
+
a.prototype[o] || (a.prototype[o] = A.prototype[o]);
|
|
934
|
+
}
|
|
935
|
+
function a(D) {
|
|
936
|
+
if (!(this instanceof a))
|
|
937
|
+
return new a(D);
|
|
938
|
+
I.call(this, D), A.call(this, D), this.allowHalfOpen = !0, D && (D.readable === !1 && (this.readable = !1), D.writable === !1 && (this.writable = !1), D.allowHalfOpen === !1 && (this.allowHalfOpen = !1, this.once("end", h)));
|
|
939
|
+
}
|
|
940
|
+
Object.defineProperty(a.prototype, "writableHighWaterMark", {
|
|
941
|
+
// making it explicit this property is not enumerable
|
|
942
|
+
// because otherwise some prototype manipulation in
|
|
943
|
+
// userland will fail
|
|
944
|
+
enumerable: !1,
|
|
945
|
+
get: function() {
|
|
946
|
+
return this._writableState.highWaterMark;
|
|
947
|
+
}
|
|
948
|
+
}), Object.defineProperty(a.prototype, "writableBuffer", {
|
|
949
|
+
// making it explicit this property is not enumerable
|
|
950
|
+
// because otherwise some prototype manipulation in
|
|
951
|
+
// userland will fail
|
|
952
|
+
enumerable: !1,
|
|
953
|
+
get: function() {
|
|
954
|
+
return this._writableState && this._writableState.getBuffer();
|
|
955
|
+
}
|
|
956
|
+
}), Object.defineProperty(a.prototype, "writableLength", {
|
|
957
|
+
// making it explicit this property is not enumerable
|
|
958
|
+
// because otherwise some prototype manipulation in
|
|
959
|
+
// userland will fail
|
|
960
|
+
enumerable: !1,
|
|
961
|
+
get: function() {
|
|
962
|
+
return this._writableState.length;
|
|
963
|
+
}
|
|
964
|
+
});
|
|
965
|
+
function h() {
|
|
966
|
+
this._writableState.ended || process.nextTick(r, this);
|
|
967
|
+
}
|
|
968
|
+
function r(D) {
|
|
969
|
+
D.end();
|
|
970
|
+
}
|
|
971
|
+
return Object.defineProperty(a.prototype, "destroyed", {
|
|
972
|
+
// making it explicit this property is not enumerable
|
|
973
|
+
// because otherwise some prototype manipulation in
|
|
974
|
+
// userland will fail
|
|
975
|
+
enumerable: !1,
|
|
976
|
+
get: function() {
|
|
977
|
+
return this._readableState === void 0 || this._writableState === void 0 ? !1 : this._readableState.destroyed && this._writableState.destroyed;
|
|
978
|
+
},
|
|
979
|
+
set: function(G) {
|
|
980
|
+
this._readableState === void 0 || this._writableState === void 0 || (this._readableState.destroyed = G, this._writableState.destroyed = G);
|
|
981
|
+
}
|
|
982
|
+
}), KA;
|
|
983
|
+
}
|
|
984
|
+
var $A = oA.codes.ERR_STREAM_PREMATURE_CLOSE;
|
|
985
|
+
function JI(E) {
|
|
986
|
+
var I = !1;
|
|
987
|
+
return function() {
|
|
988
|
+
if (!I) {
|
|
989
|
+
I = !0;
|
|
990
|
+
for (var A = arguments.length, Q = new Array(A), C = 0; C < A; C++)
|
|
991
|
+
Q[C] = arguments[C];
|
|
992
|
+
E.apply(this, Q);
|
|
993
|
+
}
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
function LI() {
|
|
997
|
+
}
|
|
998
|
+
function qI(E) {
|
|
999
|
+
return E.setHeader && typeof E.abort == "function";
|
|
1000
|
+
}
|
|
1001
|
+
function nI(E, I, A) {
|
|
1002
|
+
if (typeof I == "function")
|
|
1003
|
+
return nI(E, null, I);
|
|
1004
|
+
I || (I = {}), A = JI(A || LI);
|
|
1005
|
+
var Q = I.readable || I.readable !== !1 && E.readable, C = I.writable || I.writable !== !1 && E.writable, o = function() {
|
|
1006
|
+
E.writable || h();
|
|
1007
|
+
}, a = E._writableState && E._writableState.finished, h = function() {
|
|
1008
|
+
C = !1, a = !0, Q || A.call(E);
|
|
1009
|
+
}, r = E._readableState && E._readableState.endEmitted, D = function() {
|
|
1010
|
+
Q = !1, r = !0, C || A.call(E);
|
|
1011
|
+
}, G = function(S) {
|
|
1012
|
+
A.call(E, S);
|
|
1013
|
+
}, N = function() {
|
|
1014
|
+
var S;
|
|
1015
|
+
if (Q && !r)
|
|
1016
|
+
return (!E._readableState || !E._readableState.ended) && (S = new $A()), A.call(E, S);
|
|
1017
|
+
if (C && !a)
|
|
1018
|
+
return (!E._writableState || !E._writableState.ended) && (S = new $A()), A.call(E, S);
|
|
1019
|
+
}, b = function() {
|
|
1020
|
+
E.req.on("finish", h);
|
|
1021
|
+
};
|
|
1022
|
+
return qI(E) ? (E.on("complete", h), E.on("abort", N), E.req ? b() : E.on("request", b)) : C && !E._writableState && (E.on("end", o), E.on("close", o)), E.on("end", D), E.on("finish", h), I.error !== !1 && E.on("error", G), E.on("close", N), function() {
|
|
1023
|
+
E.removeListener("complete", h), E.removeListener("abort", N), E.removeListener("request", b), E.req && E.req.removeListener("finish", h), E.removeListener("end", o), E.removeListener("close", o), E.removeListener("finish", h), E.removeListener("end", D), E.removeListener("error", G), E.removeListener("close", N);
|
|
1024
|
+
};
|
|
1025
|
+
}
|
|
1026
|
+
var WA = nI, _A, AI;
|
|
1027
|
+
function bI() {
|
|
1028
|
+
if (AI)
|
|
1029
|
+
return _A;
|
|
1030
|
+
AI = 1;
|
|
1031
|
+
var E;
|
|
1032
|
+
function I(F, l, k) {
|
|
1033
|
+
return l = A(l), l in F ? Object.defineProperty(F, l, { value: k, enumerable: !0, configurable: !0, writable: !0 }) : F[l] = k, F;
|
|
1034
|
+
}
|
|
1035
|
+
function A(F) {
|
|
1036
|
+
var l = Q(F, "string");
|
|
1037
|
+
return typeof l == "symbol" ? l : String(l);
|
|
1038
|
+
}
|
|
1039
|
+
function Q(F, l) {
|
|
1040
|
+
if (typeof F != "object" || F === null)
|
|
1041
|
+
return F;
|
|
1042
|
+
var k = F[Symbol.toPrimitive];
|
|
1043
|
+
if (k !== void 0) {
|
|
1044
|
+
var Y = k.call(F, l || "default");
|
|
1045
|
+
if (typeof Y != "object")
|
|
1046
|
+
return Y;
|
|
1047
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
1048
|
+
}
|
|
1049
|
+
return (l === "string" ? String : Number)(F);
|
|
1050
|
+
}
|
|
1051
|
+
var C = WA, o = Symbol("lastResolve"), a = Symbol("lastReject"), h = Symbol("error"), r = Symbol("ended"), D = Symbol("lastPromise"), G = Symbol("handlePromise"), N = Symbol("stream");
|
|
1052
|
+
function b(F, l) {
|
|
1053
|
+
return {
|
|
1054
|
+
value: F,
|
|
1055
|
+
done: l
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
function q(F) {
|
|
1059
|
+
var l = F[o];
|
|
1060
|
+
if (l !== null) {
|
|
1061
|
+
var k = F[N].read();
|
|
1062
|
+
k !== null && (F[D] = null, F[o] = null, F[a] = null, l(b(k, !1)));
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
function S(F) {
|
|
1066
|
+
process.nextTick(q, F);
|
|
1067
|
+
}
|
|
1068
|
+
function R(F, l) {
|
|
1069
|
+
return function(k, Y) {
|
|
1070
|
+
F.then(function() {
|
|
1071
|
+
if (l[r]) {
|
|
1072
|
+
k(b(void 0, !0));
|
|
1073
|
+
return;
|
|
1074
|
+
}
|
|
1075
|
+
l[G](k, Y);
|
|
1076
|
+
}, Y);
|
|
1077
|
+
};
|
|
1078
|
+
}
|
|
1079
|
+
var c = Object.getPrototypeOf(function() {
|
|
1080
|
+
}), y = Object.setPrototypeOf((E = {
|
|
1081
|
+
get stream() {
|
|
1082
|
+
return this[N];
|
|
1083
|
+
},
|
|
1084
|
+
next: function() {
|
|
1085
|
+
var l = this, k = this[h];
|
|
1086
|
+
if (k !== null)
|
|
1087
|
+
return Promise.reject(k);
|
|
1088
|
+
if (this[r])
|
|
1089
|
+
return Promise.resolve(b(void 0, !0));
|
|
1090
|
+
if (this[N].destroyed)
|
|
1091
|
+
return new Promise(function(p, V) {
|
|
1092
|
+
process.nextTick(function() {
|
|
1093
|
+
l[h] ? V(l[h]) : p(b(void 0, !0));
|
|
1094
|
+
});
|
|
1095
|
+
});
|
|
1096
|
+
var Y = this[D], W;
|
|
1097
|
+
if (Y)
|
|
1098
|
+
W = new Promise(R(Y, this));
|
|
1099
|
+
else {
|
|
1100
|
+
var J = this[N].read();
|
|
1101
|
+
if (J !== null)
|
|
1102
|
+
return Promise.resolve(b(J, !1));
|
|
1103
|
+
W = new Promise(this[G]);
|
|
1104
|
+
}
|
|
1105
|
+
return this[D] = W, W;
|
|
1106
|
+
}
|
|
1107
|
+
}, I(E, Symbol.asyncIterator, function() {
|
|
1108
|
+
return this;
|
|
1109
|
+
}), I(E, "return", function() {
|
|
1110
|
+
var l = this;
|
|
1111
|
+
return new Promise(function(k, Y) {
|
|
1112
|
+
l[N].destroy(null, function(W) {
|
|
1113
|
+
if (W) {
|
|
1114
|
+
Y(W);
|
|
1115
|
+
return;
|
|
1116
|
+
}
|
|
1117
|
+
k(b(void 0, !0));
|
|
1118
|
+
});
|
|
1119
|
+
});
|
|
1120
|
+
}), E), c), H = function(l) {
|
|
1121
|
+
var k, Y = Object.create(y, (k = {}, I(k, N, {
|
|
1122
|
+
value: l,
|
|
1123
|
+
writable: !0
|
|
1124
|
+
}), I(k, o, {
|
|
1125
|
+
value: null,
|
|
1126
|
+
writable: !0
|
|
1127
|
+
}), I(k, a, {
|
|
1128
|
+
value: null,
|
|
1129
|
+
writable: !0
|
|
1130
|
+
}), I(k, h, {
|
|
1131
|
+
value: null,
|
|
1132
|
+
writable: !0
|
|
1133
|
+
}), I(k, r, {
|
|
1134
|
+
value: l._readableState.endEmitted,
|
|
1135
|
+
writable: !0
|
|
1136
|
+
}), I(k, G, {
|
|
1137
|
+
value: function(J, p) {
|
|
1138
|
+
var V = Y[N].read();
|
|
1139
|
+
V ? (Y[D] = null, Y[o] = null, Y[a] = null, J(b(V, !1))) : (Y[o] = J, Y[a] = p);
|
|
1140
|
+
},
|
|
1141
|
+
writable: !0
|
|
1142
|
+
}), k));
|
|
1143
|
+
return Y[D] = null, C(l, function(W) {
|
|
1144
|
+
if (W && W.code !== "ERR_STREAM_PREMATURE_CLOSE") {
|
|
1145
|
+
var J = Y[a];
|
|
1146
|
+
J !== null && (Y[D] = null, Y[o] = null, Y[a] = null, J(W)), Y[h] = W;
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
var p = Y[o];
|
|
1150
|
+
p !== null && (Y[D] = null, Y[o] = null, Y[a] = null, p(b(void 0, !0))), Y[r] = !0;
|
|
1151
|
+
}), l.on("readable", S.bind(null, Y)), Y;
|
|
1152
|
+
};
|
|
1153
|
+
return _A = H, _A;
|
|
1154
|
+
}
|
|
1155
|
+
var JA, II;
|
|
1156
|
+
function mI() {
|
|
1157
|
+
return II || (II = 1, JA = function() {
|
|
1158
|
+
throw new Error("Readable.from is not available in the browser");
|
|
1159
|
+
}), JA;
|
|
1160
|
+
}
|
|
1161
|
+
var LA, gI;
|
|
1162
|
+
function sI() {
|
|
1163
|
+
if (gI)
|
|
1164
|
+
return LA;
|
|
1165
|
+
gI = 1, LA = p;
|
|
1166
|
+
var E;
|
|
1167
|
+
p.ReadableState = J, CI.EventEmitter;
|
|
1168
|
+
var I = function(B, n) {
|
|
1169
|
+
return B.listeners(n).length;
|
|
1170
|
+
}, A = iI, Q = vA().Buffer, C = (typeof fA < "u" ? fA : typeof window < "u" ? window : typeof self < "u" ? self : {}).Uint8Array || function() {
|
|
1171
|
+
};
|
|
1172
|
+
function o(g) {
|
|
1173
|
+
return Q.from(g);
|
|
1174
|
+
}
|
|
1175
|
+
function a(g) {
|
|
1176
|
+
return Q.isBuffer(g) || g instanceof C;
|
|
1177
|
+
}
|
|
1178
|
+
var h = eI, r;
|
|
1179
|
+
h && h.debuglog ? r = h.debuglog("stream") : r = function() {
|
|
1180
|
+
};
|
|
1181
|
+
var D = dI(), G = tI, N = aI, b = N.getHighWaterMark, q = oA.codes, S = q.ERR_INVALID_ARG_TYPE, R = q.ERR_STREAM_PUSH_AFTER_EOF, c = q.ERR_METHOD_NOT_IMPLEMENTED, y = q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT, H, F, l;
|
|
1182
|
+
dA(p, A);
|
|
1183
|
+
var k = G.errorOrDestroy, Y = ["error", "close", "destroy", "pause", "resume"];
|
|
1184
|
+
function W(g, B, n) {
|
|
1185
|
+
if (typeof g.prependListener == "function")
|
|
1186
|
+
return g.prependListener(B, n);
|
|
1187
|
+
!g._events || !g._events[B] ? g.on(B, n) : Array.isArray(g._events[B]) ? g._events[B].unshift(n) : g._events[B] = [n, g._events[B]];
|
|
1188
|
+
}
|
|
1189
|
+
function J(g, B, n) {
|
|
1190
|
+
E = E || hA(), g = g || {}, typeof n != "boolean" && (n = B instanceof E), this.objectMode = !!g.objectMode, n && (this.objectMode = this.objectMode || !!g.readableObjectMode), this.highWaterMark = b(this, g, "readableHighWaterMark", n), this.buffer = new D(), this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.resumeScheduled = !1, this.paused = !0, this.emitClose = g.emitClose !== !1, this.autoDestroy = !!g.autoDestroy, this.destroyed = !1, this.defaultEncoding = g.defaultEncoding || "utf8", this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, g.encoding && (H || (H = xA.StringDecoder), this.decoder = new H(g.encoding), this.encoding = g.encoding);
|
|
1191
|
+
}
|
|
1192
|
+
function p(g) {
|
|
1193
|
+
if (E = E || hA(), !(this instanceof p))
|
|
1194
|
+
return new p(g);
|
|
1195
|
+
var B = this instanceof E;
|
|
1196
|
+
this._readableState = new J(g, this, B), this.readable = !0, g && (typeof g.read == "function" && (this._read = g.read), typeof g.destroy == "function" && (this._destroy = g.destroy)), A.call(this);
|
|
1197
|
+
}
|
|
1198
|
+
Object.defineProperty(p.prototype, "destroyed", {
|
|
1199
|
+
// making it explicit this property is not enumerable
|
|
1200
|
+
// because otherwise some prototype manipulation in
|
|
1201
|
+
// userland will fail
|
|
1202
|
+
enumerable: !1,
|
|
1203
|
+
get: function() {
|
|
1204
|
+
return this._readableState === void 0 ? !1 : this._readableState.destroyed;
|
|
1205
|
+
},
|
|
1206
|
+
set: function(B) {
|
|
1207
|
+
this._readableState && (this._readableState.destroyed = B);
|
|
1208
|
+
}
|
|
1209
|
+
}), p.prototype.destroy = G.destroy, p.prototype._undestroy = G.undestroy, p.prototype._destroy = function(g, B) {
|
|
1210
|
+
B(g);
|
|
1211
|
+
}, p.prototype.push = function(g, B) {
|
|
1212
|
+
var n = this._readableState, w;
|
|
1213
|
+
return n.objectMode ? w = !0 : typeof g == "string" && (B = B || n.defaultEncoding, B !== n.encoding && (g = Q.from(g, B), B = ""), w = !0), V(this, g, B, !1, w);
|
|
1214
|
+
}, p.prototype.unshift = function(g) {
|
|
1215
|
+
return V(this, g, null, !0, !1);
|
|
1216
|
+
};
|
|
1217
|
+
function V(g, B, n, w, O) {
|
|
1218
|
+
r("readableAddChunk", B);
|
|
1219
|
+
var K = g._readableState;
|
|
1220
|
+
if (B === null)
|
|
1221
|
+
K.reading = !1, cA(g, K);
|
|
1222
|
+
else {
|
|
1223
|
+
var v;
|
|
1224
|
+
if (O || (v = DA(K, B)), v)
|
|
1225
|
+
k(g, v);
|
|
1226
|
+
else if (K.objectMode || B && B.length > 0)
|
|
1227
|
+
if (typeof B != "string" && !K.objectMode && Object.getPrototypeOf(B) !== Q.prototype && (B = o(B)), w)
|
|
1228
|
+
K.endEmitted ? k(g, new y()) : rA(g, K, B, !0);
|
|
1229
|
+
else if (K.ended)
|
|
1230
|
+
k(g, new R());
|
|
1231
|
+
else {
|
|
1232
|
+
if (K.destroyed)
|
|
1233
|
+
return !1;
|
|
1234
|
+
K.reading = !1, K.decoder && !n ? (B = K.decoder.write(B), K.objectMode || B.length !== 0 ? rA(g, K, B, !1) : gA(g, K)) : rA(g, K, B, !1);
|
|
1235
|
+
}
|
|
1236
|
+
else
|
|
1237
|
+
w || (K.reading = !1, gA(g, K));
|
|
1238
|
+
}
|
|
1239
|
+
return !K.ended && (K.length < K.highWaterMark || K.length === 0);
|
|
1240
|
+
}
|
|
1241
|
+
function rA(g, B, n, w) {
|
|
1242
|
+
B.flowing && B.length === 0 && !B.sync ? (B.awaitDrain = 0, g.emit("data", n)) : (B.length += B.objectMode ? 1 : n.length, w ? B.buffer.unshift(n) : B.buffer.push(n), B.needReadable && AA(g)), gA(g, B);
|
|
1243
|
+
}
|
|
1244
|
+
function DA(g, B) {
|
|
1245
|
+
var n;
|
|
1246
|
+
return !a(B) && typeof B != "string" && B !== void 0 && !g.objectMode && (n = new S("chunk", ["string", "Buffer", "Uint8Array"], B)), n;
|
|
1247
|
+
}
|
|
1248
|
+
p.prototype.isPaused = function() {
|
|
1249
|
+
return this._readableState.flowing === !1;
|
|
1250
|
+
}, p.prototype.setEncoding = function(g) {
|
|
1251
|
+
H || (H = xA.StringDecoder);
|
|
1252
|
+
var B = new H(g);
|
|
1253
|
+
this._readableState.decoder = B, this._readableState.encoding = this._readableState.decoder.encoding;
|
|
1254
|
+
for (var n = this._readableState.buffer.head, w = ""; n !== null; )
|
|
1255
|
+
w += B.write(n.data), n = n.next;
|
|
1256
|
+
return this._readableState.buffer.clear(), w !== "" && this._readableState.buffer.push(w), this._readableState.length = w.length, this;
|
|
1257
|
+
};
|
|
1258
|
+
var CA = 1073741824;
|
|
1259
|
+
function X(g) {
|
|
1260
|
+
return g >= CA ? g = CA : (g--, g |= g >>> 1, g |= g >>> 2, g |= g >>> 4, g |= g >>> 8, g |= g >>> 16, g++), g;
|
|
1261
|
+
}
|
|
1262
|
+
function z(g, B) {
|
|
1263
|
+
return g <= 0 || B.length === 0 && B.ended ? 0 : B.objectMode ? 1 : g !== g ? B.flowing && B.length ? B.buffer.head.data.length : B.length : (g > B.highWaterMark && (B.highWaterMark = X(g)), g <= B.length ? g : B.ended ? B.length : (B.needReadable = !0, 0));
|
|
1264
|
+
}
|
|
1265
|
+
p.prototype.read = function(g) {
|
|
1266
|
+
r("read", g), g = parseInt(g, 10);
|
|
1267
|
+
var B = this._readableState, n = g;
|
|
1268
|
+
if (g !== 0 && (B.emittedReadable = !1), g === 0 && B.needReadable && ((B.highWaterMark !== 0 ? B.length >= B.highWaterMark : B.length > 0) || B.ended))
|
|
1269
|
+
return r("read: emitReadable", B.length, B.ended), B.length === 0 && B.ended ? f(this) : AA(this), null;
|
|
1270
|
+
if (g = z(g, B), g === 0 && B.ended)
|
|
1271
|
+
return B.length === 0 && f(this), null;
|
|
1272
|
+
var w = B.needReadable;
|
|
1273
|
+
r("need readable", w), (B.length === 0 || B.length - g < B.highWaterMark) && (w = !0, r("length less than watermark", w)), B.ended || B.reading ? (w = !1, r("reading or ended", w)) : w && (r("do read"), B.reading = !0, B.sync = !0, B.length === 0 && (B.needReadable = !0), this._read(B.highWaterMark), B.sync = !1, B.reading || (g = z(n, B)));
|
|
1274
|
+
var O;
|
|
1275
|
+
return g > 0 ? O = e(g, B) : O = null, O === null ? (B.needReadable = B.length <= B.highWaterMark, g = 0) : (B.length -= g, B.awaitDrain = 0), B.length === 0 && (B.ended || (B.needReadable = !0), n !== g && B.ended && f(this)), O !== null && this.emit("data", O), O;
|
|
1276
|
+
};
|
|
1277
|
+
function cA(g, B) {
|
|
1278
|
+
if (r("onEofChunk"), !B.ended) {
|
|
1279
|
+
if (B.decoder) {
|
|
1280
|
+
var n = B.decoder.end();
|
|
1281
|
+
n && n.length && (B.buffer.push(n), B.length += B.objectMode ? 1 : n.length);
|
|
1282
|
+
}
|
|
1283
|
+
B.ended = !0, B.sync ? AA(g) : (B.needReadable = !1, B.emittedReadable || (B.emittedReadable = !0, IA(g)));
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
function AA(g) {
|
|
1287
|
+
var B = g._readableState;
|
|
1288
|
+
r("emitReadable", B.needReadable, B.emittedReadable), B.needReadable = !1, B.emittedReadable || (r("emitReadable", B.flowing), B.emittedReadable = !0, process.nextTick(IA, g));
|
|
1289
|
+
}
|
|
1290
|
+
function IA(g) {
|
|
1291
|
+
var B = g._readableState;
|
|
1292
|
+
r("emitReadable_", B.destroyed, B.length, B.ended), !B.destroyed && (B.length || B.ended) && (g.emit("readable"), B.emittedReadable = !1), B.needReadable = !B.flowing && !B.ended && B.length <= B.highWaterMark, t(g);
|
|
1293
|
+
}
|
|
1294
|
+
function gA(g, B) {
|
|
1295
|
+
B.readingMore || (B.readingMore = !0, process.nextTick(aA, g, B));
|
|
1296
|
+
}
|
|
1297
|
+
function aA(g, B) {
|
|
1298
|
+
for (; !B.reading && !B.ended && (B.length < B.highWaterMark || B.flowing && B.length === 0); ) {
|
|
1299
|
+
var n = B.length;
|
|
1300
|
+
if (r("maybeReadMore read 0"), g.read(0), n === B.length)
|
|
1301
|
+
break;
|
|
1302
|
+
}
|
|
1303
|
+
B.readingMore = !1;
|
|
1304
|
+
}
|
|
1305
|
+
p.prototype._read = function(g) {
|
|
1306
|
+
k(this, new c("_read()"));
|
|
1307
|
+
}, p.prototype.pipe = function(g, B) {
|
|
1308
|
+
var n = this, w = this._readableState;
|
|
1309
|
+
switch (w.pipesCount) {
|
|
1310
|
+
case 0:
|
|
1311
|
+
w.pipes = g;
|
|
1312
|
+
break;
|
|
1313
|
+
case 1:
|
|
1314
|
+
w.pipes = [w.pipes, g];
|
|
1315
|
+
break;
|
|
1316
|
+
default:
|
|
1317
|
+
w.pipes.push(g);
|
|
1318
|
+
break;
|
|
1319
|
+
}
|
|
1320
|
+
w.pipesCount += 1, r("pipe count=%d opts=%j", w.pipesCount, B);
|
|
1321
|
+
var O = (!B || B.end !== !1) && g !== process.stdout && g !== process.stderr, K = O ? eA : tA;
|
|
1322
|
+
w.endEmitted ? process.nextTick(K) : n.once("end", K), g.on("unpipe", v);
|
|
1323
|
+
function v(i, s) {
|
|
1324
|
+
r("onunpipe"), i === n && s && s.hasUnpiped === !1 && (s.hasUnpiped = !0, UA());
|
|
1325
|
+
}
|
|
1326
|
+
function eA() {
|
|
1327
|
+
r("onend"), g.end();
|
|
1328
|
+
}
|
|
1329
|
+
var sA = $(n);
|
|
1330
|
+
g.on("drain", sA);
|
|
1331
|
+
var RA = !1;
|
|
1332
|
+
function UA() {
|
|
1333
|
+
r("cleanup"), g.removeListener("close", uA), g.removeListener("finish", iA), g.removeListener("drain", sA), g.removeListener("error", lA), g.removeListener("unpipe", v), n.removeListener("end", eA), n.removeListener("end", tA), n.removeListener("data", U), RA = !0, w.awaitDrain && (!g._writableState || g._writableState.needDrain) && sA();
|
|
1334
|
+
}
|
|
1335
|
+
n.on("data", U);
|
|
1336
|
+
function U(i) {
|
|
1337
|
+
r("ondata");
|
|
1338
|
+
var s = g.write(i);
|
|
1339
|
+
r("dest.write", s), s === !1 && ((w.pipesCount === 1 && w.pipes === g || w.pipesCount > 1 && _(w.pipes, g) !== -1) && !RA && (r("false write response, pause", w.awaitDrain), w.awaitDrain++), n.pause());
|
|
1340
|
+
}
|
|
1341
|
+
function lA(i) {
|
|
1342
|
+
r("onerror", i), tA(), g.removeListener("error", lA), I(g, "error") === 0 && k(g, i);
|
|
1343
|
+
}
|
|
1344
|
+
W(g, "error", lA);
|
|
1345
|
+
function uA() {
|
|
1346
|
+
g.removeListener("finish", iA), tA();
|
|
1347
|
+
}
|
|
1348
|
+
g.once("close", uA);
|
|
1349
|
+
function iA() {
|
|
1350
|
+
r("onfinish"), g.removeListener("close", uA), tA();
|
|
1351
|
+
}
|
|
1352
|
+
g.once("finish", iA);
|
|
1353
|
+
function tA() {
|
|
1354
|
+
r("unpipe"), n.unpipe(g);
|
|
1355
|
+
}
|
|
1356
|
+
return g.emit("pipe", n), w.flowing || (r("pipe resume"), n.resume()), g;
|
|
1357
|
+
};
|
|
1358
|
+
function $(g) {
|
|
1359
|
+
return function() {
|
|
1360
|
+
var n = g._readableState;
|
|
1361
|
+
r("pipeOnDrain", n.awaitDrain), n.awaitDrain && n.awaitDrain--, n.awaitDrain === 0 && I(g, "data") && (n.flowing = !0, t(g));
|
|
1362
|
+
};
|
|
1363
|
+
}
|
|
1364
|
+
p.prototype.unpipe = function(g) {
|
|
1365
|
+
var B = this._readableState, n = {
|
|
1366
|
+
hasUnpiped: !1
|
|
1367
|
+
};
|
|
1368
|
+
if (B.pipesCount === 0)
|
|
1369
|
+
return this;
|
|
1370
|
+
if (B.pipesCount === 1)
|
|
1371
|
+
return g && g !== B.pipes ? this : (g || (g = B.pipes), B.pipes = null, B.pipesCount = 0, B.flowing = !1, g && g.emit("unpipe", this, n), this);
|
|
1372
|
+
if (!g) {
|
|
1373
|
+
var w = B.pipes, O = B.pipesCount;
|
|
1374
|
+
B.pipes = null, B.pipesCount = 0, B.flowing = !1;
|
|
1375
|
+
for (var K = 0; K < O; K++)
|
|
1376
|
+
w[K].emit("unpipe", this, {
|
|
1377
|
+
hasUnpiped: !1
|
|
1378
|
+
});
|
|
1379
|
+
return this;
|
|
1380
|
+
}
|
|
1381
|
+
var v = _(B.pipes, g);
|
|
1382
|
+
return v === -1 ? this : (B.pipes.splice(v, 1), B.pipesCount -= 1, B.pipesCount === 1 && (B.pipes = B.pipes[0]), g.emit("unpipe", this, n), this);
|
|
1383
|
+
}, p.prototype.on = function(g, B) {
|
|
1384
|
+
var n = A.prototype.on.call(this, g, B), w = this._readableState;
|
|
1385
|
+
return g === "data" ? (w.readableListening = this.listenerCount("readable") > 0, w.flowing !== !1 && this.resume()) : g === "readable" && !w.endEmitted && !w.readableListening && (w.readableListening = w.needReadable = !0, w.flowing = !1, w.emittedReadable = !1, r("on readable", w.length, w.reading), w.length ? AA(this) : w.reading || process.nextTick(BA, this)), n;
|
|
1386
|
+
}, p.prototype.addListener = p.prototype.on, p.prototype.removeListener = function(g, B) {
|
|
1387
|
+
var n = A.prototype.removeListener.call(this, g, B);
|
|
1388
|
+
return g === "readable" && process.nextTick(nA, this), n;
|
|
1389
|
+
}, p.prototype.removeAllListeners = function(g) {
|
|
1390
|
+
var B = A.prototype.removeAllListeners.apply(this, arguments);
|
|
1391
|
+
return (g === "readable" || g === void 0) && process.nextTick(nA, this), B;
|
|
1392
|
+
};
|
|
1393
|
+
function nA(g) {
|
|
1394
|
+
var B = g._readableState;
|
|
1395
|
+
B.readableListening = g.listenerCount("readable") > 0, B.resumeScheduled && !B.paused ? B.flowing = !0 : g.listenerCount("data") > 0 && g.resume();
|
|
1396
|
+
}
|
|
1397
|
+
function BA(g) {
|
|
1398
|
+
r("readable nexttick read 0"), g.read(0);
|
|
1399
|
+
}
|
|
1400
|
+
p.prototype.resume = function() {
|
|
1401
|
+
var g = this._readableState;
|
|
1402
|
+
return g.flowing || (r("resume"), g.flowing = !g.readableListening, wA(this, g)), g.paused = !1, this;
|
|
1403
|
+
};
|
|
1404
|
+
function wA(g, B) {
|
|
1405
|
+
B.resumeScheduled || (B.resumeScheduled = !0, process.nextTick(yA, g, B));
|
|
1406
|
+
}
|
|
1407
|
+
function yA(g, B) {
|
|
1408
|
+
r("resume", B.reading), B.reading || g.read(0), B.resumeScheduled = !1, g.emit("resume"), t(g), B.flowing && !B.reading && g.read(0);
|
|
1409
|
+
}
|
|
1410
|
+
p.prototype.pause = function() {
|
|
1411
|
+
return r("call pause flowing=%j", this._readableState.flowing), this._readableState.flowing !== !1 && (r("pause"), this._readableState.flowing = !1, this.emit("pause")), this._readableState.paused = !0, this;
|
|
1412
|
+
};
|
|
1413
|
+
function t(g) {
|
|
1414
|
+
var B = g._readableState;
|
|
1415
|
+
for (r("flow", B.flowing); B.flowing && g.read() !== null; )
|
|
1416
|
+
;
|
|
1417
|
+
}
|
|
1418
|
+
p.prototype.wrap = function(g) {
|
|
1419
|
+
var B = this, n = this._readableState, w = !1;
|
|
1420
|
+
g.on("end", function() {
|
|
1421
|
+
if (r("wrapped end"), n.decoder && !n.ended) {
|
|
1422
|
+
var v = n.decoder.end();
|
|
1423
|
+
v && v.length && B.push(v);
|
|
1424
|
+
}
|
|
1425
|
+
B.push(null);
|
|
1426
|
+
}), g.on("data", function(v) {
|
|
1427
|
+
if (r("wrapped data"), n.decoder && (v = n.decoder.write(v)), !(n.objectMode && v == null) && !(!n.objectMode && (!v || !v.length))) {
|
|
1428
|
+
var eA = B.push(v);
|
|
1429
|
+
eA || (w = !0, g.pause());
|
|
1430
|
+
}
|
|
1431
|
+
});
|
|
1432
|
+
for (var O in g)
|
|
1433
|
+
this[O] === void 0 && typeof g[O] == "function" && (this[O] = /* @__PURE__ */ function(eA) {
|
|
1434
|
+
return function() {
|
|
1435
|
+
return g[eA].apply(g, arguments);
|
|
1436
|
+
};
|
|
1437
|
+
}(O));
|
|
1438
|
+
for (var K = 0; K < Y.length; K++)
|
|
1439
|
+
g.on(Y[K], this.emit.bind(this, Y[K]));
|
|
1440
|
+
return this._read = function(v) {
|
|
1441
|
+
r("wrapped _read", v), w && (w = !1, g.resume());
|
|
1442
|
+
}, this;
|
|
1443
|
+
}, typeof Symbol == "function" && (p.prototype[Symbol.asyncIterator] = function() {
|
|
1444
|
+
return F === void 0 && (F = bI()), F(this);
|
|
1445
|
+
}), Object.defineProperty(p.prototype, "readableHighWaterMark", {
|
|
1446
|
+
// making it explicit this property is not enumerable
|
|
1447
|
+
// because otherwise some prototype manipulation in
|
|
1448
|
+
// userland will fail
|
|
1449
|
+
enumerable: !1,
|
|
1450
|
+
get: function() {
|
|
1451
|
+
return this._readableState.highWaterMark;
|
|
1452
|
+
}
|
|
1453
|
+
}), Object.defineProperty(p.prototype, "readableBuffer", {
|
|
1454
|
+
// making it explicit this property is not enumerable
|
|
1455
|
+
// because otherwise some prototype manipulation in
|
|
1456
|
+
// userland will fail
|
|
1457
|
+
enumerable: !1,
|
|
1458
|
+
get: function() {
|
|
1459
|
+
return this._readableState && this._readableState.buffer;
|
|
1460
|
+
}
|
|
1461
|
+
}), Object.defineProperty(p.prototype, "readableFlowing", {
|
|
1462
|
+
// making it explicit this property is not enumerable
|
|
1463
|
+
// because otherwise some prototype manipulation in
|
|
1464
|
+
// userland will fail
|
|
1465
|
+
enumerable: !1,
|
|
1466
|
+
get: function() {
|
|
1467
|
+
return this._readableState.flowing;
|
|
1468
|
+
},
|
|
1469
|
+
set: function(B) {
|
|
1470
|
+
this._readableState && (this._readableState.flowing = B);
|
|
1471
|
+
}
|
|
1472
|
+
}), p._fromList = e, Object.defineProperty(p.prototype, "readableLength", {
|
|
1473
|
+
// making it explicit this property is not enumerable
|
|
1474
|
+
// because otherwise some prototype manipulation in
|
|
1475
|
+
// userland will fail
|
|
1476
|
+
enumerable: !1,
|
|
1477
|
+
get: function() {
|
|
1478
|
+
return this._readableState.length;
|
|
1479
|
+
}
|
|
1480
|
+
});
|
|
1481
|
+
function e(g, B) {
|
|
1482
|
+
if (B.length === 0)
|
|
1483
|
+
return null;
|
|
1484
|
+
var n;
|
|
1485
|
+
return B.objectMode ? n = B.buffer.shift() : !g || g >= B.length ? (B.decoder ? n = B.buffer.join("") : B.buffer.length === 1 ? n = B.buffer.first() : n = B.buffer.concat(B.length), B.buffer.clear()) : n = B.buffer.consume(g, B.decoder), n;
|
|
1486
|
+
}
|
|
1487
|
+
function f(g) {
|
|
1488
|
+
var B = g._readableState;
|
|
1489
|
+
r("endReadable", B.endEmitted), B.endEmitted || (B.ended = !0, process.nextTick(M, B, g));
|
|
1490
|
+
}
|
|
1491
|
+
function M(g, B) {
|
|
1492
|
+
if (r("endReadableNT", g.endEmitted, g.length), !g.endEmitted && g.length === 0 && (g.endEmitted = !0, B.readable = !1, B.emit("end"), g.autoDestroy)) {
|
|
1493
|
+
var n = B._writableState;
|
|
1494
|
+
(!n || n.autoDestroy && n.finished) && B.destroy();
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1497
|
+
typeof Symbol == "function" && (p.from = function(g, B) {
|
|
1498
|
+
return l === void 0 && (l = mI()), l(p, g, B);
|
|
1499
|
+
});
|
|
1500
|
+
function _(g, B) {
|
|
1501
|
+
for (var n = 0, w = g.length; n < w; n++)
|
|
1502
|
+
if (g[n] === B)
|
|
1503
|
+
return n;
|
|
1504
|
+
return -1;
|
|
1505
|
+
}
|
|
1506
|
+
return LA;
|
|
1507
|
+
}
|
|
1508
|
+
var fI = QA, NA = oA.codes, TI = NA.ERR_METHOD_NOT_IMPLEMENTED, vI = NA.ERR_MULTIPLE_CALLBACK, OI = NA.ERR_TRANSFORM_ALREADY_TRANSFORMING, WI = NA.ERR_TRANSFORM_WITH_LENGTH_0, kA = hA();
|
|
1509
|
+
dA(QA, kA);
|
|
1510
|
+
function PI(E, I) {
|
|
1511
|
+
var A = this._transformState;
|
|
1512
|
+
A.transforming = !1;
|
|
1513
|
+
var Q = A.writecb;
|
|
1514
|
+
if (Q === null)
|
|
1515
|
+
return this.emit("error", new vI());
|
|
1516
|
+
A.writechunk = null, A.writecb = null, I != null && this.push(I), Q(E);
|
|
1517
|
+
var C = this._readableState;
|
|
1518
|
+
C.reading = !1, (C.needReadable || C.length < C.highWaterMark) && this._read(C.highWaterMark);
|
|
1519
|
+
}
|
|
1520
|
+
function QA(E) {
|
|
1521
|
+
if (!(this instanceof QA))
|
|
1522
|
+
return new QA(E);
|
|
1523
|
+
kA.call(this, E), this._transformState = {
|
|
1524
|
+
afterTransform: PI.bind(this),
|
|
1525
|
+
needTransform: !1,
|
|
1526
|
+
transforming: !1,
|
|
1527
|
+
writecb: null,
|
|
1528
|
+
writechunk: null,
|
|
1529
|
+
writeencoding: null
|
|
1530
|
+
}, this._readableState.needReadable = !0, this._readableState.sync = !1, E && (typeof E.transform == "function" && (this._transform = E.transform), typeof E.flush == "function" && (this._flush = E.flush)), this.on("prefinish", xI);
|
|
1531
|
+
}
|
|
1532
|
+
function xI() {
|
|
1533
|
+
var E = this;
|
|
1534
|
+
typeof this._flush == "function" && !this._readableState.destroyed ? this._flush(function(I, A) {
|
|
1535
|
+
BI(E, I, A);
|
|
1536
|
+
}) : BI(this, null, null);
|
|
1537
|
+
}
|
|
1538
|
+
QA.prototype.push = function(E, I) {
|
|
1539
|
+
return this._transformState.needTransform = !1, kA.prototype.push.call(this, E, I);
|
|
1540
|
+
};
|
|
1541
|
+
QA.prototype._transform = function(E, I, A) {
|
|
1542
|
+
A(new TI("_transform()"));
|
|
1543
|
+
};
|
|
1544
|
+
QA.prototype._write = function(E, I, A) {
|
|
1545
|
+
var Q = this._transformState;
|
|
1546
|
+
if (Q.writecb = A, Q.writechunk = E, Q.writeencoding = I, !Q.transforming) {
|
|
1547
|
+
var C = this._readableState;
|
|
1548
|
+
(Q.needTransform || C.needReadable || C.length < C.highWaterMark) && this._read(C.highWaterMark);
|
|
1549
|
+
}
|
|
1550
|
+
};
|
|
1551
|
+
QA.prototype._read = function(E) {
|
|
1552
|
+
var I = this._transformState;
|
|
1553
|
+
I.writechunk !== null && !I.transforming ? (I.transforming = !0, this._transform(I.writechunk, I.writeencoding, I.afterTransform)) : I.needTransform = !0;
|
|
1554
|
+
};
|
|
1555
|
+
QA.prototype._destroy = function(E, I) {
|
|
1556
|
+
kA.prototype._destroy.call(this, E, function(A) {
|
|
1557
|
+
I(A);
|
|
1558
|
+
});
|
|
1559
|
+
};
|
|
1560
|
+
function BI(E, I, A) {
|
|
1561
|
+
if (I)
|
|
1562
|
+
return E.emit("error", I);
|
|
1563
|
+
if (A != null && E.push(A), E._writableState.length)
|
|
1564
|
+
throw new WI();
|
|
1565
|
+
if (E._transformState.transforming)
|
|
1566
|
+
throw new OI();
|
|
1567
|
+
return E.push(null);
|
|
1568
|
+
}
|
|
1569
|
+
var ZI = SA, hI = fI;
|
|
1570
|
+
dA(SA, hI);
|
|
1571
|
+
function SA(E) {
|
|
1572
|
+
if (!(this instanceof SA))
|
|
1573
|
+
return new SA(E);
|
|
1574
|
+
hI.call(this, E);
|
|
1575
|
+
}
|
|
1576
|
+
SA.prototype._transform = function(E, I, A) {
|
|
1577
|
+
A(null, E);
|
|
1578
|
+
};
|
|
1579
|
+
var qA;
|
|
1580
|
+
function jI(E) {
|
|
1581
|
+
var I = !1;
|
|
1582
|
+
return function() {
|
|
1583
|
+
I || (I = !0, E.apply(void 0, arguments));
|
|
1584
|
+
};
|
|
1585
|
+
}
|
|
1586
|
+
var DI = oA.codes, VI = DI.ERR_MISSING_ARGS, XI = DI.ERR_STREAM_DESTROYED;
|
|
1587
|
+
function EI(E) {
|
|
1588
|
+
if (E)
|
|
1589
|
+
throw E;
|
|
1590
|
+
}
|
|
1591
|
+
function zI(E) {
|
|
1592
|
+
return E.setHeader && typeof E.abort == "function";
|
|
1593
|
+
}
|
|
1594
|
+
function $I(E, I, A, Q) {
|
|
1595
|
+
Q = jI(Q);
|
|
1596
|
+
var C = !1;
|
|
1597
|
+
E.on("close", function() {
|
|
1598
|
+
C = !0;
|
|
1599
|
+
}), qA === void 0 && (qA = WA), qA(E, {
|
|
1600
|
+
readable: I,
|
|
1601
|
+
writable: A
|
|
1602
|
+
}, function(a) {
|
|
1603
|
+
if (a)
|
|
1604
|
+
return Q(a);
|
|
1605
|
+
C = !0, Q();
|
|
1606
|
+
});
|
|
1607
|
+
var o = !1;
|
|
1608
|
+
return function(a) {
|
|
1609
|
+
if (!C && !o) {
|
|
1610
|
+
if (o = !0, zI(E))
|
|
1611
|
+
return E.abort();
|
|
1612
|
+
if (typeof E.destroy == "function")
|
|
1613
|
+
return E.destroy();
|
|
1614
|
+
Q(a || new XI("pipe"));
|
|
1615
|
+
}
|
|
1616
|
+
};
|
|
1617
|
+
}
|
|
1618
|
+
function QI(E) {
|
|
1619
|
+
E();
|
|
1620
|
+
}
|
|
1621
|
+
function Ag(E, I) {
|
|
1622
|
+
return E.pipe(I);
|
|
1623
|
+
}
|
|
1624
|
+
function Ig(E) {
|
|
1625
|
+
return !E.length || typeof E[E.length - 1] != "function" ? EI : E.pop();
|
|
1626
|
+
}
|
|
1627
|
+
function gg() {
|
|
1628
|
+
for (var E = arguments.length, I = new Array(E), A = 0; A < E; A++)
|
|
1629
|
+
I[A] = arguments[A];
|
|
1630
|
+
var Q = Ig(I);
|
|
1631
|
+
if (Array.isArray(I[0]) && (I = I[0]), I.length < 2)
|
|
1632
|
+
throw new VI("streams");
|
|
1633
|
+
var C, o = I.map(function(a, h) {
|
|
1634
|
+
var r = h < I.length - 1, D = h > 0;
|
|
1635
|
+
return $I(a, r, D, function(G) {
|
|
1636
|
+
C || (C = G), G && o.forEach(QI), !r && (o.forEach(QI), Q(C));
|
|
1637
|
+
});
|
|
1638
|
+
});
|
|
1639
|
+
return I.reduce(Ag);
|
|
1640
|
+
}
|
|
1641
|
+
var Bg = gg;
|
|
1642
|
+
(function(E, I) {
|
|
1643
|
+
I = E.exports = sI(), I.Stream = I, I.Readable = I, I.Writable = oI(), I.Duplex = hA(), I.Transform = fI, I.PassThrough = ZI, I.finished = WA, I.pipeline = Bg;
|
|
1644
|
+
})(mA, mA.exports);
|
|
1645
|
+
var Eg = mA.exports;
|
|
1646
|
+
const { Transform: MA } = Eg;
|
|
1647
|
+
function Qg(E, I) {
|
|
1648
|
+
E.super_ = I, E.prototype = Object.create(I.prototype, {
|
|
1649
|
+
constructor: { value: E, enumerable: !1, writable: !0, configurable: !0 }
|
|
1650
|
+
});
|
|
1651
|
+
}
|
|
1652
|
+
function PA(E) {
|
|
1653
|
+
return (I, A, Q) => (typeof I == "function" && (Q = A, A = I, I = {}), typeof A != "function" && (A = (C, o, a) => a(null, C)), typeof Q != "function" && (Q = null), E(I, A, Q));
|
|
1654
|
+
}
|
|
1655
|
+
const Cg = PA((E, I, A) => {
|
|
1656
|
+
const Q = new MA(E);
|
|
1657
|
+
return Q._transform = I, A && (Q._flush = A), Q;
|
|
1658
|
+
}), eg = PA((E, I, A) => {
|
|
1659
|
+
function Q(C) {
|
|
1660
|
+
if (!(this instanceof Q))
|
|
1661
|
+
return new Q(C);
|
|
1662
|
+
this.options = Object.assign({}, E, C), MA.call(this, this.options), this._transform = I, A && (this._flush = A);
|
|
1663
|
+
}
|
|
1664
|
+
return Qg(Q, MA), Q;
|
|
1665
|
+
}), ig = PA(function(E, I, A) {
|
|
1666
|
+
const Q = new MA(Object.assign({ objectMode: !0, highWaterMark: 16 }, E));
|
|
1667
|
+
return Q._transform = I, A && (Q._flush = A), Q;
|
|
1668
|
+
});
|
|
1669
|
+
GA.exports = Cg;
|
|
1670
|
+
GA.exports.ctor = eg;
|
|
1671
|
+
GA.exports.obj = ig;
|
|
1672
|
+
var tg = GA.exports;
|
|
1673
|
+
const bA = /* @__PURE__ */ wI(tg);
|
|
1674
|
+
class ag {
|
|
1675
|
+
constructor() {
|
|
1676
|
+
this.initResolve = null, this.utils = null, this.wasm = null;
|
|
1677
|
+
}
|
|
1678
|
+
init() {
|
|
1679
|
+
const I = this, A = (Q) => {
|
|
1680
|
+
I.wasm = Q, I.utils = new EA(Q), I.AES_KEY_SIZE = Q._EMS_AES_KEY_SIZE_(), I.CRYPTO_TYPE_TARGET = Q._EMS_CRYPTO_TYPE_TARGET_(), I.CRYPTO_TYPE_PRIMARY = Q._EMS_CRYPTO_TYPE_PRIMARY_(), I.TARGET_BLOCK_KEY_SIZE = Q._EMS_TARGET_BLOCK_KEY_SIZE_(), I.TARGET_PK_KEY_SIZE = Q._EMS_TARGET_PK_KEY_SIZE_(), I.ECIES_PK_KEY_SIZE = Q._EMS_ECIES_PK_KEY_SIZE_(), I.ECIES_SK_KEY_SIZE = Q._EMS_ECIES_SK_KEY_SIZE_(), I.IV_SIZE = Q._EMS_IV_SIZE_(), I.PRIMARY_BLOCK_KEY_SIZE = Q._EMS_PRIMARY_BLOCK_KEY_SIZE_(), I.PRIMARY_PK_KEY_SIZE = Q._EMS_PRIMARY_PK_KEY_SIZE_(), I.RE_ENCRYPTION_KEY_SIZE = Q._EMS_RE_ENCRYPTION_KEY_SIZE_(), I.SECRET_KEY_SIZE = Q._EMS_SECRET_KEY_SIZE_(), I.SEED_SIZE = Q._EMS_SEED_SIZE_(), I.TAG_SIZE = Q._EMS_TAG_SIZE_(), I.ELV_E_INCOMPLETE_BLOCK = -2, I.initResolve && I.initResolve(I);
|
|
1681
|
+
};
|
|
1682
|
+
return SI().then(A), new Promise((Q) => {
|
|
1683
|
+
I.wasm ? Q(I) : I.initResolve = Q;
|
|
1684
|
+
});
|
|
1685
|
+
}
|
|
1686
|
+
calcEncByteCount(I) {
|
|
1687
|
+
return this.wasm._CalcEncByteCount(I);
|
|
1688
|
+
}
|
|
1689
|
+
calcEncByteCountH(I, A) {
|
|
1690
|
+
return this.wasm._CalcEncByteCountH(I, A);
|
|
1691
|
+
}
|
|
1692
|
+
calcEncByteCountFromTargetH(I) {
|
|
1693
|
+
return this.wasm._CalcEncByteCountFromTargetH(I);
|
|
1694
|
+
}
|
|
1695
|
+
calcTargetByteCountH(I) {
|
|
1696
|
+
return this.wasm._CalcTargetByteCountH(I);
|
|
1697
|
+
}
|
|
1698
|
+
calcEncECIESByteCount(I) {
|
|
1699
|
+
return this.wasm._CalcEncECIESByteCount(I);
|
|
1700
|
+
}
|
|
1701
|
+
/*
|
|
1702
|
+
* Performs ECIES standard encryption of input data using the provided
|
|
1703
|
+
* public key.
|
|
1704
|
+
*
|
|
1705
|
+
* data [Uint8Array]
|
|
1706
|
+
* publicKey [Uint8Array ECIES_PK_KEY_SIZE] - An uncompressed, byte
|
|
1707
|
+
* serialized secp256k1 key - the same curve type used by Ethereum.
|
|
1708
|
+
*
|
|
1709
|
+
* Returns the encrypted bytes, the 65 byte encrypted ephemeral key used for
|
|
1710
|
+
* encryption and also required for decryption, and the 16 byte HMAC tag
|
|
1711
|
+
* to verify the data integrity when decrypted:
|
|
1712
|
+
* {
|
|
1713
|
+
* data: [Uint8Array],
|
|
1714
|
+
* ephemeralKey: [Uint8Array ECIES_PK_KEY_SIZE],
|
|
1715
|
+
* tag: [Uint8Array TAG_SIZE]
|
|
1716
|
+
* }
|
|
1717
|
+
*/
|
|
1718
|
+
encryptECIES(I, A) {
|
|
1719
|
+
if (A.length !== this.ECIES_PK_KEY_SIZE)
|
|
1720
|
+
throw new Error(`encryptECIES() failed: Expected publicKey length
|
|
1721
|
+
${this.ECIES_PK_KEY_SIZE}, not ${A.length}`);
|
|
1722
|
+
const Q = this.wasm, C = this.utils, o = EA.randomBytes(this.SEED_SIZE), a = C.arrayToSmartBuf(I), h = C.arrayToSmartBuf(A), r = C.arrayToSmartBuf(o), D = this.calcEncECIESByteCount(a.len), G = C.smartMalloc(D), N = C.smartMalloc(this.ECIES_PK_KEY_SIZE), b = C.smartMalloc(this.TAG_SIZE), q = Q._EncryptECIES(
|
|
1723
|
+
r.ptr,
|
|
1724
|
+
r.len,
|
|
1725
|
+
h.ptr,
|
|
1726
|
+
a.ptr,
|
|
1727
|
+
a.len,
|
|
1728
|
+
G,
|
|
1729
|
+
D,
|
|
1730
|
+
N,
|
|
1731
|
+
b
|
|
1732
|
+
);
|
|
1733
|
+
if (q !== 0)
|
|
1734
|
+
throw new Error(`_EncryptECIES failed with error code ${q}`);
|
|
1735
|
+
return {
|
|
1736
|
+
data: new Uint8Array(Q.HEAPU8.buffer, G, D),
|
|
1737
|
+
ephemeralKey: new Uint8Array(
|
|
1738
|
+
Q.HEAPU8.buffer,
|
|
1739
|
+
N,
|
|
1740
|
+
this.ECIES_PK_KEY_SIZE
|
|
1741
|
+
).slice(0),
|
|
1742
|
+
tag: new Uint8Array(Q.HEAPU8.buffer, b, this.TAG_SIZE).slice(0)
|
|
1743
|
+
};
|
|
1744
|
+
}
|
|
1745
|
+
/*
|
|
1746
|
+
* Performs ECIES standard decryption of data encrypted with a secp256k1
|
|
1747
|
+
* public key.
|
|
1748
|
+
*
|
|
1749
|
+
* data [Uint8Array]
|
|
1750
|
+
* secretKey [Uint8Array ECIES_SK_KEY_SIZE] - The private key corresponding
|
|
1751
|
+
* to the public key used for encryption.
|
|
1752
|
+
* ephemeralKey [Uint8Array ECIES_PK_KEY_SIZE] - Generated by encryption
|
|
1753
|
+
* tag [Uint8Array TAG_SIZE] - Generated by encryption
|
|
1754
|
+
*
|
|
1755
|
+
* Returns the decrypted bytes as an Uint8Array
|
|
1756
|
+
*/
|
|
1757
|
+
decryptECIES(I, A, Q, C) {
|
|
1758
|
+
if (A.length !== this.ECIES_SK_KEY_SIZE)
|
|
1759
|
+
throw new Error(`decryptECIES() failed: Expected secretKey length
|
|
1760
|
+
${this.ECIES_SK_KEY_SIZE}, not ${A.length}`);
|
|
1761
|
+
if (Q.length !== this.ECIES_PK_KEY_SIZE)
|
|
1762
|
+
throw new Error(`decryptECIES() failed: Expected ephemeralKey length
|
|
1763
|
+
${this.ECIES_PK_KEY_SIZE}, not ${Q.length}`);
|
|
1764
|
+
if (C.length !== this.TAG_SIZE)
|
|
1765
|
+
throw new Error(`decryptECIES() failed: Expected tag length
|
|
1766
|
+
${this.TAG_SIZE}, not ${C.length}`);
|
|
1767
|
+
const o = this.wasm, a = this.utils, h = a.arrayToSmartBuf(I), r = a.arrayToSmartBuf(A), D = a.arrayToSmartBuf(Q), G = a.arrayToSmartBuf(C), N = h.len, b = a.smartMalloc(N), q = o._DecryptECIES(
|
|
1768
|
+
D.ptr,
|
|
1769
|
+
h.ptr,
|
|
1770
|
+
h.len,
|
|
1771
|
+
G.ptr,
|
|
1772
|
+
r.ptr,
|
|
1773
|
+
b,
|
|
1774
|
+
N
|
|
1775
|
+
);
|
|
1776
|
+
if (q === -1)
|
|
1777
|
+
throw new Error("_DecryptECIES failed");
|
|
1778
|
+
return new Uint8Array(o.HEAPU8.buffer, b, q);
|
|
1779
|
+
}
|
|
1780
|
+
/*
|
|
1781
|
+
* Generates a "target" private / public key pair for use in content
|
|
1782
|
+
* re-encryption. Target keys are generally used to receive re-encrypted
|
|
1783
|
+
* data and not for direct encryption.
|
|
1784
|
+
*
|
|
1785
|
+
* Returns a 48 byte private key and uncompressed 193 byte public key that
|
|
1786
|
+
* follows the convention of 0x04 as the first byte:
|
|
1787
|
+
* {
|
|
1788
|
+
* secretKey: [Uint8Array SECRET_KEY_SIZE],
|
|
1789
|
+
* publicKey: [Uint8Array TARGET_PK_KEY_SIZE]
|
|
1790
|
+
* }
|
|
1791
|
+
*/
|
|
1792
|
+
generateTargetKeys() {
|
|
1793
|
+
const I = this.wasm, A = this.utils, Q = EA.randomBytes(this.SEED_SIZE), C = A.arrayToSmartBuf(Q), o = A.smartMalloc(this.SECRET_KEY_SIZE), a = A.smartMalloc(this.TARGET_PK_KEY_SIZE), h = I._GenerateTargetKeys(C.ptr, C.len, o, a);
|
|
1794
|
+
if (h !== 0)
|
|
1795
|
+
throw new Error(`_GenerateTargetKeys failed with error code ${h}`);
|
|
1796
|
+
return {
|
|
1797
|
+
secretKey: new Uint8Array(
|
|
1798
|
+
I.HEAPU8.buffer,
|
|
1799
|
+
o,
|
|
1800
|
+
this.SECRET_KEY_SIZE
|
|
1801
|
+
).slice(0),
|
|
1802
|
+
publicKey: new Uint8Array(
|
|
1803
|
+
I.HEAPU8.buffer,
|
|
1804
|
+
a,
|
|
1805
|
+
this.TARGET_PK_KEY_SIZE
|
|
1806
|
+
).slice(0)
|
|
1807
|
+
};
|
|
1808
|
+
}
|
|
1809
|
+
/*
|
|
1810
|
+
* Generates a "primary" private / public key pair for use in content
|
|
1811
|
+
* encryption. Primary encryption is generally the encryption performed by the
|
|
1812
|
+
* owner or publisher of the content.
|
|
1813
|
+
*
|
|
1814
|
+
* Returns a 48 byte private key and 97 byte public key that follows the
|
|
1815
|
+
* convention of 0x04 as the first byte:
|
|
1816
|
+
* {
|
|
1817
|
+
* secretKey: [Uint8Array SECRET_KEY_SIZE],
|
|
1818
|
+
* publicKey: [Uint8Array PRIMARY_PK_KEY_SIZE]
|
|
1819
|
+
* }
|
|
1820
|
+
*/
|
|
1821
|
+
generatePrimaryKeys() {
|
|
1822
|
+
const I = this.wasm, A = this.utils, Q = EA.randomBytes(this.SEED_SIZE), C = A.arrayToSmartBuf(Q), o = A.smartMalloc(this.SECRET_KEY_SIZE), a = A.smartMalloc(this.PRIMARY_PK_KEY_SIZE), h = I._GeneratePrimaryKeys(C.ptr, C.len, o, a);
|
|
1823
|
+
if (h !== 0)
|
|
1824
|
+
throw new Error(`_GeneratePrimaryKeys failed with error code ${h}`);
|
|
1825
|
+
return {
|
|
1826
|
+
secretKey: new Uint8Array(
|
|
1827
|
+
I.HEAPU8.buffer,
|
|
1828
|
+
o,
|
|
1829
|
+
this.SECRET_KEY_SIZE
|
|
1830
|
+
).slice(0),
|
|
1831
|
+
publicKey: new Uint8Array(
|
|
1832
|
+
I.HEAPU8.buffer,
|
|
1833
|
+
a,
|
|
1834
|
+
this.PRIMARY_PK_KEY_SIZE
|
|
1835
|
+
).slice(0)
|
|
1836
|
+
};
|
|
1837
|
+
}
|
|
1838
|
+
/*
|
|
1839
|
+
* Creates a key that can be used to re-encrypt data from 'primary'
|
|
1840
|
+
* encryption to 'target' encryption. It is then in a form where it can be
|
|
1841
|
+
* decrypted with the private target key of the intended recipient.
|
|
1842
|
+
*
|
|
1843
|
+
* primarySK [Uint8Array SECRET_KEY_SIZE]: The primary private key used to
|
|
1844
|
+
* encrypt the data
|
|
1845
|
+
* targetPK [Uint8Array TARGET_PK_KEY_SIZE]: The target public key of
|
|
1846
|
+
* the target recipient of the re-encrypted data.
|
|
1847
|
+
*
|
|
1848
|
+
* Returns a 193 key: [Uint8Array RE_ENCRYPTION_KEY_SIZE]
|
|
1849
|
+
*/
|
|
1850
|
+
generateReEncryptionKey(I, A) {
|
|
1851
|
+
if (I.length !== this.SECRET_KEY_SIZE)
|
|
1852
|
+
throw new Error(`generateReEncryptionKey() failed: Expected primarySK
|
|
1853
|
+
length ${this.SECRET_KEY_SIZE}, not ${I.length}`);
|
|
1854
|
+
if (A.length !== this.TARGET_PK_KEY_SIZE)
|
|
1855
|
+
throw new Error(`generateReEncryptionKey() failed: Expected targetPK
|
|
1856
|
+
length ${this.TARGET_PK_KEY_SIZE}, not ${A.length}`);
|
|
1857
|
+
const Q = this.wasm, C = this.utils, o = C.arrayToSmartBuf(I), a = C.arrayToSmartBuf(A), h = C.smartMalloc(this.RE_ENCRYPTION_KEY_SIZE), r = Q._GenerateReEncryptionKey(o.ptr, a.ptr, h);
|
|
1858
|
+
if (r !== 0)
|
|
1859
|
+
throw new Error(
|
|
1860
|
+
`_GenerateReEncryptionKey failed with error code ${r}`
|
|
1861
|
+
);
|
|
1862
|
+
return new Uint8Array(
|
|
1863
|
+
Q.HEAPU8.buffer,
|
|
1864
|
+
h,
|
|
1865
|
+
this.RE_ENCRYPTION_KEY_SIZE
|
|
1866
|
+
).slice(0);
|
|
1867
|
+
}
|
|
1868
|
+
/*
|
|
1869
|
+
* Generates a symmetric key and an initialization vector (IV) for use
|
|
1870
|
+
* with content encryption.
|
|
1871
|
+
*
|
|
1872
|
+
* Returns a 16 byte key (AES-128) and 12 byte IV:
|
|
1873
|
+
* {
|
|
1874
|
+
* key: [Uint8Array AES_KEY_SIZE],
|
|
1875
|
+
* iv: [Uint8Array IV_SIZE]
|
|
1876
|
+
* }
|
|
1877
|
+
*/
|
|
1878
|
+
generateSymmetricKey() {
|
|
1879
|
+
const I = this.wasm, A = this.utils, Q = EA.randomBytes(this.SEED_SIZE), C = A.arrayToSmartBuf(Q), o = A.smartMalloc(this.AES_KEY_SIZE), a = A.smartMalloc(this.IV_SIZE), h = I._GenerateSymmetricKeys(
|
|
1880
|
+
C.ptr,
|
|
1881
|
+
C.len,
|
|
1882
|
+
o,
|
|
1883
|
+
a
|
|
1884
|
+
);
|
|
1885
|
+
if (h !== 0)
|
|
1886
|
+
throw new Error(`_GenerateSymmetricKeys failed with error code ${h}`);
|
|
1887
|
+
return {
|
|
1888
|
+
key: new Uint8Array(I.HEAPU8.buffer, o, this.AES_KEY_SIZE).slice(0),
|
|
1889
|
+
iv: new Uint8Array(I.HEAPU8.buffer, a, this.IV_SIZE).slice(0)
|
|
1890
|
+
};
|
|
1891
|
+
}
|
|
1892
|
+
/*
|
|
1893
|
+
* Creates a context used for block-based primary encryption through
|
|
1894
|
+
* EncryptPrimary. Free the context when done.
|
|
1895
|
+
*
|
|
1896
|
+
* publicKey [Uint8Array PRIMARY_PK_KEY_SIZE]
|
|
1897
|
+
* secretKey [Uint8Array SECRET_KEY_SIZE] - Optional (needed for DecryptPrimary)
|
|
1898
|
+
* symmetricKey [Uint8Array AES_KEY_SIZE]
|
|
1899
|
+
*
|
|
1900
|
+
* returns PrimaryContext
|
|
1901
|
+
*/
|
|
1902
|
+
newPrimaryContext(I, A, Q) {
|
|
1903
|
+
if (I && I.length !== this.PRIMARY_PK_KEY_SIZE)
|
|
1904
|
+
throw new Error(`newPrimaryContext() failed: Expected publicKey
|
|
1905
|
+
length ${this.PRIMARY_PK_KEY_SIZE}, not ${I.length}`);
|
|
1906
|
+
if (A && A.length !== this.SECRET_KEY_SIZE)
|
|
1907
|
+
throw new Error(`newPrimaryContext() failed: Expected secretKey
|
|
1908
|
+
length ${this.SECRET_KEY_SIZE}, not ${A.length}`);
|
|
1909
|
+
if (Q.length !== this.AES_KEY_SIZE)
|
|
1910
|
+
throw new Error(`newPrimaryContext() failed: Expected
|
|
1911
|
+
symmetricKey length ${this.AES_KEY_SIZE}, not ${Q.length}`);
|
|
1912
|
+
const C = this.generateSymmetricKey();
|
|
1913
|
+
return new lI(
|
|
1914
|
+
this.wasm,
|
|
1915
|
+
I,
|
|
1916
|
+
A,
|
|
1917
|
+
Q,
|
|
1918
|
+
C.iv
|
|
1919
|
+
);
|
|
1920
|
+
}
|
|
1921
|
+
/*
|
|
1922
|
+
* Performs one 'block' of primary encryption. Each block has both
|
|
1923
|
+
* performance and data size overhead so a fairly large block size is
|
|
1924
|
+
* intended and recommended. We currently use 1MB as a default clear-text
|
|
1925
|
+
* block size. The initialization vector (IV) must be unique for each block
|
|
1926
|
+
* so the context provides a helper function that can be used to generate a
|
|
1927
|
+
* base IV that can then be incremented to create unique values.
|
|
1928
|
+
*
|
|
1929
|
+
* PrimaryContext
|
|
1930
|
+
* data [Uint8Array]
|
|
1931
|
+
* iv [Uint8Array IV_SIZE (12 bytes)]
|
|
1932
|
+
*
|
|
1933
|
+
* Returns: {
|
|
1934
|
+
* blockKey [Uint8Array PRIMARY_BLOCK_KEY_SIZE (97 bytes)],
|
|
1935
|
+
* data [Uint8Array],
|
|
1936
|
+
* tag [Uint8Array TAG_SIZE (16 bytes)],
|
|
1937
|
+
* }
|
|
1938
|
+
*/
|
|
1939
|
+
encryptPrimary(I, A, Q) {
|
|
1940
|
+
if (Q.length !== this.IV_SIZE)
|
|
1941
|
+
throw new Error(`encryptPrimary() failed: Expected iv
|
|
1942
|
+
length ${this.IV_SIZE}, not ${Q.length}`);
|
|
1943
|
+
if (I.scratchBuf.len !== 0)
|
|
1944
|
+
throw new Error("encryptPrimary() failed: Scratch buffer is not empty");
|
|
1945
|
+
const C = this.wasm, o = this.utils, a = o.arrayToSmartBuf(Q), h = o.arrayToSmartBuf(A), r = this.calcEncByteCount(h.len);
|
|
1946
|
+
I.scratchBuf.ensureSize(r);
|
|
1947
|
+
const D = o.smartMalloc(this.TAG_SIZE), G = o.smartMalloc(this.PRIMARY_BLOCK_KEY_SIZE), N = C._EncryptPrimary(
|
|
1948
|
+
I.context,
|
|
1949
|
+
I.pkBuf.ptr,
|
|
1950
|
+
I.symKeyBuf.ptr,
|
|
1951
|
+
a.ptr,
|
|
1952
|
+
h.ptr,
|
|
1953
|
+
h.len,
|
|
1954
|
+
I.scratchBuf.ptr,
|
|
1955
|
+
r,
|
|
1956
|
+
D,
|
|
1957
|
+
G
|
|
1958
|
+
);
|
|
1959
|
+
if (N !== 0)
|
|
1960
|
+
throw new Error(`_EncryptPrimary failed with error code ${N}`);
|
|
1961
|
+
return {
|
|
1962
|
+
blockKey: new Uint8Array(
|
|
1963
|
+
C.HEAPU8.buffer,
|
|
1964
|
+
G,
|
|
1965
|
+
this.PRIMARY_BLOCK_KEY_SIZE
|
|
1966
|
+
).slice(0),
|
|
1967
|
+
data: new Uint8Array(C.HEAPU8.buffer, I.scratchBuf.ptr, r),
|
|
1968
|
+
tag: new Uint8Array(C.HEAPU8.buffer, D, this.TAG_SIZE).slice(0)
|
|
1969
|
+
};
|
|
1970
|
+
}
|
|
1971
|
+
/*
|
|
1972
|
+
* Same as EncryptPrimary except the blockKey and tag are included in the
|
|
1973
|
+
* encrypted data output, and the iv is generated automatically using the
|
|
1974
|
+
* context method generateNextBlockIV.
|
|
1975
|
+
*
|
|
1976
|
+
* PrimaryContext
|
|
1977
|
+
* data [Uint8Array]
|
|
1978
|
+
*
|
|
1979
|
+
* Returns: data [Uint8Array]
|
|
1980
|
+
*/
|
|
1981
|
+
encryptPrimaryH(I, A) {
|
|
1982
|
+
if (I.scratchBuf.len !== 0)
|
|
1983
|
+
throw new Error("encryptPrimaryH() failed: Scratch buffer is not empty");
|
|
1984
|
+
const Q = this.wasm, C = this.utils, o = I.generateNextBlockIV(), a = C.arrayToSmartBuf(o), h = C.arrayToSmartBuf(A), r = this.calcEncByteCountH(
|
|
1985
|
+
this.CRYPTO_TYPE_PRIMARY,
|
|
1986
|
+
h.len
|
|
1987
|
+
);
|
|
1988
|
+
I.scratchBuf.ensureSize(r);
|
|
1989
|
+
const D = Q._EncryptPrimaryH(
|
|
1990
|
+
I.context,
|
|
1991
|
+
I.pkBuf.ptr,
|
|
1992
|
+
I.symKeyBuf.ptr,
|
|
1993
|
+
a.ptr,
|
|
1994
|
+
h.ptr,
|
|
1995
|
+
h.len,
|
|
1996
|
+
I.scratchBuf.ptr
|
|
1997
|
+
);
|
|
1998
|
+
if (D !== 0)
|
|
1999
|
+
throw new Error(`_EncryptPrimaryH failed with error code ${D}`);
|
|
2000
|
+
return new Uint8Array(Q.HEAPU8.buffer, I.scratchBuf.ptr, r);
|
|
2001
|
+
}
|
|
2002
|
+
/*
|
|
2003
|
+
* PrimaryContext
|
|
2004
|
+
* data [Uint8Array]
|
|
2005
|
+
* tag [Uint8Array TAG_SIZE (16 bytes)]
|
|
2006
|
+
* blockKey [Uint8Array PRIMARY_BLOCK_KEY_SIZE (97 bytes)]
|
|
2007
|
+
* iv [Uint8Array IV_SIZE (12 bytes)]
|
|
2008
|
+
* clearSize - length of decrypted data
|
|
2009
|
+
*
|
|
2010
|
+
* Returns decrypted data [Uint8Array]
|
|
2011
|
+
*/
|
|
2012
|
+
decryptPrimary(I, A, Q, C, o, a) {
|
|
2013
|
+
if (Q.length !== this.TAG_SIZE)
|
|
2014
|
+
throw new Error(`decryptPrimary() failed: Expected tag
|
|
2015
|
+
length ${this.TAG_SIZE}, not ${Q.length}`);
|
|
2016
|
+
if (C.length !== this.PRIMARY_BLOCK_KEY_SIZE)
|
|
2017
|
+
throw new Error(`decryptPrimary() failed: Expected blockKey
|
|
2018
|
+
length ${this.PRIMARY_BLOCK_KEY_SIZE}, not ${C.length}`);
|
|
2019
|
+
if (o.length !== this.IV_SIZE)
|
|
2020
|
+
throw new Error(`decryptPrimary() failed: Expected iv
|
|
2021
|
+
length ${this.IV_SIZE}, not ${o.length}`);
|
|
2022
|
+
if (I.scratchBuf.len !== 0)
|
|
2023
|
+
throw new Error("decryptPrimary() failed: Scratch buffer is not empty");
|
|
2024
|
+
const h = this.wasm, r = this.utils, D = r.arrayToSmartBuf(A), G = r.arrayToSmartBuf(C), N = r.arrayToSmartBuf(o), b = r.arrayToSmartBuf(Q);
|
|
2025
|
+
I.scratchBuf.ensureSize(a);
|
|
2026
|
+
const q = h._DecryptPrimary(
|
|
2027
|
+
I.context,
|
|
2028
|
+
I.skBuf.ptr,
|
|
2029
|
+
G.ptr,
|
|
2030
|
+
I.symKeyBuf.ptr,
|
|
2031
|
+
N.ptr,
|
|
2032
|
+
b.ptr,
|
|
2033
|
+
D.ptr,
|
|
2034
|
+
D.len,
|
|
2035
|
+
I.scratchBuf.ptr,
|
|
2036
|
+
a
|
|
2037
|
+
);
|
|
2038
|
+
if (q !== 0)
|
|
2039
|
+
throw new Error(`_DecryptPrimary failed with error code ${q}`);
|
|
2040
|
+
return new Uint8Array(h.HEAPU8.buffer, I.scratchBuf.ptr, a);
|
|
2041
|
+
}
|
|
2042
|
+
/*
|
|
2043
|
+
* Re-encrypt the block key and update the header. The encrypted data remains
|
|
2044
|
+
* the same.
|
|
2045
|
+
*
|
|
2046
|
+
* scratch - buffer for efficiency
|
|
2047
|
+
* reEncKey - the re-encryption key
|
|
2048
|
+
* data [Uint8Array]
|
|
2049
|
+
*
|
|
2050
|
+
* Returns [Uint8Array]
|
|
2051
|
+
*/
|
|
2052
|
+
reEncryptH(I, A, Q) {
|
|
2053
|
+
if (A.length !== this.RE_ENCRYPTION_KEY_SIZE)
|
|
2054
|
+
throw new Error(`reEncryptBlockKey() failed: Expected reEncKey
|
|
2055
|
+
length ${this.RE_ENCRYPTION_KEY_SIZE}, not ${A.length}`);
|
|
2056
|
+
const C = this.wasm, o = this.utils, a = o.arrayToSmartBuf(A), h = o.arrayToSmartBuf(Q);
|
|
2057
|
+
I.ensureSize(this.calcTargetByteCountH(h.len));
|
|
2058
|
+
const r = o.smartMalloc(4), D = C._ReEncryptH(
|
|
2059
|
+
a.ptr,
|
|
2060
|
+
h.ptr,
|
|
2061
|
+
h.len,
|
|
2062
|
+
I.ptr,
|
|
2063
|
+
r
|
|
2064
|
+
);
|
|
2065
|
+
if (D === this.ELV_E_INCOMPLETE_BLOCK)
|
|
2066
|
+
throw new Error("ELV_E_INCOMPLETE_BLOCK");
|
|
2067
|
+
if (D !== 0)
|
|
2068
|
+
throw new Error(`_ReEncryptH failed with error code ${D}`);
|
|
2069
|
+
const G = C.getValue(r, "i32");
|
|
2070
|
+
return new Uint8Array(C.HEAPU8.buffer, I.ptr, G);
|
|
2071
|
+
}
|
|
2072
|
+
/*
|
|
2073
|
+
* Same as decryptPrimary/Target except the blockKey, iv, tag, and
|
|
2074
|
+
* clearSize are already included in the encrypted data input.
|
|
2075
|
+
*
|
|
2076
|
+
* type - CRYPTO_TYPE_TARGET or CRYPTO_TYPE_PRIMARY
|
|
2077
|
+
* PrimaryContext
|
|
2078
|
+
* data [Uint8Array]
|
|
2079
|
+
*
|
|
2080
|
+
* Returns decrypted data [Uint8Array]
|
|
2081
|
+
*/
|
|
2082
|
+
decryptH(I, A, Q) {
|
|
2083
|
+
if (I !== this.CRYPTO_TYPE_TARGET && I !== this.CRYPTO_TYPE_PRIMARY)
|
|
2084
|
+
throw new Error(`decryptH() failed: Invalid type ${I}`);
|
|
2085
|
+
if (A.scratchBuf.len !== 0)
|
|
2086
|
+
throw new Error("decryptH() failed: Scratch buffer is not empty");
|
|
2087
|
+
const C = this.wasm, o = this.utils, a = o.arrayToSmartBuf(Q);
|
|
2088
|
+
A.scratchBuf.ensureSize(a.len);
|
|
2089
|
+
const h = o.smartMalloc(4), r = C._DecryptH(
|
|
2090
|
+
I,
|
|
2091
|
+
A.context,
|
|
2092
|
+
A.skBuf.ptr,
|
|
2093
|
+
A.symKeyBuf.ptr,
|
|
2094
|
+
a.ptr,
|
|
2095
|
+
a.len,
|
|
2096
|
+
A.scratchBuf.ptr,
|
|
2097
|
+
h
|
|
2098
|
+
);
|
|
2099
|
+
if (r === this.ELV_E_INCOMPLETE_BLOCK)
|
|
2100
|
+
throw new Error("ELV_E_INCOMPLETE_BLOCK");
|
|
2101
|
+
if (r !== 0)
|
|
2102
|
+
throw new Error(`_DecryptH failed with error code ${r}`);
|
|
2103
|
+
const D = C.getValue(h, "i32");
|
|
2104
|
+
return new Uint8Array(C.HEAPU8.buffer, A.scratchBuf.ptr, D);
|
|
2105
|
+
}
|
|
2106
|
+
/*
|
|
2107
|
+
* Used to re-encrypt a block key using the provided re-encryption key (see
|
|
2108
|
+
* "GenerateReEncryptionKey"). The block key is transformed in a way such
|
|
2109
|
+
* that it can be used by the holder of the target private key to decrypt
|
|
2110
|
+
* the encrypted data in a block. The encrypted data itself is not
|
|
2111
|
+
* transformed so the process of re-encryption is very efficient since the
|
|
2112
|
+
* bulk of the data is not manipulated.
|
|
2113
|
+
*
|
|
2114
|
+
* reEncKey [Uint8Array RE_ENCRYPTION_KEY_SIZE]
|
|
2115
|
+
* blockKey [Uint8Array PRIMARY_BLOCK_KEY_SIZE]
|
|
2116
|
+
*
|
|
2117
|
+
* Returns the target block key: [Uint8Array TARGET_BLOCK_KEY_SIZE]
|
|
2118
|
+
*/
|
|
2119
|
+
reEncryptBlockKey(I, A) {
|
|
2120
|
+
if (I.length !== this.RE_ENCRYPTION_KEY_SIZE)
|
|
2121
|
+
throw new Error(`reEncryptBlockKey() failed: Expected reEncKey
|
|
2122
|
+
length ${this.RE_ENCRYPTION_KEY_SIZE}, not ${I.length}`);
|
|
2123
|
+
if (A.length !== this.PRIMARY_BLOCK_KEY_SIZE)
|
|
2124
|
+
throw new Error(`reEncryptBlockKey() failed: Expected blockKey
|
|
2125
|
+
length ${this.PRIMARY_BLOCK_KEY_SIZE}, not ${A.length}`);
|
|
2126
|
+
const Q = this.wasm, C = this.utils, o = C.arrayToSmartBuf(I), a = C.arrayToSmartBuf(A), h = C.smartMalloc(this.TARGET_BLOCK_KEY_SIZE), r = Q._ReEncryptBlockKey(o.ptr, a.ptr, h);
|
|
2127
|
+
if (r !== 0)
|
|
2128
|
+
throw new Error(`_ReEncryptBlockKey failed with error code ${r}`);
|
|
2129
|
+
return new Uint8Array(
|
|
2130
|
+
Q.HEAPU8.buffer,
|
|
2131
|
+
h,
|
|
2132
|
+
this.TARGET_BLOCK_KEY_SIZE
|
|
2133
|
+
).slice(0);
|
|
2134
|
+
}
|
|
2135
|
+
/*
|
|
2136
|
+
* Creates a context used for block-based target decryption through
|
|
2137
|
+
* DecryptTarget. Free the context when done.
|
|
2138
|
+
*
|
|
2139
|
+
* secretKey [Uint8Array SECRET_KEY_SIZE]
|
|
2140
|
+
* symmetricKey [Uint8Array AES_KEY_SIZE]
|
|
2141
|
+
*
|
|
2142
|
+
* returns TargetDecryptionContext
|
|
2143
|
+
*/
|
|
2144
|
+
newTargetDecryptionContext(I, A) {
|
|
2145
|
+
if (I.length !== this.SECRET_KEY_SIZE)
|
|
2146
|
+
throw new Error(`newTargetDecryptionContext() failed: Expected
|
|
2147
|
+
secretKey length ${this.SECRET_KEY_SIZE}, not ${I.length}`);
|
|
2148
|
+
if (A.length !== this.AES_KEY_SIZE)
|
|
2149
|
+
throw new Error(`newTargetDecryptionContext() failed: Expected
|
|
2150
|
+
symmetricKey length ${this.AES_KEY_SIZE}, not ${A.length}`);
|
|
2151
|
+
return new yI(this.wasm, I, A);
|
|
2152
|
+
}
|
|
2153
|
+
/*
|
|
2154
|
+
* Decrypt data that has been re-encrypted for a target target public key.
|
|
2155
|
+
* The initialization vector, tag and encrypted bytes from the original
|
|
2156
|
+
* encryption must be provided. The re-encrypted block key that corresponds
|
|
2157
|
+
* to the target target key must also be provided. It is assumed that all
|
|
2158
|
+
* of this data is stored together as a block since all of the data is
|
|
2159
|
+
* necessary and secure.
|
|
2160
|
+
*
|
|
2161
|
+
* TargetDecryptionContext
|
|
2162
|
+
* data [Uint8Array]
|
|
2163
|
+
* blockKey [Uint8Array TARGET_BLOCK_KEY_SIZE (576 bytes)]
|
|
2164
|
+
* iv [Uint8Array IV_SIZE (12 bytes)]
|
|
2165
|
+
* tag [Uint8Array TAG_SIZE (16 bytes)]
|
|
2166
|
+
* clearSize - length of decrypted data
|
|
2167
|
+
*
|
|
2168
|
+
* Returns decrypted data [Uint8Array]
|
|
2169
|
+
*/
|
|
2170
|
+
decryptTarget(I, A, Q, C, o, a) {
|
|
2171
|
+
if (Q.length !== this.TAG_SIZE)
|
|
2172
|
+
throw new Error(`decryptTarget() failed: Expected tag
|
|
2173
|
+
length ${this.TAG_SIZE}, not ${Q.length}`);
|
|
2174
|
+
if (C.length !== this.TARGET_BLOCK_KEY_SIZE)
|
|
2175
|
+
throw new Error(`decryptTarget() failed: Expected blockKey
|
|
2176
|
+
length ${this.TARGET_BLOCK_KEY_SIZE}, not ${C.length}`);
|
|
2177
|
+
if (o.length !== this.IV_SIZE)
|
|
2178
|
+
throw new Error(`decryptTarget() failed: Expected iv
|
|
2179
|
+
length ${this.IV_SIZE}, not ${o.length}`);
|
|
2180
|
+
if (I.scratchBuf.len !== 0)
|
|
2181
|
+
throw new Error("decryptTarget() failed: Scratch buffer is not empty");
|
|
2182
|
+
const h = this.wasm, r = this.utils, D = r.arrayToSmartBuf(A), G = r.arrayToSmartBuf(C), N = r.arrayToSmartBuf(o), b = r.arrayToSmartBuf(Q);
|
|
2183
|
+
I.scratchBuf.ensureSize(a);
|
|
2184
|
+
const q = h._DecryptTarget(
|
|
2185
|
+
I.context,
|
|
2186
|
+
I.skBuf.ptr,
|
|
2187
|
+
G.ptr,
|
|
2188
|
+
I.symKeyBuf.ptr,
|
|
2189
|
+
N.ptr,
|
|
2190
|
+
b.ptr,
|
|
2191
|
+
D.ptr,
|
|
2192
|
+
D.len,
|
|
2193
|
+
I.scratchBuf.ptr,
|
|
2194
|
+
a
|
|
2195
|
+
);
|
|
2196
|
+
if (q !== 0)
|
|
2197
|
+
throw new Error(`_DecryptTarget failed with error code ${q}`);
|
|
2198
|
+
return new Uint8Array(h.HEAPU8.buffer, I.scratchBuf.ptr, a);
|
|
2199
|
+
}
|
|
2200
|
+
createCipher(I) {
|
|
2201
|
+
const A = this;
|
|
2202
|
+
return bA(function(Q, C, o) {
|
|
2203
|
+
this.push(A.encryptPrimaryH(I, Q)), I.clearBuf(), o();
|
|
2204
|
+
});
|
|
2205
|
+
}
|
|
2206
|
+
createDecipher(I, A) {
|
|
2207
|
+
const Q = this;
|
|
2208
|
+
let C = Buffer.alloc(0);
|
|
2209
|
+
return bA(
|
|
2210
|
+
function(o, a, h) {
|
|
2211
|
+
let r = 0;
|
|
2212
|
+
for (C = Buffer.concat([C, o]); r < C.length; )
|
|
2213
|
+
try {
|
|
2214
|
+
A.clearBuf();
|
|
2215
|
+
let D = Q.decryptH(I, A, C.slice(r));
|
|
2216
|
+
this.push(D), r += Q.calcEncByteCountH(I, D.length);
|
|
2217
|
+
} catch (D) {
|
|
2218
|
+
if (D.message === "ELV_E_INCOMPLETE_BLOCK") {
|
|
2219
|
+
C = C.slice(r), h();
|
|
2220
|
+
return;
|
|
2221
|
+
} else {
|
|
2222
|
+
C = Buffer.alloc(0), h(D);
|
|
2223
|
+
return;
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
C = Buffer.alloc(0), h();
|
|
2227
|
+
},
|
|
2228
|
+
function(o) {
|
|
2229
|
+
C.length > 0 && this.destroy(
|
|
2230
|
+
new Error(
|
|
2231
|
+
"Decipher stream ended before all data was decrypted. The source may be invalid."
|
|
2232
|
+
)
|
|
2233
|
+
), o();
|
|
2234
|
+
}
|
|
2235
|
+
);
|
|
2236
|
+
}
|
|
2237
|
+
createRecipher(I) {
|
|
2238
|
+
const A = this, Q = new OA(A.wasm);
|
|
2239
|
+
let C = Buffer.alloc(0), o = bA(
|
|
2240
|
+
function(a, h, r) {
|
|
2241
|
+
let D = 0;
|
|
2242
|
+
for (C = Buffer.concat([C, a]); D < C.length; )
|
|
2243
|
+
try {
|
|
2244
|
+
Q.clear();
|
|
2245
|
+
let G = A.reEncryptH(Q, I, C.slice(D));
|
|
2246
|
+
this.push(G), D += A.calcEncByteCountFromTargetH(G.length);
|
|
2247
|
+
} catch (G) {
|
|
2248
|
+
if (G.message === "ELV_E_INCOMPLETE_BLOCK") {
|
|
2249
|
+
C = C.slice(D), r();
|
|
2250
|
+
return;
|
|
2251
|
+
} else {
|
|
2252
|
+
C = Buffer.alloc(0), r(G);
|
|
2253
|
+
return;
|
|
2254
|
+
}
|
|
2255
|
+
}
|
|
2256
|
+
C = Buffer.alloc(0), r();
|
|
2257
|
+
},
|
|
2258
|
+
function(a) {
|
|
2259
|
+
C.length > 0 && this.destroy(
|
|
2260
|
+
new Error(
|
|
2261
|
+
"Recipher stream ended before all data was decrypted. The source may be invalid."
|
|
2262
|
+
)
|
|
2263
|
+
), a();
|
|
2264
|
+
}
|
|
2265
|
+
);
|
|
2266
|
+
return o.on("finish", () => {
|
|
2267
|
+
Q.free();
|
|
2268
|
+
}), o;
|
|
2269
|
+
}
|
|
2270
|
+
}
|
|
2271
|
+
export {
|
|
2272
|
+
ag as default
|
|
2273
|
+
};
|