spectrogram-js 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -4
- package/dist/fonts.d.ts +1 -0
- package/dist/spectrogram-js.cjs.js +1 -1
- package/dist/spectrogram-js.cjs.js.map +1 -1
- package/dist/spectrogram-js.es.js +599 -595
- package/dist/spectrogram-js.es.js.map +1 -1
- package/dist/spectrogram-js.umd.js +1 -1
- package/dist/spectrogram-js.umd.js.map +1 -1
- package/dist/spectrogram.d.ts +1 -0
- package/package.json +1 -1
|
@@ -5,13 +5,13 @@ var pA = (() => {
|
|
|
5
5
|
A.ready = new Promise((g, i) => {
|
|
6
6
|
r = g, E = i;
|
|
7
7
|
});
|
|
8
|
-
var
|
|
8
|
+
var C = Object.assign({}, A), Q = "";
|
|
9
9
|
function e(g) {
|
|
10
10
|
return A.locateFile ? A.locateFile(g, Q) : Q + g;
|
|
11
11
|
}
|
|
12
12
|
typeof document < "u" && document.currentScript && (Q = document.currentScript.src), o && (Q = o), Q.indexOf("blob:") !== 0 ? Q = Q.substr(0, Q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : Q = "", A.print || console.log.bind(console);
|
|
13
|
-
var
|
|
14
|
-
Object.assign(A,
|
|
13
|
+
var n = A.printErr || console.error.bind(console);
|
|
14
|
+
Object.assign(A, C), C = null, A.arguments && A.arguments, A.thisProgram && A.thisProgram, A.quit && A.quit;
|
|
15
15
|
var t;
|
|
16
16
|
A.wasmBinary && (t = A.wasmBinary), A.noExitRuntime, typeof WebAssembly != "object" && J("no native wasm support detected");
|
|
17
17
|
var w, F, h = !1, D, s;
|
|
@@ -24,16 +24,16 @@ var pA = (() => {
|
|
|
24
24
|
if (A.preRun)
|
|
25
25
|
for (typeof A.preRun == "function" && (A.preRun = [A.preRun]); A.preRun.length; )
|
|
26
26
|
v(A.preRun.shift());
|
|
27
|
-
|
|
27
|
+
x(N);
|
|
28
28
|
}
|
|
29
29
|
function G() {
|
|
30
|
-
|
|
30
|
+
x(R);
|
|
31
31
|
}
|
|
32
32
|
function H() {
|
|
33
33
|
if (A.postRun)
|
|
34
34
|
for (typeof A.postRun == "function" && (A.postRun = [A.postRun]); A.postRun.length; )
|
|
35
35
|
P(A.postRun.shift());
|
|
36
|
-
|
|
36
|
+
x(f);
|
|
37
37
|
}
|
|
38
38
|
function v(g) {
|
|
39
39
|
N.unshift(g);
|
|
@@ -55,7 +55,7 @@ var pA = (() => {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
function J(g) {
|
|
58
|
-
A.onAbort && A.onAbort(g), g = "Aborted(" + g + ")",
|
|
58
|
+
A.onAbort && A.onAbort(g), g = "Aborted(" + g + ")", n(g), h = !0, g += ". Build with -sASSERTIONS for more info.";
|
|
59
59
|
var i = new WebAssembly.RuntimeError(g);
|
|
60
60
|
throw E(i), i;
|
|
61
61
|
}
|
|
@@ -65,21 +65,21 @@ var pA = (() => {
|
|
|
65
65
|
}
|
|
66
66
|
var S;
|
|
67
67
|
S = "data:application/octet-stream;base64,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GCAZkzgCBCAHIBcgHpM4AgAgBUEIaiEFIAdBCGohByAEQQhqIQQgAUEIaiEBIABBCGohACAJQQFqIgkgBkcNAAsMAQsgBSgCACELIAlBA3QQByEIAkAgCUECSA0AIAZBAEwNACAFQYgCaiENIAlBfHEhDiAJQQNxIQogCUEBa0EDSSEPQQAhBwNAIAchAUEAIQRBACEDIA9FBEADQCAIIARBA3QiBWogACABQQN0aikCADcCACAIIAVBCHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBEHJqIAAgASAGaiIBQQN0aikCADcCACAIIAVBGHJqIAAgASAGaiIBQQN0aikCADcCACAEQQRqIQQgASAGaiEBIANBBGoiAyAORw0ACwtBACEFIAoEQANAIAggBEEDdGogACABQQN0aikCADcCACAEQQFqIQQgASAGaiEBIAVBAWoiBSAKRw0ACwsgCCkCACIvp74hFUEAIQwgByEDA0AgACADQQN0aiIFIC83AgAgAiADbCEQIAUqAgQhFEEBIQEgFSETQQAhBANAIAUgEyAIIAFBA3RqIhEqAgAiFiANIAQgEGoiBCALQQAgBCALThtrIgRBA3RqIhIqAgAiF5QgEioCBCIYIBEqAgQiGZSTkiITOAIAIAUgFCAWIBiUIBcgGZSSkiIUOAIEIAFBAWoiASAJRw0ACyADIAZqIQMgDEEBaiIMIAlHDQALIAdBAWoiByAGRw0ACwsgCBAGCwsDAAELwQEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABAEDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQC0EDcQ4DAAECAwsgASsDACABKwMIEAQMAwsgASsDACABKwMIQQEQA5oMAgsgASsDACABKwMIEASaDAELIAErAwAgASsDCEEBEAMLIQAgAUEQaiQAIAALuBgDFH8EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgZB+tS9gARNBEAgA0H//z9xQfvDJEYNASAGQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEB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IAIgC0chCiACQQFqIQIgCg0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIQIgBEEBayEEIAINAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAwbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEEIAJBAWohAiAEDQALCyAIIACaIAAgDBs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIBpCAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC8UBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEAMhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCwJAAkACQAJAIAAgARALQQNxDgMAAQIDCyABKwMAIAErAwhBARADIQAMAwsgASsDACABKwMIEAQhAAwCCyABKwMAIAErAwhBARADmiEADAELIAErAwAgASsDCBAEmiEACyABQRBqJAAgAAuhBAEDfyABIAJGBEAgACgCAEEDdBAHIgQgAUEBQQEgAEEIaiAAEAggBCECAkAgACgCAEEDdCIDQYAETwRAIAEgAiADEAEMAQsgASADaiEAAkAgASACc0EDcUUEQAJAIAFBA3FFDQAgA0UNAANAIAEgAi0AADoAACACQQFqIQIgAUEBaiIBQQNxRQ0BIAAgAUsNAAsLAkAgAEF8cSIDQcAASQ0AIAEgA0FAaiIFSw0AA0AgASACKAIANgIAIAEgAigCBDYCBCABIAIoAgg2AgggASACKAIMNgIMIAEgAigCEDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAEgAigCHDYCHCABIAIoAiA2AiAgASACKAIkNgIkIAEgAigCKDYCKCABIAIoAiw2AiwgASACKAIwNgIwIAEgAigCNDYCNCABIAIoAjg2AjggASACKAI8NgI8IAJBQGshAiABQUBrIgEgBU0NAAsLIAEgA08NAQNAIAEgAigCADYCACACQQRqIQIgAUEEaiIBIANJDQALDAELIABBBEkNACAB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", L(S) || (S = e(S));
|
|
68
|
-
function
|
|
68
|
+
function W(g) {
|
|
69
69
|
if (g == S && t)
|
|
70
70
|
return new Uint8Array(t);
|
|
71
|
-
var i =
|
|
71
|
+
var i = nA(g);
|
|
72
72
|
if (i)
|
|
73
73
|
return i;
|
|
74
74
|
throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
|
|
75
75
|
}
|
|
76
|
-
function
|
|
77
|
-
var
|
|
78
|
-
|
|
79
|
-
var Y = new WebAssembly.Instance(
|
|
80
|
-
return [Y,
|
|
76
|
+
function O(g, i) {
|
|
77
|
+
var a, d = W(g);
|
|
78
|
+
a = new WebAssembly.Module(d);
|
|
79
|
+
var Y = new WebAssembly.Instance(a, i);
|
|
80
|
+
return [Y, a];
|
|
81
81
|
}
|
|
82
|
-
function
|
|
82
|
+
function Z() {
|
|
83
83
|
var g = { a: T };
|
|
84
84
|
function i(d, Y) {
|
|
85
85
|
var M = d.exports;
|
|
@@ -89,15 +89,15 @@ var pA = (() => {
|
|
|
89
89
|
try {
|
|
90
90
|
return A.instantiateWasm(g, i);
|
|
91
91
|
} catch (d) {
|
|
92
|
-
|
|
92
|
+
n("Module.instantiateWasm callback failed with error: " + d), E(d);
|
|
93
93
|
}
|
|
94
|
-
var
|
|
95
|
-
return i(
|
|
94
|
+
var a = O(S, g);
|
|
95
|
+
return i(a[0]);
|
|
96
96
|
}
|
|
97
|
-
var
|
|
97
|
+
var x = (g) => {
|
|
98
98
|
for (; g.length > 0; )
|
|
99
99
|
g.shift()(A);
|
|
100
|
-
}, AA = (g, i,
|
|
100
|
+
}, AA = (g, i, a) => s.copyWithin(g, i, i + a), IA = (g) => {
|
|
101
101
|
J("OOM");
|
|
102
102
|
}, _ = (g) => {
|
|
103
103
|
s.length, IA();
|
|
@@ -109,39 +109,39 @@ var pA = (() => {
|
|
|
109
109
|
var gA = (g, i) => {
|
|
110
110
|
D.set(g, i);
|
|
111
111
|
}, iA = (g) => {
|
|
112
|
-
for (var i = 0,
|
|
113
|
-
var d = g.charCodeAt(
|
|
114
|
-
d <= 127 ? i++ : d <= 2047 ? i += 2 : d >= 55296 && d <= 57343 ? (i += 4, ++
|
|
112
|
+
for (var i = 0, a = 0; a < g.length; ++a) {
|
|
113
|
+
var d = g.charCodeAt(a);
|
|
114
|
+
d <= 127 ? i++ : d <= 2047 ? i += 2 : d >= 55296 && d <= 57343 ? (i += 4, ++a) : i += 3;
|
|
115
115
|
}
|
|
116
116
|
return i;
|
|
117
|
-
},
|
|
117
|
+
}, BA = (g, i, a, d) => {
|
|
118
118
|
if (!(d > 0)) return 0;
|
|
119
|
-
for (var Y =
|
|
119
|
+
for (var Y = a, M = a + d - 1, l = 0; l < g.length; ++l) {
|
|
120
120
|
var m = g.charCodeAt(l);
|
|
121
121
|
if (m >= 55296 && m <= 57343) {
|
|
122
122
|
var V = g.charCodeAt(++l);
|
|
123
123
|
m = 65536 + ((m & 1023) << 10) | V & 1023;
|
|
124
124
|
}
|
|
125
125
|
if (m <= 127) {
|
|
126
|
-
if (
|
|
127
|
-
i[
|
|
126
|
+
if (a >= M) break;
|
|
127
|
+
i[a++] = m;
|
|
128
128
|
} else if (m <= 2047) {
|
|
129
|
-
if (
|
|
130
|
-
i[
|
|
129
|
+
if (a + 1 >= M) break;
|
|
130
|
+
i[a++] = 192 | m >> 6, i[a++] = 128 | m & 63;
|
|
131
131
|
} else if (m <= 65535) {
|
|
132
|
-
if (
|
|
133
|
-
i[
|
|
132
|
+
if (a + 2 >= M) break;
|
|
133
|
+
i[a++] = 224 | m >> 12, i[a++] = 128 | m >> 6 & 63, i[a++] = 128 | m & 63;
|
|
134
134
|
} else {
|
|
135
|
-
if (
|
|
136
|
-
i[
|
|
135
|
+
if (a + 3 >= M) break;
|
|
136
|
+
i[a++] = 240 | m >> 18, i[a++] = 128 | m >> 12 & 63, i[a++] = 128 | m >> 6 & 63, i[a++] = 128 | m & 63;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
return i[
|
|
140
|
-
}, QA = (g, i,
|
|
141
|
-
var i = iA(g) + 1,
|
|
142
|
-
return QA(g,
|
|
143
|
-
}, oA = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, eA = (g, i,
|
|
144
|
-
for (var d = i +
|
|
139
|
+
return i[a] = 0, a - Y;
|
|
140
|
+
}, QA = (g, i, a) => BA(g, s, i, a), CA = (g) => {
|
|
141
|
+
var i = iA(g) + 1, a = DA(i);
|
|
142
|
+
return QA(g, a, i), a;
|
|
143
|
+
}, oA = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, eA = (g, i, a) => {
|
|
144
|
+
for (var d = i + a, Y = i; g[Y] && !(Y >= d); ) ++Y;
|
|
145
145
|
if (Y - i > 16 && g.buffer && oA)
|
|
146
146
|
return oA.decode(g.subarray(i, Y));
|
|
147
147
|
for (var M = ""; i < Y; ) {
|
|
@@ -164,10 +164,10 @@ var pA = (() => {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
return M;
|
|
167
|
-
}, rA = (g, i) => g ? eA(s, g, i) : "", sA = function(g, i,
|
|
167
|
+
}, rA = (g, i) => g ? eA(s, g, i) : "", sA = function(g, i, a, d, Y) {
|
|
168
168
|
var M = { string: (z) => {
|
|
169
169
|
var YA = 0;
|
|
170
|
-
return z != null && z !== 0 && (YA =
|
|
170
|
+
return z != null && z !== 0 && (YA = CA(z)), YA;
|
|
171
171
|
}, array: (z) => {
|
|
172
172
|
var YA = DA(z.length);
|
|
173
173
|
return gA(z, YA), YA;
|
|
@@ -178,41 +178,41 @@ var pA = (() => {
|
|
|
178
178
|
var m = $(g), V = [], j = 0;
|
|
179
179
|
if (d)
|
|
180
180
|
for (var tA = 0; tA < d.length; tA++) {
|
|
181
|
-
var wA = M[
|
|
181
|
+
var wA = M[a[tA]];
|
|
182
182
|
wA ? (j === 0 && (j = RA()), V[tA] = wA(d[tA])) : V[tA] = d[tA];
|
|
183
183
|
}
|
|
184
184
|
var yA = m.apply(null, V);
|
|
185
185
|
function b(z) {
|
|
186
|
-
return j !== 0 &&
|
|
186
|
+
return j !== 0 && aA(j), l(z);
|
|
187
187
|
}
|
|
188
188
|
return yA = b(yA), yA;
|
|
189
|
-
}, FA = function(g, i,
|
|
190
|
-
var Y = !
|
|
189
|
+
}, FA = function(g, i, a, d) {
|
|
190
|
+
var Y = !a || a.every((l) => l === "number" || l === "boolean"), M = i !== "string";
|
|
191
191
|
return M && Y && !d ? $(g) : function() {
|
|
192
|
-
return sA(g, i,
|
|
192
|
+
return sA(g, i, a, arguments);
|
|
193
193
|
};
|
|
194
|
-
}, T = { b: AA, a: _ }, EA =
|
|
194
|
+
}, T = { b: AA, a: _ }, EA = Z();
|
|
195
195
|
EA.d, A._kiss_fft_free = EA.e, A._free = EA.f, A._kiss_fft_alloc = EA.g, A._malloc = EA.h, A._kiss_fft = EA.i, EA.__errno_location;
|
|
196
|
-
var RA = EA.k,
|
|
196
|
+
var RA = EA.k, aA = EA.l, DA = EA.m;
|
|
197
197
|
function cA(g) {
|
|
198
198
|
try {
|
|
199
|
-
for (var i = atob(g),
|
|
200
|
-
|
|
201
|
-
return
|
|
199
|
+
for (var i = atob(g), a = new Uint8Array(i.length), d = 0; d < i.length; ++d)
|
|
200
|
+
a[d] = i.charCodeAt(d);
|
|
201
|
+
return a;
|
|
202
202
|
} catch {
|
|
203
203
|
throw new Error("Converting base64 string to bytes failed.");
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
|
-
function
|
|
206
|
+
function nA(g) {
|
|
207
207
|
if (L(g))
|
|
208
208
|
return cA(g.slice(u.length));
|
|
209
209
|
}
|
|
210
210
|
A.ccall = sA, A.cwrap = FA;
|
|
211
211
|
var hA;
|
|
212
212
|
U = function g() {
|
|
213
|
-
hA ||
|
|
213
|
+
hA || B(), hA || (U = g);
|
|
214
214
|
};
|
|
215
|
-
function
|
|
215
|
+
function B() {
|
|
216
216
|
if (k > 0 || (y(), k > 0))
|
|
217
217
|
return;
|
|
218
218
|
function g() {
|
|
@@ -227,7 +227,7 @@ var pA = (() => {
|
|
|
227
227
|
if (A.preInit)
|
|
228
228
|
for (typeof A.preInit == "function" && (A.preInit = [A.preInit]); A.preInit.length > 0; )
|
|
229
229
|
A.preInit.pop()();
|
|
230
|
-
return
|
|
230
|
+
return B(), I;
|
|
231
231
|
});
|
|
232
232
|
})(), MA = pA({}), uA = MA.cwrap("kiss_fft_alloc", "number", [
|
|
233
233
|
"number",
|
|
@@ -239,7 +239,7 @@ var pA = (() => {
|
|
|
239
239
|
"number",
|
|
240
240
|
"number"
|
|
241
241
|
]), JA = MA.cwrap("kiss_fft_free", "void", ["number"]);
|
|
242
|
-
class
|
|
242
|
+
class WA {
|
|
243
243
|
constructor(I) {
|
|
244
244
|
this.size = I, this.fcfg = uA(this.size, !1), this.icfg = uA(this.size, !0), this.inptr = MA._malloc(this.size * 8), this.cin = new Float32Array(
|
|
245
245
|
MA.HEAPU8.buffer,
|
|
@@ -266,17 +266,17 @@ function fA(o) {
|
|
|
266
266
|
throw new Error("FFT size must be a power of two and bigger than 1");
|
|
267
267
|
this._csize = o << 1;
|
|
268
268
|
for (var I = new Array(this.size * 2), A = 0; A < I.length; A += 2) {
|
|
269
|
-
const
|
|
270
|
-
I[A] = Math.cos(
|
|
269
|
+
const n = Math.PI * A / this.size;
|
|
270
|
+
I[A] = Math.cos(n), I[A + 1] = -Math.sin(n);
|
|
271
271
|
}
|
|
272
272
|
this.table = I;
|
|
273
273
|
for (var r = 0, E = 1; this.size > E; E <<= 1) r++;
|
|
274
274
|
this._width = r % 2 === 0 ? r - 1 : r, this._bitrev = new Array(1 << this._width);
|
|
275
|
-
for (var
|
|
276
|
-
this._bitrev[
|
|
275
|
+
for (var C = 0; C < this._bitrev.length; C++) {
|
|
276
|
+
this._bitrev[C] = 0;
|
|
277
277
|
for (var Q = 0; Q < this._width; Q += 2) {
|
|
278
278
|
var e = this._width - Q - 2;
|
|
279
|
-
this._bitrev[
|
|
279
|
+
this._bitrev[C] |= (C >>> Q & 3) << e;
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
282
|
this._out = null, this._data = null, this._inv = 0;
|
|
@@ -314,73 +314,73 @@ fA.prototype.inverseTransform = function(I, A) {
|
|
|
314
314
|
this._out = null, this._data = null;
|
|
315
315
|
};
|
|
316
316
|
fA.prototype._transform4 = function() {
|
|
317
|
-
var I = this._out, A = this._csize, r = this._width, E = 1 << r,
|
|
318
|
-
if (
|
|
319
|
-
for (Q = 0, e = 0; Q < A; Q +=
|
|
320
|
-
const c =
|
|
317
|
+
var I = this._out, A = this._csize, r = this._width, E = 1 << r, C = A / E << 1, Q, e, n = this._bitrev;
|
|
318
|
+
if (C === 4)
|
|
319
|
+
for (Q = 0, e = 0; Q < A; Q += C, e++) {
|
|
320
|
+
const c = n[e];
|
|
321
321
|
this._singleTransform2(Q, c, E);
|
|
322
322
|
}
|
|
323
323
|
else
|
|
324
|
-
for (Q = 0, e = 0; Q < A; Q +=
|
|
325
|
-
const c =
|
|
324
|
+
for (Q = 0, e = 0; Q < A; Q += C, e++) {
|
|
325
|
+
const c = n[e];
|
|
326
326
|
this._singleTransform4(Q, c, E);
|
|
327
327
|
}
|
|
328
328
|
var t = this._inv ? -1 : 1, w = this.table;
|
|
329
329
|
for (E >>= 2; E >= 2; E >>= 2) {
|
|
330
|
-
|
|
331
|
-
var F =
|
|
332
|
-
for (Q = 0; Q < A; Q +=
|
|
330
|
+
C = A / E << 1;
|
|
331
|
+
var F = C >>> 2;
|
|
332
|
+
for (Q = 0; Q < A; Q += C)
|
|
333
333
|
for (var h = Q + F, D = Q, s = 0; D < h; D += 2, s += E) {
|
|
334
|
-
const c = D, N = c + F, R = N + F, f = R + F, y = I[c], G = I[c + 1], H = I[N], v = I[N + 1], p = I[R], P = I[R + 1], k = I[f], U = I[f + 1], q = y, K = G, J = w[s], u = t * w[s + 1], L = H * J - v * u, S = H * u + v * J,
|
|
335
|
-
I[c] = sA, I[c + 1] = FA, I[N] = RA, I[N + 1] =
|
|
334
|
+
const c = D, N = c + F, R = N + F, f = R + F, y = I[c], G = I[c + 1], H = I[N], v = I[N + 1], p = I[R], P = I[R + 1], k = I[f], U = I[f + 1], q = y, K = G, J = w[s], u = t * w[s + 1], L = H * J - v * u, S = H * u + v * J, W = w[2 * s], O = t * w[2 * s + 1], Z = p * W - P * O, x = p * O + P * W, AA = w[3 * s], IA = t * w[3 * s + 1], _ = k * AA - U * IA, $ = k * IA + U * AA, gA = q + Z, iA = K + x, BA = q - Z, QA = K - x, CA = L + _, oA = S + $, eA = t * (L - _), rA = t * (S - $), sA = gA + CA, FA = iA + oA, T = gA - CA, EA = iA - oA, RA = BA + rA, aA = QA - eA, DA = BA - rA, cA = QA + eA;
|
|
335
|
+
I[c] = sA, I[c + 1] = FA, I[N] = RA, I[N + 1] = aA, I[R] = T, I[R + 1] = EA, I[f] = DA, I[f + 1] = cA;
|
|
336
336
|
}
|
|
337
337
|
}
|
|
338
338
|
};
|
|
339
339
|
fA.prototype._singleTransform2 = function(I, A, r) {
|
|
340
|
-
const E = this._out,
|
|
340
|
+
const E = this._out, C = this._data, Q = C[A], e = C[A + 1], n = C[A + r], t = C[A + r + 1], w = Q + n, F = e + t, h = Q - n, D = e - t;
|
|
341
341
|
E[I] = w, E[I + 1] = F, E[I + 2] = h, E[I + 3] = D;
|
|
342
342
|
};
|
|
343
343
|
fA.prototype._singleTransform4 = function(I, A, r) {
|
|
344
|
-
const E = this._out,
|
|
344
|
+
const E = this._out, C = this._data, Q = this._inv ? -1 : 1, e = r * 2, n = r * 3, t = C[A], w = C[A + 1], F = C[A + r], h = C[A + r + 1], D = C[A + e], s = C[A + e + 1], c = C[A + n], N = C[A + n + 1], R = t + D, f = w + s, y = t - D, G = w - s, H = F + c, v = h + N, p = Q * (F - c), P = Q * (h - N), k = R + H, U = f + v, q = y + P, K = G - p, J = R - H, u = f - v, L = y - P, S = G + p;
|
|
345
345
|
E[I] = k, E[I + 1] = U, E[I + 2] = q, E[I + 3] = K, E[I + 4] = J, E[I + 5] = u, E[I + 6] = L, E[I + 7] = S;
|
|
346
346
|
};
|
|
347
347
|
fA.prototype._realTransform4 = function() {
|
|
348
|
-
var I = this._out, A = this._csize, r = this._width, E = 1 << r,
|
|
349
|
-
if (
|
|
350
|
-
for (Q = 0, e = 0; Q < A; Q +=
|
|
351
|
-
const tA =
|
|
348
|
+
var I = this._out, A = this._csize, r = this._width, E = 1 << r, C = A / E << 1, Q, e, n = this._bitrev;
|
|
349
|
+
if (C === 4)
|
|
350
|
+
for (Q = 0, e = 0; Q < A; Q += C, e++) {
|
|
351
|
+
const tA = n[e];
|
|
352
352
|
this._singleRealTransform2(Q, tA >>> 1, E >>> 1);
|
|
353
353
|
}
|
|
354
354
|
else
|
|
355
|
-
for (Q = 0, e = 0; Q < A; Q +=
|
|
356
|
-
const tA =
|
|
355
|
+
for (Q = 0, e = 0; Q < A; Q += C, e++) {
|
|
356
|
+
const tA = n[e];
|
|
357
357
|
this._singleRealTransform4(Q, tA >>> 1, E >>> 1);
|
|
358
358
|
}
|
|
359
359
|
var t = this._inv ? -1 : 1, w = this.table;
|
|
360
360
|
for (E >>= 2; E >= 2; E >>= 2) {
|
|
361
|
-
|
|
362
|
-
var F =
|
|
363
|
-
for (Q = 0; Q < A; Q +=
|
|
361
|
+
C = A / E << 1;
|
|
362
|
+
var F = C >>> 1, h = F >>> 1, D = h >>> 1;
|
|
363
|
+
for (Q = 0; Q < A; Q += C)
|
|
364
364
|
for (var s = 0, c = 0; s <= D; s += 2, c += E) {
|
|
365
|
-
var N = Q + s, R = N + h, f = R + h, y = f + h, G = I[N], H = I[N + 1], v = I[R], p = I[R + 1], P = I[f], k = I[f + 1], U = I[y], q = I[y + 1], K = G, J = H, u = w[c], L = t * w[c + 1], S = v * u - p * L,
|
|
365
|
+
var N = Q + s, R = N + h, f = R + h, y = f + h, G = I[N], H = I[N + 1], v = I[R], p = I[R + 1], P = I[f], k = I[f + 1], U = I[y], q = I[y + 1], K = G, J = H, u = w[c], L = t * w[c + 1], S = v * u - p * L, W = v * L + p * u, O = w[2 * c], Z = t * w[2 * c + 1], x = P * O - k * Z, AA = P * Z + k * O, IA = w[3 * c], _ = t * w[3 * c + 1], $ = U * IA - q * _, gA = U * _ + q * IA, iA = K + x, BA = J + AA, QA = K - x, CA = J - AA, oA = S + $, eA = W + gA, rA = t * (S - $), sA = t * (W - gA), FA = iA + oA, T = BA + eA, EA = QA + sA, RA = CA - rA;
|
|
366
366
|
if (I[N] = FA, I[N + 1] = T, I[R] = EA, I[R + 1] = RA, s === 0) {
|
|
367
|
-
var
|
|
368
|
-
I[f] =
|
|
367
|
+
var aA = iA - oA, DA = BA - eA;
|
|
368
|
+
I[f] = aA, I[f + 1] = DA;
|
|
369
369
|
continue;
|
|
370
370
|
}
|
|
371
371
|
if (s !== D) {
|
|
372
|
-
var cA = QA,
|
|
372
|
+
var cA = QA, nA = -CA, hA = iA, B = -BA, g = -t * sA, i = -t * rA, a = -t * eA, d = -t * oA, Y = cA + g, M = nA + i, l = hA + d, m = B - a, V = Q + h - s, j = Q + F - s;
|
|
373
373
|
I[V] = Y, I[V + 1] = M, I[j] = l, I[j + 1] = m;
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
376
|
}
|
|
377
377
|
};
|
|
378
378
|
fA.prototype._singleRealTransform2 = function(I, A, r) {
|
|
379
|
-
const E = this._out,
|
|
380
|
-
E[I] =
|
|
379
|
+
const E = this._out, C = this._data, Q = C[A], e = C[A + r], n = Q + e, t = Q - e;
|
|
380
|
+
E[I] = n, E[I + 1] = 0, E[I + 2] = t, E[I + 3] = 0;
|
|
381
381
|
};
|
|
382
382
|
fA.prototype._singleRealTransform4 = function(I, A, r) {
|
|
383
|
-
const E = this._out,
|
|
383
|
+
const E = this._out, C = this._data, Q = this._inv ? -1 : 1, e = r * 2, n = r * 3, t = C[A], w = C[A + r], F = C[A + e], h = C[A + n], D = t + F, s = t - F, c = w + h, N = Q * (w - h), R = D + c, f = s, y = -N, G = D - c, H = s, v = N;
|
|
384
384
|
E[I] = R, E[I + 1] = 0, E[I + 2] = f, E[I + 3] = y, E[I + 4] = G, E[I + 5] = 0, E[I + 6] = H, E[I + 7] = v;
|
|
385
385
|
};
|
|
386
386
|
class LA {
|
|
@@ -392,128 +392,128 @@ class LA {
|
|
|
392
392
|
return this.indutnyFft.transform(A, I), A;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
-
var
|
|
395
|
+
var xA = (() => {
|
|
396
396
|
var o = import.meta.url;
|
|
397
397
|
return (function(I = {}) {
|
|
398
398
|
var A = I, r, E;
|
|
399
|
-
A.ready = new Promise((
|
|
400
|
-
r =
|
|
399
|
+
A.ready = new Promise((B, g) => {
|
|
400
|
+
r = B, E = g;
|
|
401
401
|
});
|
|
402
|
-
var
|
|
403
|
-
function e(
|
|
404
|
-
return A.locateFile ? A.locateFile(
|
|
402
|
+
var C = Object.assign({}, A), Q = "";
|
|
403
|
+
function e(B) {
|
|
404
|
+
return A.locateFile ? A.locateFile(B, Q) : Q + B;
|
|
405
405
|
}
|
|
406
406
|
typeof document < "u" && document.currentScript && (Q = document.currentScript.src), o && (Q = o), Q.indexOf("blob:") !== 0 ? Q = Q.substr(0, Q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : Q = "", A.print || console.log.bind(console);
|
|
407
|
-
var
|
|
408
|
-
Object.assign(A,
|
|
407
|
+
var n = A.printErr || console.error.bind(console);
|
|
408
|
+
Object.assign(A, C), C = null, A.arguments && A.arguments, A.thisProgram && A.thisProgram, A.quit && A.quit;
|
|
409
409
|
var t;
|
|
410
410
|
A.wasmBinary && (t = A.wasmBinary), A.noExitRuntime, typeof WebAssembly != "object" && J("no native wasm support detected");
|
|
411
411
|
var w, F, h = !1, D, s;
|
|
412
412
|
function c() {
|
|
413
|
-
var
|
|
414
|
-
A.HEAP8 = D = new Int8Array(
|
|
413
|
+
var B = w.buffer;
|
|
414
|
+
A.HEAP8 = D = new Int8Array(B), A.HEAP16 = new Int16Array(B), A.HEAP32 = new Int32Array(B), A.HEAPU8 = s = new Uint8Array(B), A.HEAPU16 = new Uint16Array(B), A.HEAPU32 = new Uint32Array(B), A.HEAPF32 = new Float32Array(B), A.HEAPF64 = new Float64Array(B);
|
|
415
415
|
}
|
|
416
416
|
var N = [], R = [], f = [];
|
|
417
417
|
function y() {
|
|
418
418
|
if (A.preRun)
|
|
419
419
|
for (typeof A.preRun == "function" && (A.preRun = [A.preRun]); A.preRun.length; )
|
|
420
420
|
v(A.preRun.shift());
|
|
421
|
-
|
|
421
|
+
x(N);
|
|
422
422
|
}
|
|
423
423
|
function G() {
|
|
424
|
-
|
|
424
|
+
x(R);
|
|
425
425
|
}
|
|
426
426
|
function H() {
|
|
427
427
|
if (A.postRun)
|
|
428
428
|
for (typeof A.postRun == "function" && (A.postRun = [A.postRun]); A.postRun.length; )
|
|
429
429
|
P(A.postRun.shift());
|
|
430
|
-
|
|
430
|
+
x(f);
|
|
431
431
|
}
|
|
432
|
-
function v(
|
|
433
|
-
N.unshift(
|
|
432
|
+
function v(B) {
|
|
433
|
+
N.unshift(B);
|
|
434
434
|
}
|
|
435
|
-
function p(
|
|
436
|
-
R.unshift(
|
|
435
|
+
function p(B) {
|
|
436
|
+
R.unshift(B);
|
|
437
437
|
}
|
|
438
|
-
function P(
|
|
439
|
-
f.unshift(
|
|
438
|
+
function P(B) {
|
|
439
|
+
f.unshift(B);
|
|
440
440
|
}
|
|
441
441
|
var k = 0, U = null;
|
|
442
|
-
function q(
|
|
442
|
+
function q(B) {
|
|
443
443
|
k++, A.monitorRunDependencies && A.monitorRunDependencies(k);
|
|
444
444
|
}
|
|
445
|
-
function K(
|
|
445
|
+
function K(B) {
|
|
446
446
|
if (k--, A.monitorRunDependencies && A.monitorRunDependencies(k), k == 0 && U) {
|
|
447
447
|
var g = U;
|
|
448
448
|
U = null, g();
|
|
449
449
|
}
|
|
450
450
|
}
|
|
451
|
-
function J(
|
|
452
|
-
A.onAbort && A.onAbort(
|
|
453
|
-
var g = new WebAssembly.RuntimeError(
|
|
451
|
+
function J(B) {
|
|
452
|
+
A.onAbort && A.onAbort(B), B = "Aborted(" + B + ")", n(B), h = !0, B += ". Build with -sASSERTIONS for more info.";
|
|
453
|
+
var g = new WebAssembly.RuntimeError(B);
|
|
454
454
|
throw E(g), g;
|
|
455
455
|
}
|
|
456
456
|
var u = "data:application/octet-stream;base64,";
|
|
457
|
-
function L(
|
|
458
|
-
return
|
|
457
|
+
function L(B) {
|
|
458
|
+
return B.startsWith(u);
|
|
459
459
|
}
|
|
460
460
|
var S;
|
|
461
461
|
S = "data:application/octet-stream;base64,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ACACSwRAQbgeIAI2AgALIAIgBmohAUHoISEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HoISEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBwB4gBTYCAEG0HkG0HigCACAAaiIANgIAIAUgAEEBcjYCBAwIC0G8HigCACAGRgRAQbweIAU2AgBBsB5BsB4oAgAgAGoiADYCACAFIABBAXI2AgQgACAFaiAANgIADAgLIAYoAgQiA0EDcUEBRw0GIANBeHEhCSADQf8BTQRAIAYoAgwiASAGKAIIIgJGBEBBqB5BqB4oAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHY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", L(S) || (S = e(S));
|
|
462
|
-
function
|
|
463
|
-
if (
|
|
462
|
+
function W(B) {
|
|
463
|
+
if (B == S && t)
|
|
464
464
|
return new Uint8Array(t);
|
|
465
|
-
var g = cA(
|
|
465
|
+
var g = cA(B);
|
|
466
466
|
if (g)
|
|
467
467
|
return g;
|
|
468
468
|
throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
|
|
469
469
|
}
|
|
470
|
-
function
|
|
471
|
-
var i,
|
|
472
|
-
i = new WebAssembly.Module(
|
|
470
|
+
function O(B, g) {
|
|
471
|
+
var i, a = W(B);
|
|
472
|
+
i = new WebAssembly.Module(a);
|
|
473
473
|
var d = new WebAssembly.Instance(i, g);
|
|
474
474
|
return [d, i];
|
|
475
475
|
}
|
|
476
|
-
function
|
|
477
|
-
var
|
|
478
|
-
function g(
|
|
479
|
-
var Y =
|
|
476
|
+
function Z() {
|
|
477
|
+
var B = { a: FA };
|
|
478
|
+
function g(a, d) {
|
|
479
|
+
var Y = a.exports;
|
|
480
480
|
return F = Y, w = F.b, c(), F.e, p(F.c), K(), Y;
|
|
481
481
|
}
|
|
482
482
|
if (q(), A.instantiateWasm)
|
|
483
483
|
try {
|
|
484
|
-
return A.instantiateWasm(
|
|
485
|
-
} catch (
|
|
486
|
-
|
|
484
|
+
return A.instantiateWasm(B, g);
|
|
485
|
+
} catch (a) {
|
|
486
|
+
n("Module.instantiateWasm callback failed with error: " + a), E(a);
|
|
487
487
|
}
|
|
488
|
-
var i =
|
|
488
|
+
var i = O(S, B);
|
|
489
489
|
return g(i[0]);
|
|
490
490
|
}
|
|
491
|
-
var
|
|
492
|
-
for (;
|
|
493
|
-
|
|
494
|
-
}, AA = (
|
|
491
|
+
var x = (B) => {
|
|
492
|
+
for (; B.length > 0; )
|
|
493
|
+
B.shift()(A);
|
|
494
|
+
}, AA = (B) => {
|
|
495
495
|
J("OOM");
|
|
496
|
-
}, IA = (
|
|
496
|
+
}, IA = (B) => {
|
|
497
497
|
s.length, AA();
|
|
498
498
|
};
|
|
499
|
-
function _(
|
|
500
|
-
var g = A["_" +
|
|
499
|
+
function _(B) {
|
|
500
|
+
var g = A["_" + B];
|
|
501
501
|
return g;
|
|
502
502
|
}
|
|
503
|
-
var $ = (
|
|
504
|
-
D.set(
|
|
505
|
-
}, gA = (
|
|
506
|
-
for (var g = 0, i = 0; i <
|
|
507
|
-
var
|
|
508
|
-
|
|
503
|
+
var $ = (B, g) => {
|
|
504
|
+
D.set(B, g);
|
|
505
|
+
}, gA = (B) => {
|
|
506
|
+
for (var g = 0, i = 0; i < B.length; ++i) {
|
|
507
|
+
var a = B.charCodeAt(i);
|
|
508
|
+
a <= 127 ? g++ : a <= 2047 ? g += 2 : a >= 55296 && a <= 57343 ? (g += 4, ++i) : g += 3;
|
|
509
509
|
}
|
|
510
510
|
return g;
|
|
511
|
-
}, iA = (
|
|
512
|
-
if (!(
|
|
513
|
-
for (var d = i, Y = i +
|
|
514
|
-
var l =
|
|
511
|
+
}, iA = (B, g, i, a) => {
|
|
512
|
+
if (!(a > 0)) return 0;
|
|
513
|
+
for (var d = i, Y = i + a - 1, M = 0; M < B.length; ++M) {
|
|
514
|
+
var l = B.charCodeAt(M);
|
|
515
515
|
if (l >= 55296 && l <= 57343) {
|
|
516
|
-
var m =
|
|
516
|
+
var m = B.charCodeAt(++M);
|
|
517
517
|
l = 65536 + ((l & 1023) << 10) | m & 1023;
|
|
518
518
|
}
|
|
519
519
|
if (l <= 127) {
|
|
@@ -531,26 +531,26 @@ var WA = (() => {
|
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
533
|
return g[i] = 0, i - d;
|
|
534
|
-
},
|
|
535
|
-
var g = gA(
|
|
536
|
-
return
|
|
537
|
-
},
|
|
538
|
-
for (var
|
|
539
|
-
if (d - g > 16 &&
|
|
540
|
-
return
|
|
534
|
+
}, BA = (B, g, i) => iA(B, s, g, i), QA = (B) => {
|
|
535
|
+
var g = gA(B) + 1, i = aA(g);
|
|
536
|
+
return BA(B, i, g), i;
|
|
537
|
+
}, CA = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, oA = (B, g, i) => {
|
|
538
|
+
for (var a = g + i, d = g; B[d] && !(d >= a); ) ++d;
|
|
539
|
+
if (d - g > 16 && B.buffer && CA)
|
|
540
|
+
return CA.decode(B.subarray(g, d));
|
|
541
541
|
for (var Y = ""; g < d; ) {
|
|
542
|
-
var M =
|
|
542
|
+
var M = B[g++];
|
|
543
543
|
if (!(M & 128)) {
|
|
544
544
|
Y += String.fromCharCode(M);
|
|
545
545
|
continue;
|
|
546
546
|
}
|
|
547
|
-
var l =
|
|
547
|
+
var l = B[g++] & 63;
|
|
548
548
|
if ((M & 224) == 192) {
|
|
549
549
|
Y += String.fromCharCode((M & 31) << 6 | l);
|
|
550
550
|
continue;
|
|
551
551
|
}
|
|
552
|
-
var m =
|
|
553
|
-
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 |
|
|
552
|
+
var m = B[g++] & 63;
|
|
553
|
+
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 | B[g++] & 63, M < 65536)
|
|
554
554
|
Y += String.fromCharCode(M);
|
|
555
555
|
else {
|
|
556
556
|
var V = M - 65536;
|
|
@@ -558,72 +558,72 @@ var WA = (() => {
|
|
|
558
558
|
}
|
|
559
559
|
}
|
|
560
560
|
return Y;
|
|
561
|
-
}, eA = (
|
|
561
|
+
}, eA = (B, g) => B ? oA(s, B, g) : "", rA = function(B, g, i, a, d) {
|
|
562
562
|
var Y = { string: (b) => {
|
|
563
563
|
var z = 0;
|
|
564
564
|
return b != null && b !== 0 && (z = QA(b)), z;
|
|
565
565
|
}, array: (b) => {
|
|
566
|
-
var z =
|
|
566
|
+
var z = aA(b.length);
|
|
567
567
|
return $(b, z), z;
|
|
568
568
|
} };
|
|
569
569
|
function M(b) {
|
|
570
570
|
return g === "string" ? eA(b) : g === "boolean" ? !!b : b;
|
|
571
571
|
}
|
|
572
|
-
var l = _(
|
|
573
|
-
if (
|
|
574
|
-
for (var j = 0; j <
|
|
572
|
+
var l = _(B), m = [], V = 0;
|
|
573
|
+
if (a)
|
|
574
|
+
for (var j = 0; j < a.length; j++) {
|
|
575
575
|
var tA = Y[i[j]];
|
|
576
|
-
tA ? (V === 0 && (V = EA()), m[j] = tA(
|
|
576
|
+
tA ? (V === 0 && (V = EA()), m[j] = tA(a[j])) : m[j] = a[j];
|
|
577
577
|
}
|
|
578
578
|
var wA = l.apply(null, m);
|
|
579
579
|
function yA(b) {
|
|
580
580
|
return V !== 0 && RA(V), M(b);
|
|
581
581
|
}
|
|
582
582
|
return wA = yA(wA), wA;
|
|
583
|
-
}, sA = function(
|
|
583
|
+
}, sA = function(B, g, i, a) {
|
|
584
584
|
var d = !i || i.every((M) => M === "number" || M === "boolean"), Y = g !== "string";
|
|
585
|
-
return Y && d && !
|
|
586
|
-
return rA(
|
|
585
|
+
return Y && d && !a ? _(B) : function() {
|
|
586
|
+
return rA(B, g, i, arguments);
|
|
587
587
|
};
|
|
588
|
-
}, FA = { a: IA }, T =
|
|
588
|
+
}, FA = { a: IA }, T = Z();
|
|
589
589
|
T.c, A._fftCross = T.d, T.__errno_location, A._malloc = T.f, A._free = T.g;
|
|
590
|
-
var EA = T.h, RA = T.i,
|
|
591
|
-
function DA(
|
|
590
|
+
var EA = T.h, RA = T.i, aA = T.j;
|
|
591
|
+
function DA(B) {
|
|
592
592
|
try {
|
|
593
|
-
for (var g = atob(
|
|
594
|
-
i[
|
|
593
|
+
for (var g = atob(B), i = new Uint8Array(g.length), a = 0; a < g.length; ++a)
|
|
594
|
+
i[a] = g.charCodeAt(a);
|
|
595
595
|
return i;
|
|
596
596
|
} catch {
|
|
597
597
|
throw new Error("Converting base64 string to bytes failed.");
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
|
-
function cA(
|
|
601
|
-
if (L(
|
|
602
|
-
return DA(
|
|
600
|
+
function cA(B) {
|
|
601
|
+
if (L(B))
|
|
602
|
+
return DA(B.slice(u.length));
|
|
603
603
|
}
|
|
604
604
|
A.ccall = rA, A.cwrap = sA;
|
|
605
|
-
var
|
|
606
|
-
U = function
|
|
607
|
-
|
|
605
|
+
var nA;
|
|
606
|
+
U = function B() {
|
|
607
|
+
nA || hA(), nA || (U = B);
|
|
608
608
|
};
|
|
609
609
|
function hA() {
|
|
610
610
|
if (k > 0 || (y(), k > 0))
|
|
611
611
|
return;
|
|
612
|
-
function
|
|
613
|
-
|
|
612
|
+
function B() {
|
|
613
|
+
nA || (nA = !0, A.calledRun = !0, !h && (G(), r(A), A.onRuntimeInitialized && A.onRuntimeInitialized(), H()));
|
|
614
614
|
}
|
|
615
615
|
A.setStatus ? (A.setStatus("Running..."), setTimeout(function() {
|
|
616
616
|
setTimeout(function() {
|
|
617
617
|
A.setStatus("");
|
|
618
|
-
}, 1),
|
|
619
|
-
}, 1)) :
|
|
618
|
+
}, 1), B();
|
|
619
|
+
}, 1)) : B();
|
|
620
620
|
}
|
|
621
621
|
if (A.preInit)
|
|
622
622
|
for (typeof A.preInit == "function" && (A.preInit = [A.preInit]); A.preInit.length > 0; )
|
|
623
623
|
A.preInit.pop()();
|
|
624
624
|
return hA(), I;
|
|
625
625
|
});
|
|
626
|
-
})(), dA =
|
|
626
|
+
})(), dA = xA({}), VA = dA.cwrap("fftCross", "void", [
|
|
627
627
|
"number",
|
|
628
628
|
"number",
|
|
629
629
|
"number",
|
|
@@ -637,15 +637,15 @@ function jA(o) {
|
|
|
637
637
|
this.ptr + this.n,
|
|
638
638
|
this.n
|
|
639
639
|
), this.transform = function(I, A, r) {
|
|
640
|
-
var E = this.ptr,
|
|
641
|
-
this.ri.set(new Uint8Array(I.buffer)), this.ii.set(new Uint8Array(A.buffer)), VA(this.size, r, E, E +
|
|
640
|
+
var E = this.ptr, C = this.n;
|
|
641
|
+
this.ri.set(new Uint8Array(I.buffer)), this.ii.set(new Uint8Array(A.buffer)), VA(this.size, r, E, E + C, E + C * 2, E + C * 3);
|
|
642
642
|
var Q = new Float64Array(
|
|
643
643
|
dA.HEAPU8.buffer,
|
|
644
|
-
E +
|
|
644
|
+
E + C * 2,
|
|
645
645
|
this.size
|
|
646
646
|
), e = new Float64Array(
|
|
647
647
|
dA.HEAPU8.buffer,
|
|
648
|
-
E +
|
|
648
|
+
E + C * 3,
|
|
649
649
|
this.size
|
|
650
650
|
);
|
|
651
651
|
return { real: Q, imag: e };
|
|
@@ -666,7 +666,7 @@ class XA {
|
|
|
666
666
|
return E;
|
|
667
667
|
}
|
|
668
668
|
}
|
|
669
|
-
function
|
|
669
|
+
function OA(o) {
|
|
670
670
|
this.n = o, this.levels = -1;
|
|
671
671
|
for (var I = 0; I < 32; I++)
|
|
672
672
|
1 << I == o && (this.levels = I);
|
|
@@ -676,16 +676,16 @@ function ZA(o) {
|
|
|
676
676
|
for (var I = 0; I < o / 2; I++)
|
|
677
677
|
this.cosTable[I] = Math.cos(2 * Math.PI * I / o), this.sinTable[I] = Math.sin(2 * Math.PI * I / o);
|
|
678
678
|
this.forward = function(A, r) {
|
|
679
|
-
for (var E = this.n,
|
|
680
|
-
var Q = s(
|
|
681
|
-
if (Q >
|
|
682
|
-
var e = A[
|
|
683
|
-
A[
|
|
679
|
+
for (var E = this.n, C = 0; C < E; C++) {
|
|
680
|
+
var Q = s(C, this.levels);
|
|
681
|
+
if (Q > C) {
|
|
682
|
+
var e = A[C];
|
|
683
|
+
A[C] = A[Q], A[Q] = e, e = r[C], r[C] = r[Q], r[Q] = e;
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
|
-
for (var
|
|
687
|
-
for (var t =
|
|
688
|
-
for (var Q =
|
|
686
|
+
for (var n = 2; n <= E; n *= 2)
|
|
687
|
+
for (var t = n / 2, w = E / n, C = 0; C < E; C += n)
|
|
688
|
+
for (var Q = C, F = 0; Q < C + t; Q++, F += w) {
|
|
689
689
|
var h = A[Q + t] * this.cosTable[F] + r[Q + t] * this.sinTable[F], D = -A[Q + t] * this.sinTable[F] + r[Q + t] * this.cosTable[F];
|
|
690
690
|
A[Q + t] = A[Q] - h, r[Q + t] = r[Q] - D, A[Q] += h, r[Q] += D;
|
|
691
691
|
}
|
|
@@ -698,17 +698,17 @@ function ZA(o) {
|
|
|
698
698
|
forward(r, A);
|
|
699
699
|
};
|
|
700
700
|
}
|
|
701
|
-
class
|
|
701
|
+
class ZA {
|
|
702
702
|
constructor(I) {
|
|
703
|
-
this.size = I, this.fftNayuki = new
|
|
703
|
+
this.size = I, this.fftNayuki = new OA(I);
|
|
704
704
|
}
|
|
705
705
|
fft(I) {
|
|
706
706
|
const A = new Float32Array(this.size), r = new Float32Array(this.size), E = new Float32Array(this.size * 2);
|
|
707
|
-
for (var
|
|
708
|
-
A[
|
|
707
|
+
for (var C = 0; C < this.size; ++C)
|
|
708
|
+
A[C] = I[C * 2], r[C] = I[C * 2 + 1];
|
|
709
709
|
this.fftNayuki.forward(A, r);
|
|
710
|
-
for (var
|
|
711
|
-
E[
|
|
710
|
+
for (var C = 0; C < this.size; ++C)
|
|
711
|
+
E[C * 2] = A[C], E[C * 2 + 1] = r[C];
|
|
712
712
|
return E;
|
|
713
713
|
}
|
|
714
714
|
}
|
|
@@ -716,124 +716,124 @@ var zA = (() => {
|
|
|
716
716
|
var o = import.meta.url;
|
|
717
717
|
return (function(I = {}) {
|
|
718
718
|
var A = I, r, E;
|
|
719
|
-
A.ready = new Promise((
|
|
720
|
-
r =
|
|
719
|
+
A.ready = new Promise((B, g) => {
|
|
720
|
+
r = B, E = g;
|
|
721
721
|
});
|
|
722
|
-
var
|
|
723
|
-
function e(
|
|
724
|
-
return A.locateFile ? A.locateFile(
|
|
722
|
+
var C = Object.assign({}, A), Q = "";
|
|
723
|
+
function e(B) {
|
|
724
|
+
return A.locateFile ? A.locateFile(B, Q) : Q + B;
|
|
725
725
|
}
|
|
726
726
|
typeof document < "u" && document.currentScript && (Q = document.currentScript.src), o && (Q = o), Q.indexOf("blob:") !== 0 ? Q = Q.substr(0, Q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : Q = "", A.print || console.log.bind(console);
|
|
727
|
-
var
|
|
728
|
-
Object.assign(A,
|
|
727
|
+
var n = A.printErr || console.error.bind(console);
|
|
728
|
+
Object.assign(A, C), C = null, A.arguments && A.arguments, A.thisProgram && A.thisProgram, A.quit && A.quit;
|
|
729
729
|
var t;
|
|
730
730
|
A.wasmBinary && (t = A.wasmBinary), A.noExitRuntime, typeof WebAssembly != "object" && J("no native wasm support detected");
|
|
731
731
|
var w, F, h = !1, D, s;
|
|
732
732
|
function c() {
|
|
733
|
-
var
|
|
734
|
-
A.HEAP8 = D = new Int8Array(
|
|
733
|
+
var B = w.buffer;
|
|
734
|
+
A.HEAP8 = D = new Int8Array(B), A.HEAP16 = new Int16Array(B), A.HEAP32 = new Int32Array(B), A.HEAPU8 = s = new Uint8Array(B), A.HEAPU16 = new Uint16Array(B), A.HEAPU32 = new Uint32Array(B), A.HEAPF32 = new Float32Array(B), A.HEAPF64 = new Float64Array(B);
|
|
735
735
|
}
|
|
736
736
|
var N = [], R = [], f = [];
|
|
737
737
|
function y() {
|
|
738
738
|
if (A.preRun)
|
|
739
739
|
for (typeof A.preRun == "function" && (A.preRun = [A.preRun]); A.preRun.length; )
|
|
740
740
|
v(A.preRun.shift());
|
|
741
|
-
|
|
741
|
+
x(N);
|
|
742
742
|
}
|
|
743
743
|
function G() {
|
|
744
|
-
|
|
744
|
+
x(R);
|
|
745
745
|
}
|
|
746
746
|
function H() {
|
|
747
747
|
if (A.postRun)
|
|
748
748
|
for (typeof A.postRun == "function" && (A.postRun = [A.postRun]); A.postRun.length; )
|
|
749
749
|
P(A.postRun.shift());
|
|
750
|
-
|
|
750
|
+
x(f);
|
|
751
751
|
}
|
|
752
|
-
function v(
|
|
753
|
-
N.unshift(
|
|
752
|
+
function v(B) {
|
|
753
|
+
N.unshift(B);
|
|
754
754
|
}
|
|
755
|
-
function p(
|
|
756
|
-
R.unshift(
|
|
755
|
+
function p(B) {
|
|
756
|
+
R.unshift(B);
|
|
757
757
|
}
|
|
758
|
-
function P(
|
|
759
|
-
f.unshift(
|
|
758
|
+
function P(B) {
|
|
759
|
+
f.unshift(B);
|
|
760
760
|
}
|
|
761
761
|
var k = 0, U = null;
|
|
762
|
-
function q(
|
|
762
|
+
function q(B) {
|
|
763
763
|
k++, A.monitorRunDependencies && A.monitorRunDependencies(k);
|
|
764
764
|
}
|
|
765
|
-
function K(
|
|
765
|
+
function K(B) {
|
|
766
766
|
if (k--, A.monitorRunDependencies && A.monitorRunDependencies(k), k == 0 && U) {
|
|
767
767
|
var g = U;
|
|
768
768
|
U = null, g();
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
|
-
function J(
|
|
772
|
-
A.onAbort && A.onAbort(
|
|
773
|
-
var g = new WebAssembly.RuntimeError(
|
|
771
|
+
function J(B) {
|
|
772
|
+
A.onAbort && A.onAbort(B), B = "Aborted(" + B + ")", n(B), h = !0, B += ". Build with -sASSERTIONS for more info.";
|
|
773
|
+
var g = new WebAssembly.RuntimeError(B);
|
|
774
774
|
throw E(g), g;
|
|
775
775
|
}
|
|
776
776
|
var u = "data:application/octet-stream;base64,";
|
|
777
|
-
function L(
|
|
778
|
-
return
|
|
777
|
+
function L(B) {
|
|
778
|
+
return B.startsWith(u);
|
|
779
779
|
}
|
|
780
780
|
var S;
|
|
781
781
|
S = "data:application/octet-stream;base64,AGFzbQEAAAABNgpgAX8Bf2ABfwBgBH9/f38AYAN8fH8BfGACfHwBfGACfH8BfGABfAF8YAAAYAJ8fwF/YAABfwIHAQFhAWEAAAMSEQEAAAMEBQYHCAECAgAAAQkABAUBcAEBAQUGAQGAAoACBggBfwFBoKIECwc5DgFiAgABYwAIAWQAAgFlAAEBZgARAWcADQFoAAoBaQAKAWoADAFrAAsBbAEAAW0AEAFuAA8BbwAOCvdfEdILAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkG4HigCAEkNASAAIAFqIQACQAJAQbweKAIAIAJHBEAgAUH/AU0EQCABQQN2IQQgAigCDCIBIAIoAggiA0YEQEGoHkGoHigCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAIoAhghBiACIAIoAgwiAUcEQCACKAIIIgMgATYCDCABIAM2AggMAwsgAkEUaiIEKAIAIgNFBEAgAigCECIDRQ0CIAJBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUoAgQiAUEDcUEDRw0CQbAeIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAFIAA2AgAPC0EAIQELIAZFDQACQCACKAIcIgNBAnRB2CBqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQaweQaweKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAkYbaiABNgIAIAFFDQELIAEgBjYCGCACKAIQIgMEQCABIAM2AhAgAyABNgIYCyACKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBwB4oAgAgBUYEQEHAHiACNgIAQbQeQbQeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJBvB4oAgBHDQZBsB5BADYCAEG8HkEANgIADwtBvB4oAgAgBUYEQEG8HiACNgIAQbAeQbAeKAIAIABqIgA2AgAgAiAAQQFyNgIEIAAgAmogADYCAA8LIAFBeHEgAGohACABQf8BTQRAIAFBA3YhBCAFKAIMIgEgBSgCCCIDRgRAQageQageKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAQbgeKAIAGiAFKAIIIgMgATYCDCABIAM2AggMAwsgBUEUaiIEKAIAIgNFBEAgBSgCECIDRQ0CIAVBEGohBAsDQCAEIQcgAyIBQRRqIgQoAgAiAw0AIAFBEGohBCABKAIQIgMNAAsgB0EANgIADAILIAUgAUF+cTYCBCACIABBAXI2AgQgACACaiAANgIADAMLQQAhAQsgBkUNAAJAIAUoAhwiA0ECdEHYIGoiBCgCACAFRgRAIAQgATYCACABDQFBrB5BrB4oAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAwRAIAEgAzYCECADIAE2AhgLIAUoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIABBAXI2AgQgACACaiAANgIAIAJBvB4oAgBHDQBBsB4gADYCAA8LIABB/wFNBEAgAEF4cUHQHmohAQJ/QageKAIAIgNBASAAQQN2dCIAcUUEQEGoHiAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggPC0EfIQMgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAwsgAiADNgIcIAJCADcCECADQQJ0QdggaiEBAkACQAJAQaweKAIAIgRBASADdCIHcUUEQEGsHiAEIAdyNgIAIAEgAjYCACACIAE2AhgMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACEBA0AgASIEKAIEQXhxIABGDQIgA0EddiEBIANBAXQhAyAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAI2AhAgAiAENgIYCyACIAI2AgwgAiACNgIIDAELIAQoAggiACACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgADYCCAtByB5ByB4oAgBBAWsiAEF/IAAbNgIACwvGJwELfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEGoHigCACIGQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQdAeaiIAIAFB2B5qKAIAIgEoAggiBEYEQEGoHiAGQX4gAndxNgIADAELIAQgADYCDCAAIAQ2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwPCyAFQbAeKAIAIgdNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB0B5qIgIgAEHYHmooAgAiACgCCCIERgRAQageIAZBfiABd3EiBjYCAAwBCyAEIAI2AgwgAiAENgIICyAAIAVBA3I2AgQgACAFaiIIIAFBA3QiASAFayIEQQFyNgIEIAAgAWogBDYCACAHBEAgB0F4cUHQHmohAUG8HigCACECAn8gBkEBIAdBA3Z0IgNxRQRAQageIAMgBnI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQbweIAg2AgBBsB4gBDYCAAwPC0GsHigCACILRQ0BIAtoQQJ0QdggaigCACICKAIEQXhxIAVrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAVrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgRHBEBBuB4oAgAaIAIoAggiACAENgIMIAQgADYCCAwOCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMDQtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVBrB4oAgAiCEUNAEEAIAVrIQMCQAJAAkACf0EAIAVBgAJJDQAaQR8gBUH///8HSw0AGiAFQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIHQQJ0QdggaigCACIBRQRAQQAhAAwBC0EAIQAgBUEZIAdBAXZrQQAgB0EfRxt0IQIDQAJAIAEoAgRBeHEgBWsiBiADTw0AIAEhBCAGIgMNAEEAIQMgASEADAMLIAAgASgCFCIGIAYgASACQR12QQRxaigCECIBRhsgACAGGyEAIAJBAXQhAiABDQALCyAAIARyRQRAQQAhBEECIAd0IgBBACAAa3IgCHEiAEUNAyAAaEECdEHYIGooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBsB4oAgAgBWtPDQAgBCgCGCEHIAQgBCgCDCICRwRAQbgeKAIAGiAEKAIIIgAgAjYCDCACIAA2AggMDAsgBEEUaiIBKAIAIgBFBEAgBCgCECIARQ0DIARBEGohAQsDQCABIQYgACICQRRqIgEoAgAiAA0AIAJBEGohASACKAIQIgANAAsgBkEANgIADAsLIAVBsB4oAgAiBE0EQEG8HigCACEAAkAgBCAFayIBQRBPBEAgACAFaiICIAFBAXI2AgQgACAEaiABNgIAIAAgBUEDcjYCBAwBCyAAIARBA3I2AgQgACAEaiIBIAEoAgRBAXI2AgRBACECQQAhAQtBsB4gATYCAEG8HiACNgIAIABBCGohAAwNCyAFQbQeKAIAIgJJBEBBtB4gAiAFayIBNgIAQcAeQcAeKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwNC0EAIQAgBUEvaiIDAn9BgCIoAgAEQEGIIigCAAwBC0GMIkJ/NwIAQYQiQoCggICAgAQ3AgBBgCIgCkEMakFwcUHYqtWqBXM2AgBBlCJBADYCAEHkIUEANgIAQYAgCyIBaiIGQQAgAWsiCHEiASAFTQ0MQeAhKAIAIgQEQEHYISgCACIHIAFqIgkgB00NDSAEIAlJDQ0LAkBB5CEtAABBBHFFBEACQAJAAkACQEHAHigCACIEBEBB6CEhAANAIAQgACgCACIHTwRAIAcgACgCBGogBEsNAwsgACgCCCIADQALC0EAEAMiAkF/Rg0DIAEhBkGEIigCACIAQQFrIgQgAnEEQCABIAJrIAIgBGpBACAAa3FqIQYLIAUgBk8NA0HgISgCACIABEBB2CEoAgAiBCAGaiIIIARNDQQgACAISQ0ECyAGEAMiACACRw0BDAULIAYgAmsgCHEiBhADIgIgACgCACAAKAIEakYNASACIQALIABBf0YNASAFQTBqIAZNBEAgACECDAQLQYgiKAIAIgIgAyAGa2pBACACa3EiAhADQX9GDQEgAiAGaiEGIAAhAgwDCyACQX9HDQILQeQhQeQhKAIAQQRyNgIACyABEAMhAkEAEAMhACACQX9GDQUgAEF/Rg0FIAAgAk0NBSAAIAJrIgYgBUEoak0NBQtB2CFB2CEoAgAgBmoiADYCAEHcISgCACAASQRAQdwhIAA2AgALAkBBwB4oAgAiAwRAQeghIQADQCACIAAoAgAiASAAKAIEIgRqRg0CIAAoAggiAA0ACwwEC0G4HigCACIAQQAgACACTRtFBEBBuB4gAjYCAAtBACEAQewhIAY2AgBB6CEgAjYCAEHIHkF/NgIAQcweQYAiKAIANgIAQfQhQQA2AgADQCAAQQN0IgFB2B5qIAFB0B5qIgQ2AgAgAUHcHmogBDYCACAAQQFqIgBBIEcNAAtBtB4gBkEoayIAQXggAmtBB3EiAWsiBDYCAEHAHiABIAJqIgE2AgAgASAEQQFyNgIEIAAgAmpBKDYCBEHEHkGQIigCADYCAAwECyACIANNDQIgASADSw0CIAAoAgxBCHENAiAAIAQgBmo2AgRBwB4gA0F4IANrQQdxIgBqIgE2AgBBtB5BtB4oAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRBxB5BkCIoAgA2AgAMAwtBACEEDAoLQQAhAgwIC0G4HigCACACSwRAQbgeIAI2AgALIAIgBmohAUHoISEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HoISEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBwB4gBTYCAEG0HkG0HigCACAAaiIANgIAIAUgAEEBcjYCBAwIC0G8HigCACAGRgRAQbweIAU2AgBBsB5BsB4oAgAgAGoiADYCACAFIABBAXI2AgQgACAFaiAANgIADAgLIAYoAgQiA0EDcUEBRw0GIANBeHEhCSADQf8BTQRAIAYoAgwiASAGKAIIIgJGBEBBqB5BqB4oAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0G0HiAGQShrIgBBeCACa0EHcSIBayIINgIAQcAeIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcQeQZAiKAIANgIAIAMgBEEnIARrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQfAhKQIANwIQIAFB6CEpAgA3AghB8CEgAUEIajYCAEHsISAGNgIAQeghIAI2AgBB9CFBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiECIABBBGohACACIARJDQALIAEgA0YNACABIAEoAgRBfnE2AgQgAyABIANrIgJBAXI2AgQgASACNgIAIAJB/wFNBEAgAkF4cUHQHmohAAJ/QageKAIAIgFBASACQQN2dCICcUUEQEGoHiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyEAIAJB////B00EQCACQSYgAkEIdmciAGt2QQFxIABBAXRrQT5qIQALIAMgADYCHCADQgA3AhAgAEECdEHYIGohAQJAAkBBrB4oAgAiBEEBIAB0IgZxRQRAQaweIAQgBnI2AgAgASADNgIADAELIAJBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBANAIAQiASgCBEF4cSACRg0CIABBHXYhBCAAQQF0IQAgASAEQQRxaiIGKAIQIgQNAAsgBiADNgIQCyADIAE2AhggAyADNgIMIAMgAzYCCAwBCyABKAIIIgAgAzYCDCABIAM2AgggA0EANgIYIAMgATYCDCADIAA2AggLQbQeKAIAIgAgBU0NAEG0HiAAIAVrIgE2AgBBwB5BwB4oAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQaQeQTA2AgBBACEADAcLQQAhAgsgCEUNAAJAIAYoAhwiAUECdEHYIGoiBCgCACAGRgRAIAQgAjYCACACDQFBrB5BrB4oAgBBfiABd3E2AgAMAgsgCEEQQRQgCCgCECAGRhtqIAI2AgAgAkUNAQsgAiAINgIYIAYoAhAiAQRAIAIgATYCECABIAI2AhgLIAYoAhQiAUUNACACIAE2AhQgASACNgIYCyAAIAlqIQAgBiAJaiIGKAIEIQMLIAYgA0F+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", L(S) || (S = e(S));
|
|
782
|
-
function
|
|
783
|
-
if (
|
|
782
|
+
function W(B) {
|
|
783
|
+
if (B == S && t)
|
|
784
784
|
return new Uint8Array(t);
|
|
785
|
-
var g = cA(
|
|
785
|
+
var g = cA(B);
|
|
786
786
|
if (g)
|
|
787
787
|
return g;
|
|
788
788
|
throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
|
|
789
789
|
}
|
|
790
|
-
function
|
|
791
|
-
var i,
|
|
792
|
-
i = new WebAssembly.Module(
|
|
790
|
+
function O(B, g) {
|
|
791
|
+
var i, a = W(B);
|
|
792
|
+
i = new WebAssembly.Module(a);
|
|
793
793
|
var d = new WebAssembly.Instance(i, g);
|
|
794
794
|
return [d, i];
|
|
795
795
|
}
|
|
796
|
-
function
|
|
797
|
-
var
|
|
798
|
-
function g(
|
|
799
|
-
var Y =
|
|
796
|
+
function Z() {
|
|
797
|
+
var B = { a: FA };
|
|
798
|
+
function g(a, d) {
|
|
799
|
+
var Y = a.exports;
|
|
800
800
|
return F = Y, w = F.b, c(), F.l, p(F.c), K(), Y;
|
|
801
801
|
}
|
|
802
802
|
if (q(), A.instantiateWasm)
|
|
803
803
|
try {
|
|
804
|
-
return A.instantiateWasm(
|
|
805
|
-
} catch (
|
|
806
|
-
|
|
804
|
+
return A.instantiateWasm(B, g);
|
|
805
|
+
} catch (a) {
|
|
806
|
+
n("Module.instantiateWasm callback failed with error: " + a), E(a);
|
|
807
807
|
}
|
|
808
|
-
var i =
|
|
808
|
+
var i = O(S, B);
|
|
809
809
|
return g(i[0]);
|
|
810
810
|
}
|
|
811
|
-
var
|
|
812
|
-
for (;
|
|
813
|
-
|
|
814
|
-
}, AA = (
|
|
811
|
+
var x = (B) => {
|
|
812
|
+
for (; B.length > 0; )
|
|
813
|
+
B.shift()(A);
|
|
814
|
+
}, AA = (B) => {
|
|
815
815
|
J("OOM");
|
|
816
|
-
}, IA = (
|
|
816
|
+
}, IA = (B) => {
|
|
817
817
|
s.length, AA();
|
|
818
818
|
};
|
|
819
|
-
function _(
|
|
820
|
-
var g = A["_" +
|
|
819
|
+
function _(B) {
|
|
820
|
+
var g = A["_" + B];
|
|
821
821
|
return g;
|
|
822
822
|
}
|
|
823
|
-
var $ = (
|
|
824
|
-
D.set(
|
|
825
|
-
}, gA = (
|
|
826
|
-
for (var g = 0, i = 0; i <
|
|
827
|
-
var
|
|
828
|
-
|
|
823
|
+
var $ = (B, g) => {
|
|
824
|
+
D.set(B, g);
|
|
825
|
+
}, gA = (B) => {
|
|
826
|
+
for (var g = 0, i = 0; i < B.length; ++i) {
|
|
827
|
+
var a = B.charCodeAt(i);
|
|
828
|
+
a <= 127 ? g++ : a <= 2047 ? g += 2 : a >= 55296 && a <= 57343 ? (g += 4, ++i) : g += 3;
|
|
829
829
|
}
|
|
830
830
|
return g;
|
|
831
|
-
}, iA = (
|
|
832
|
-
if (!(
|
|
833
|
-
for (var d = i, Y = i +
|
|
834
|
-
var l =
|
|
831
|
+
}, iA = (B, g, i, a) => {
|
|
832
|
+
if (!(a > 0)) return 0;
|
|
833
|
+
for (var d = i, Y = i + a - 1, M = 0; M < B.length; ++M) {
|
|
834
|
+
var l = B.charCodeAt(M);
|
|
835
835
|
if (l >= 55296 && l <= 57343) {
|
|
836
|
-
var m =
|
|
836
|
+
var m = B.charCodeAt(++M);
|
|
837
837
|
l = 65536 + ((l & 1023) << 10) | m & 1023;
|
|
838
838
|
}
|
|
839
839
|
if (l <= 127) {
|
|
@@ -851,26 +851,26 @@ var zA = (() => {
|
|
|
851
851
|
}
|
|
852
852
|
}
|
|
853
853
|
return g[i] = 0, i - d;
|
|
854
|
-
},
|
|
855
|
-
var g = gA(
|
|
856
|
-
return
|
|
857
|
-
},
|
|
858
|
-
for (var
|
|
859
|
-
if (d - g > 16 &&
|
|
860
|
-
return
|
|
854
|
+
}, BA = (B, g, i) => iA(B, s, g, i), QA = (B) => {
|
|
855
|
+
var g = gA(B) + 1, i = aA(g);
|
|
856
|
+
return BA(B, i, g), i;
|
|
857
|
+
}, CA = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, oA = (B, g, i) => {
|
|
858
|
+
for (var a = g + i, d = g; B[d] && !(d >= a); ) ++d;
|
|
859
|
+
if (d - g > 16 && B.buffer && CA)
|
|
860
|
+
return CA.decode(B.subarray(g, d));
|
|
861
861
|
for (var Y = ""; g < d; ) {
|
|
862
|
-
var M =
|
|
862
|
+
var M = B[g++];
|
|
863
863
|
if (!(M & 128)) {
|
|
864
864
|
Y += String.fromCharCode(M);
|
|
865
865
|
continue;
|
|
866
866
|
}
|
|
867
|
-
var l =
|
|
867
|
+
var l = B[g++] & 63;
|
|
868
868
|
if ((M & 224) == 192) {
|
|
869
869
|
Y += String.fromCharCode((M & 31) << 6 | l);
|
|
870
870
|
continue;
|
|
871
871
|
}
|
|
872
|
-
var m =
|
|
873
|
-
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 |
|
|
872
|
+
var m = B[g++] & 63;
|
|
873
|
+
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 | B[g++] & 63, M < 65536)
|
|
874
874
|
Y += String.fromCharCode(M);
|
|
875
875
|
else {
|
|
876
876
|
var V = M - 65536;
|
|
@@ -878,65 +878,65 @@ var zA = (() => {
|
|
|
878
878
|
}
|
|
879
879
|
}
|
|
880
880
|
return Y;
|
|
881
|
-
}, eA = (
|
|
881
|
+
}, eA = (B, g) => B ? oA(s, B, g) : "", rA = function(B, g, i, a, d) {
|
|
882
882
|
var Y = { string: (b) => {
|
|
883
883
|
var z = 0;
|
|
884
884
|
return b != null && b !== 0 && (z = QA(b)), z;
|
|
885
885
|
}, array: (b) => {
|
|
886
|
-
var z =
|
|
886
|
+
var z = aA(b.length);
|
|
887
887
|
return $(b, z), z;
|
|
888
888
|
} };
|
|
889
889
|
function M(b) {
|
|
890
890
|
return g === "string" ? eA(b) : g === "boolean" ? !!b : b;
|
|
891
891
|
}
|
|
892
|
-
var l = _(
|
|
893
|
-
if (
|
|
894
|
-
for (var j = 0; j <
|
|
892
|
+
var l = _(B), m = [], V = 0;
|
|
893
|
+
if (a)
|
|
894
|
+
for (var j = 0; j < a.length; j++) {
|
|
895
895
|
var tA = Y[i[j]];
|
|
896
|
-
tA ? (V === 0 && (V = EA()), m[j] = tA(
|
|
896
|
+
tA ? (V === 0 && (V = EA()), m[j] = tA(a[j])) : m[j] = a[j];
|
|
897
897
|
}
|
|
898
898
|
var wA = l.apply(null, m);
|
|
899
899
|
function yA(b) {
|
|
900
900
|
return V !== 0 && RA(V), M(b);
|
|
901
901
|
}
|
|
902
902
|
return wA = yA(wA), wA;
|
|
903
|
-
}, sA = function(
|
|
903
|
+
}, sA = function(B, g, i, a) {
|
|
904
904
|
var d = !i || i.every((M) => M === "number" || M === "boolean"), Y = g !== "string";
|
|
905
|
-
return Y && d && !
|
|
906
|
-
return rA(
|
|
905
|
+
return Y && d && !a ? _(B) : function() {
|
|
906
|
+
return rA(B, g, i, arguments);
|
|
907
907
|
};
|
|
908
|
-
}, FA = { a: IA }, T =
|
|
908
|
+
}, FA = { a: IA }, T = Z();
|
|
909
909
|
T.c, A._malloc = T.d, A._free = T.e, A._precalc = T.f, A._precalc_f = T.g, A._dispose = T.h, A._dispose_f = T.i, A._transform_radix2_precalc = T.j, A._transform_radix2_precalc_f = T.k, T.__errno_location;
|
|
910
|
-
var EA = T.m, RA = T.n,
|
|
911
|
-
function DA(
|
|
910
|
+
var EA = T.m, RA = T.n, aA = T.o;
|
|
911
|
+
function DA(B) {
|
|
912
912
|
try {
|
|
913
|
-
for (var g = atob(
|
|
914
|
-
i[
|
|
913
|
+
for (var g = atob(B), i = new Uint8Array(g.length), a = 0; a < g.length; ++a)
|
|
914
|
+
i[a] = g.charCodeAt(a);
|
|
915
915
|
return i;
|
|
916
916
|
} catch {
|
|
917
917
|
throw new Error("Converting base64 string to bytes failed.");
|
|
918
918
|
}
|
|
919
919
|
}
|
|
920
|
-
function cA(
|
|
921
|
-
if (L(
|
|
922
|
-
return DA(
|
|
920
|
+
function cA(B) {
|
|
921
|
+
if (L(B))
|
|
922
|
+
return DA(B.slice(u.length));
|
|
923
923
|
}
|
|
924
924
|
A.ccall = rA, A.cwrap = sA;
|
|
925
|
-
var
|
|
926
|
-
U = function
|
|
927
|
-
|
|
925
|
+
var nA;
|
|
926
|
+
U = function B() {
|
|
927
|
+
nA || hA(), nA || (U = B);
|
|
928
928
|
};
|
|
929
929
|
function hA() {
|
|
930
930
|
if (k > 0 || (y(), k > 0))
|
|
931
931
|
return;
|
|
932
|
-
function
|
|
933
|
-
|
|
932
|
+
function B() {
|
|
933
|
+
nA || (nA = !0, A.calledRun = !0, !h && (G(), r(A), A.onRuntimeInitialized && A.onRuntimeInitialized(), H()));
|
|
934
934
|
}
|
|
935
935
|
A.setStatus ? (A.setStatus("Running..."), setTimeout(function() {
|
|
936
936
|
setTimeout(function() {
|
|
937
937
|
A.setStatus("");
|
|
938
|
-
}, 1),
|
|
939
|
-
}, 1)) :
|
|
938
|
+
}, 1), B();
|
|
939
|
+
}, 1)) : B();
|
|
940
940
|
}
|
|
941
941
|
if (A.preInit)
|
|
942
942
|
for (typeof A.preInit == "function" && (A.preInit = [A.preInit]); A.preInit.length > 0; )
|
|
@@ -969,77 +969,77 @@ class gI {
|
|
|
969
969
|
}
|
|
970
970
|
fft(I) {
|
|
971
971
|
const A = new Float32Array(this.size), r = new Float32Array(this.size), E = new Float32Array(this.size * 2);
|
|
972
|
-
for (var
|
|
973
|
-
A[
|
|
972
|
+
for (var C = 0; C < this.size; ++C)
|
|
973
|
+
A[C] = I[C * 2], r[C] = I[C * 2 + 1];
|
|
974
974
|
this.fftNayuki.forward(A, r);
|
|
975
|
-
for (var
|
|
976
|
-
E[
|
|
975
|
+
for (var C = 0; C < this.size; ++C)
|
|
976
|
+
E[C * 2] = A[C], E[C * 2 + 1] = r[C];
|
|
977
977
|
return E;
|
|
978
978
|
}
|
|
979
979
|
}
|
|
980
980
|
if (!mA)
|
|
981
981
|
var mA = {};
|
|
982
982
|
(function(o) {
|
|
983
|
-
function I(e,
|
|
983
|
+
function I(e, n, t, w, F, h) {
|
|
984
984
|
for (var D = F.twiddle, s = 0; s < h; s++) {
|
|
985
|
-
var c = e[2 * (
|
|
986
|
-
e[2 * (
|
|
985
|
+
var c = e[2 * (n + t * s)], N = e[2 * (n + t * s) + 1], R = e[2 * (n + t * (s + h))], f = e[2 * (n + t * (s + h)) + 1], y = D[2 * (0 + w * s)], G = D[2 * (0 + w * s) + 1], H = R * y - f * G, v = R * G + f * y, p = c + H, P = N + v, k = c - H, U = N - v;
|
|
986
|
+
e[2 * (n + t * s)] = p, e[2 * (n + t * s) + 1] = P, e[2 * (n + t * (s + h))] = k, e[2 * (n + t * (s + h)) + 1] = U;
|
|
987
987
|
}
|
|
988
988
|
}
|
|
989
|
-
function A(e,
|
|
989
|
+
function A(e, n, t, w, F, h) {
|
|
990
990
|
for (var D = F.twiddle, s = h, c = 2 * h, N = w, R = 2 * w, f = D[2 * (0 + w * h) + 1], y = 0; y < h; y++) {
|
|
991
|
-
var G = e[2 * (
|
|
992
|
-
e[2 * (
|
|
993
|
-
var IA = G -
|
|
994
|
-
e[2 * (
|
|
995
|
-
var QA = IA + gA,
|
|
996
|
-
e[2 * (
|
|
991
|
+
var G = e[2 * (n + t * y)], H = e[2 * (n + t * y) + 1], v = e[2 * (n + t * (y + s))], p = e[2 * (n + t * (y + s)) + 1], P = D[2 * (0 + N * y)], k = D[2 * (0 + N * y) + 1], U = v * P - p * k, q = v * k + p * P, K = e[2 * (n + t * (y + c))], J = e[2 * (n + t * (y + c)) + 1], u = D[2 * (0 + R * y)], L = D[2 * (0 + R * y) + 1], S = K * u - J * L, W = K * L + J * u, O = U + S, Z = q + W, x = G + O, AA = H + Z;
|
|
992
|
+
e[2 * (n + t * y)] = x, e[2 * (n + t * y) + 1] = AA;
|
|
993
|
+
var IA = G - O * 0.5, _ = H - Z * 0.5, $ = (U - S) * f, gA = (q - W) * f, iA = IA - gA, BA = _ + $;
|
|
994
|
+
e[2 * (n + t * (y + s))] = iA, e[2 * (n + t * (y + s)) + 1] = BA;
|
|
995
|
+
var QA = IA + gA, CA = _ - $;
|
|
996
|
+
e[2 * (n + t * (y + c))] = QA, e[2 * (n + t * (y + c)) + 1] = CA;
|
|
997
997
|
}
|
|
998
998
|
}
|
|
999
|
-
function r(e,
|
|
999
|
+
function r(e, n, t, w, F, h) {
|
|
1000
1000
|
for (var D = F.twiddle, s = h, c = 2 * h, N = 3 * h, R = w, f = 2 * w, y = 3 * w, G = 0; G < h; G++) {
|
|
1001
|
-
var H = e[2 * (
|
|
1001
|
+
var H = e[2 * (n + t * G)], v = e[2 * (n + t * G) + 1], p = e[2 * (n + t * (G + s))], P = e[2 * (n + t * (G + s)) + 1], k = D[2 * (0 + R * G)], U = D[2 * (0 + R * G) + 1], q = p * k - P * U, K = p * U + P * k, J = e[2 * (n + t * (G + c))], u = e[2 * (n + t * (G + c)) + 1], L = D[2 * (0 + f * G)], S = D[2 * (0 + f * G) + 1], W = J * L - u * S, O = J * S + u * L, Z = e[2 * (n + t * (G + N))], x = e[2 * (n + t * (G + N)) + 1], AA = D[2 * (0 + y * G)], IA = D[2 * (0 + y * G) + 1], _ = Z * AA - x * IA, $ = Z * IA + x * AA, gA = H + W, iA = v + O, BA = H - W, QA = v - O, CA = q + _, oA = K + $, eA = q - _, rA = K - $, sA = gA + CA, FA = iA + oA;
|
|
1002
1002
|
if (F.inverse)
|
|
1003
|
-
var T =
|
|
1003
|
+
var T = BA - rA, EA = QA + eA;
|
|
1004
1004
|
else
|
|
1005
|
-
var T =
|
|
1006
|
-
var RA = gA -
|
|
1005
|
+
var T = BA + rA, EA = QA - eA;
|
|
1006
|
+
var RA = gA - CA, aA = iA - oA;
|
|
1007
1007
|
if (F.inverse)
|
|
1008
|
-
var DA =
|
|
1008
|
+
var DA = BA + rA, cA = QA - eA;
|
|
1009
1009
|
else
|
|
1010
|
-
var DA =
|
|
1011
|
-
e[2 * (
|
|
1010
|
+
var DA = BA - rA, cA = QA + eA;
|
|
1011
|
+
e[2 * (n + t * G)] = sA, e[2 * (n + t * G) + 1] = FA, e[2 * (n + t * (G + s))] = T, e[2 * (n + t * (G + s)) + 1] = EA, e[2 * (n + t * (G + c))] = RA, e[2 * (n + t * (G + c)) + 1] = aA, e[2 * (n + t * (G + N))] = DA, e[2 * (n + t * (G + N)) + 1] = cA;
|
|
1012
1012
|
}
|
|
1013
1013
|
}
|
|
1014
|
-
function E(e,
|
|
1014
|
+
function E(e, n, t, w, F, h, D) {
|
|
1015
1015
|
for (var s = F.twiddle, c = F.n, N = new Float64Array(2 * D), R = 0; R < h; R++) {
|
|
1016
1016
|
for (var f = 0, y = R; f < D; f++, y += h) {
|
|
1017
|
-
var G = e[2 * (
|
|
1017
|
+
var G = e[2 * (n + t * y)], H = e[2 * (n + t * y) + 1];
|
|
1018
1018
|
N[2 * f] = G, N[2 * f + 1] = H;
|
|
1019
1019
|
}
|
|
1020
1020
|
for (var f = 0, y = R; f < D; f++, y += h) {
|
|
1021
1021
|
var v = 0, G = N[0], H = N[1];
|
|
1022
|
-
e[2 * (
|
|
1022
|
+
e[2 * (n + t * y)] = G, e[2 * (n + t * y) + 1] = H;
|
|
1023
1023
|
for (var p = 1; p < D; p++) {
|
|
1024
1024
|
v = (v + w * y) % c;
|
|
1025
|
-
var P = e[2 * (
|
|
1026
|
-
e[2 * (
|
|
1025
|
+
var P = e[2 * (n + t * y)], k = e[2 * (n + t * y) + 1], U = N[2 * p], q = N[2 * p + 1], K = s[2 * v], J = s[2 * v + 1], u = U * K - q * J, L = U * J + q * K, S = P + u, W = k + L;
|
|
1026
|
+
e[2 * (n + t * y)] = S, e[2 * (n + t * y) + 1] = W;
|
|
1027
1027
|
}
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
1030
|
}
|
|
1031
|
-
function
|
|
1031
|
+
function C(e, n, t, w, F, h, D, s, c) {
|
|
1032
1032
|
var N = s.shift(), R = s.shift();
|
|
1033
1033
|
if (R == 1)
|
|
1034
1034
|
for (var f = 0; f < N * R; f++) {
|
|
1035
1035
|
var y = w[2 * (F + h * D * f)], G = w[2 * (F + h * D * f) + 1];
|
|
1036
|
-
e[2 * (
|
|
1036
|
+
e[2 * (n + t * f)] = y, e[2 * (n + t * f) + 1] = G;
|
|
1037
1037
|
}
|
|
1038
1038
|
else
|
|
1039
1039
|
for (var f = 0; f < N; f++)
|
|
1040
|
-
|
|
1040
|
+
C(
|
|
1041
1041
|
e,
|
|
1042
|
-
|
|
1042
|
+
n + t * f * R,
|
|
1043
1043
|
t,
|
|
1044
1044
|
w,
|
|
1045
1045
|
F + f * h * D,
|
|
@@ -1050,16 +1050,16 @@ if (!mA)
|
|
|
1050
1050
|
);
|
|
1051
1051
|
switch (N) {
|
|
1052
1052
|
case 2:
|
|
1053
|
-
I(e,
|
|
1053
|
+
I(e, n, t, h, c, R);
|
|
1054
1054
|
break;
|
|
1055
1055
|
case 3:
|
|
1056
|
-
A(e,
|
|
1056
|
+
A(e, n, t, h, c, R);
|
|
1057
1057
|
break;
|
|
1058
1058
|
case 4:
|
|
1059
|
-
r(e,
|
|
1059
|
+
r(e, n, t, h, c, R);
|
|
1060
1060
|
break;
|
|
1061
1061
|
default:
|
|
1062
|
-
E(e,
|
|
1062
|
+
E(e, n, t, h, c, R, N);
|
|
1063
1063
|
break;
|
|
1064
1064
|
}
|
|
1065
1065
|
}
|
|
@@ -1101,9 +1101,9 @@ if (!mA)
|
|
|
1101
1101
|
}
|
|
1102
1102
|
this.state = F;
|
|
1103
1103
|
};
|
|
1104
|
-
Q.prototype.simple = function(e,
|
|
1105
|
-
this.process(e, 0, 1,
|
|
1106
|
-
}, Q.prototype.process = function(e,
|
|
1104
|
+
Q.prototype.simple = function(e, n, t) {
|
|
1105
|
+
this.process(e, 0, 1, n, 0, 1, t);
|
|
1106
|
+
}, Q.prototype.process = function(e, n, s, w, F, c, D) {
|
|
1107
1107
|
var s = ~~s, c = ~~c, N = D == "real" ? D : "complex";
|
|
1108
1108
|
if (s < 1)
|
|
1109
1109
|
throw new RangeError("outputStride is outside range, should be positive integer, was `" + s + "'");
|
|
@@ -1114,17 +1114,17 @@ if (!mA)
|
|
|
1114
1114
|
var f = w[F + c * R], y = 0;
|
|
1115
1115
|
this.state.scratch[2 * R] = f, this.state.scratch[2 * R + 1] = y;
|
|
1116
1116
|
}
|
|
1117
|
-
|
|
1117
|
+
C(e, n, s, this.state.scratch, 0, 1, 1, this.state.factors.slice(), this.state);
|
|
1118
1118
|
} else if (w == e) {
|
|
1119
|
-
|
|
1119
|
+
C(this.state.scratch, 0, 1, w, F, 1, c, this.state.factors.slice(), this.state);
|
|
1120
1120
|
for (var R = 0; R < this.state.n; R++) {
|
|
1121
1121
|
var f = this.state.scratch[2 * R], y = this.state.scratch[2 * R + 1];
|
|
1122
|
-
e[2 * (
|
|
1122
|
+
e[2 * (n + s * R)] = f, e[2 * (n + s * R) + 1] = y;
|
|
1123
1123
|
}
|
|
1124
1124
|
} else
|
|
1125
|
-
|
|
1125
|
+
C(
|
|
1126
1126
|
e,
|
|
1127
|
-
|
|
1127
|
+
n,
|
|
1128
1128
|
s,
|
|
1129
1129
|
w,
|
|
1130
1130
|
F,
|
|
@@ -1135,10 +1135,10 @@ if (!mA)
|
|
|
1135
1135
|
);
|
|
1136
1136
|
}, o.complex = Q;
|
|
1137
1137
|
})(mA);
|
|
1138
|
-
const
|
|
1139
|
-
class
|
|
1138
|
+
const BI = mA;
|
|
1139
|
+
class CI {
|
|
1140
1140
|
constructor(I) {
|
|
1141
|
-
this.size = I, this.nockertfft = new
|
|
1141
|
+
this.size = I, this.nockertfft = new BI.complex(I, !1);
|
|
1142
1142
|
}
|
|
1143
1143
|
fft(I) {
|
|
1144
1144
|
const A = new Float32Array(2 * this.size);
|
|
@@ -1166,50 +1166,50 @@ function EI(o, I) {
|
|
|
1166
1166
|
}
|
|
1167
1167
|
function iI(o, I) {
|
|
1168
1168
|
let A = [], r = [], E = 0;
|
|
1169
|
-
for (let
|
|
1170
|
-
E =
|
|
1169
|
+
for (let C = 0; C < X; C++) {
|
|
1170
|
+
E = C * X;
|
|
1171
1171
|
for (let Q = 0; Q < X; Q++)
|
|
1172
1172
|
A[Q] = o[Q + E], r[Q] = I[Q + E];
|
|
1173
1173
|
SA(A, r);
|
|
1174
1174
|
for (let Q = 0; Q < X; Q++)
|
|
1175
1175
|
o[Q + E] = A[Q], I[Q + E] = r[Q];
|
|
1176
1176
|
}
|
|
1177
|
-
for (let
|
|
1177
|
+
for (let C = 0; C < X; C++) {
|
|
1178
1178
|
for (let Q = 0; Q < X; Q++)
|
|
1179
|
-
E =
|
|
1179
|
+
E = C + Q * X, A[Q] = o[E], r[Q] = I[E];
|
|
1180
1180
|
SA(A, r);
|
|
1181
1181
|
for (let Q = 0; Q < X; Q++)
|
|
1182
|
-
E =
|
|
1182
|
+
E = C + Q * X, o[E] = A[Q], I[E] = r[Q];
|
|
1183
1183
|
}
|
|
1184
1184
|
}
|
|
1185
1185
|
function rI(o, I) {
|
|
1186
1186
|
let A = [], r = [], E = 0;
|
|
1187
|
-
for (let
|
|
1188
|
-
E =
|
|
1187
|
+
for (let C = 0; C < X; C++) {
|
|
1188
|
+
E = C * X;
|
|
1189
1189
|
for (let Q = 0; Q < X; Q++)
|
|
1190
1190
|
A[Q] = o[Q + E], r[Q] = I[Q + E];
|
|
1191
1191
|
UA(A, r);
|
|
1192
1192
|
for (let Q = 0; Q < X; Q++)
|
|
1193
1193
|
o[Q + E] = A[Q], I[Q + E] = r[Q];
|
|
1194
1194
|
}
|
|
1195
|
-
for (let
|
|
1195
|
+
for (let C = 0; C < X; C++) {
|
|
1196
1196
|
for (let Q = 0; Q < X; Q++)
|
|
1197
|
-
E =
|
|
1197
|
+
E = C + Q * X, A[Q] = o[E], r[Q] = I[E];
|
|
1198
1198
|
UA(A, r);
|
|
1199
1199
|
for (let Q = 0; Q < X; Q++)
|
|
1200
|
-
E =
|
|
1200
|
+
E = C + Q * X, o[E] = A[Q], I[E] = r[Q];
|
|
1201
1201
|
}
|
|
1202
1202
|
}
|
|
1203
1203
|
function vA(o, I, A) {
|
|
1204
|
-
let r, E,
|
|
1204
|
+
let r, E, C, Q, e, n, t, w, F, h = X >> 2;
|
|
1205
1205
|
for (let D = 0; D < X; D++)
|
|
1206
1206
|
Q = kA[D], D < Q && (e = o[D], o[D] = o[Q], o[Q] = e, e = I[D], I[D] = I[Q], I[Q] = e);
|
|
1207
1207
|
for (let D = 1; D < X; D <<= 1) {
|
|
1208
1208
|
E = 0, r = X / (D << 1);
|
|
1209
1209
|
for (let s = 0; s < D; s++) {
|
|
1210
|
-
|
|
1210
|
+
n = lA[E + h], t = A * lA[E];
|
|
1211
1211
|
for (let c = s; c < X; c += D << 1)
|
|
1212
|
-
|
|
1212
|
+
C = c + D, w = n * o[C] + t * I[C], F = n * I[C] - t * o[C], o[C] = o[c] - w, o[c] += w, I[C] = I[c] - F, I[c] += F;
|
|
1213
1213
|
E += r;
|
|
1214
1214
|
}
|
|
1215
1215
|
}
|
|
@@ -1226,17 +1226,17 @@ function eI() {
|
|
|
1226
1226
|
}
|
|
1227
1227
|
}
|
|
1228
1228
|
function oI() {
|
|
1229
|
-
let o = X >> 1, I = X >> 2, A = X >> 3, r = o + I, E = Math.sin(Math.PI / X),
|
|
1230
|
-
E = 2 *
|
|
1229
|
+
let o = X >> 1, I = X >> 2, A = X >> 3, r = o + I, E = Math.sin(Math.PI / X), C = 2 * E * E, Q = Math.sqrt(C * (2 - C)), e = lA[I] = 1, n = lA[0] = 0;
|
|
1230
|
+
E = 2 * C;
|
|
1231
1231
|
for (let t = 1; t < A; t++)
|
|
1232
|
-
e -=
|
|
1232
|
+
e -= C, C += E * e, n += Q, Q -= E * n, lA[t] = n, lA[I - t] = e;
|
|
1233
1233
|
A !== 0 && (lA[A] = Math.sqrt(0.5));
|
|
1234
1234
|
for (let t = 0; t < I; t++)
|
|
1235
1235
|
lA[o - t] = lA[t];
|
|
1236
1236
|
for (let t = 0; t < r; t++)
|
|
1237
1237
|
lA[t + o] = -lA[t];
|
|
1238
1238
|
}
|
|
1239
|
-
const
|
|
1239
|
+
const nI = {
|
|
1240
1240
|
init: QI,
|
|
1241
1241
|
fft1d: SA,
|
|
1242
1242
|
ifft1d: UA,
|
|
@@ -1246,17 +1246,17 @@ const aI = {
|
|
|
1246
1246
|
ifft: UA,
|
|
1247
1247
|
bt: EI
|
|
1248
1248
|
};
|
|
1249
|
-
class
|
|
1249
|
+
class aI {
|
|
1250
1250
|
constructor(I) {
|
|
1251
|
-
this.size = I, this.FFT_mljs =
|
|
1251
|
+
this.size = I, this.FFT_mljs = nI, this.FFT_mljs.init(I);
|
|
1252
1252
|
}
|
|
1253
1253
|
fft(I) {
|
|
1254
1254
|
const A = new Float32Array(this.size), r = new Float32Array(this.size), E = new Float32Array(2 * this.size);
|
|
1255
|
-
for (var
|
|
1256
|
-
A[
|
|
1255
|
+
for (var C = 0; C < this.size; ++C)
|
|
1256
|
+
A[C] = I[C * 2], r[C] = I[C * 2 + 1];
|
|
1257
1257
|
this.FFT_mljs.fft(A, r);
|
|
1258
|
-
for (var
|
|
1259
|
-
E[
|
|
1258
|
+
for (var C = 0; C < this.size; ++C)
|
|
1259
|
+
E[C * 2] = A[C], E[C * 2 + 1] = r[C];
|
|
1260
1260
|
return E;
|
|
1261
1261
|
}
|
|
1262
1262
|
}
|
|
@@ -1340,7 +1340,7 @@ async function DI() {
|
|
|
1340
1340
|
);
|
|
1341
1341
|
}
|
|
1342
1342
|
async function hI() {
|
|
1343
|
-
let o = "Other", I = "Unknown", A = "Other", r = "Unknown", E = navigator.userAgentData,
|
|
1343
|
+
let o = "Other", I = "Unknown", A = "Other", r = "Unknown", E = navigator.userAgentData, C = navigator.userAgent;
|
|
1344
1344
|
try {
|
|
1345
1345
|
if (E) {
|
|
1346
1346
|
const Q = await E.getHighEntropyValues([
|
|
@@ -1350,16 +1350,16 @@ async function hI() {
|
|
|
1350
1350
|
"platformVersion",
|
|
1351
1351
|
"uaFullVersion"
|
|
1352
1352
|
]), e = E.brands.find(
|
|
1353
|
-
(
|
|
1353
|
+
(n) => ["Microsoft Edge", "Google Chrome", "Opera"].includes(n.brand)
|
|
1354
1354
|
);
|
|
1355
1355
|
o = e ? e.brand : "Other", I = e ? `v${e.version}` : "Unknown", A = Q.platform ? Q.platform : "Other", r = Q.platformVersion ? `v${Q.platformVersion}` : "Unknown";
|
|
1356
1356
|
}
|
|
1357
1357
|
if (o === "Other" || A === "Other") {
|
|
1358
|
-
const Q =
|
|
1358
|
+
const Q = C.split(" "), e = Q[Q.length - 1], n = /Firefox/.test(e), t = /Safari/.test(e) && !/CriOS/.test(e) && !/Chrome/.test(e), w = /CriOS/.test(e) || /Chrome/.test(e), F = /Edg/.test(e), h = /OPR/.test(e), D = [
|
|
1359
1359
|
{
|
|
1360
1360
|
name: "Mozilla Firefox",
|
|
1361
1361
|
regex: /Firefox\/(\d+\.\d+)/,
|
|
1362
|
-
flag:
|
|
1362
|
+
flag: n
|
|
1363
1363
|
},
|
|
1364
1364
|
{ name: "Safari", regex: /Version\/(\d+\.\d+)/, flag: t },
|
|
1365
1365
|
{
|
|
@@ -1377,7 +1377,7 @@ async function hI() {
|
|
|
1377
1377
|
I = y ? y[1] : "Unknown";
|
|
1378
1378
|
break;
|
|
1379
1379
|
}
|
|
1380
|
-
const s =
|
|
1380
|
+
const s = C.match(/\(([^)]+)\)/), c = s ? s[1].split("; ") : [];
|
|
1381
1381
|
console.log(s), console.log(c);
|
|
1382
1382
|
const N = {
|
|
1383
1383
|
"10.0": "10",
|
|
@@ -1444,124 +1444,124 @@ var cI = (() => {
|
|
|
1444
1444
|
var o = import.meta.url;
|
|
1445
1445
|
return (function(I = {}) {
|
|
1446
1446
|
var A = I, r, E;
|
|
1447
|
-
A.ready = new Promise((
|
|
1448
|
-
r =
|
|
1447
|
+
A.ready = new Promise((B, g) => {
|
|
1448
|
+
r = B, E = g;
|
|
1449
1449
|
});
|
|
1450
|
-
var
|
|
1451
|
-
function e(
|
|
1452
|
-
return A.locateFile ? A.locateFile(
|
|
1450
|
+
var C = Object.assign({}, A), Q = "";
|
|
1451
|
+
function e(B) {
|
|
1452
|
+
return A.locateFile ? A.locateFile(B, Q) : Q + B;
|
|
1453
1453
|
}
|
|
1454
1454
|
typeof document < "u" && document.currentScript && (Q = document.currentScript.src), o && (Q = o), Q.indexOf("blob:") !== 0 ? Q = Q.substr(0, Q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : Q = "", A.print || console.log.bind(console);
|
|
1455
|
-
var
|
|
1456
|
-
Object.assign(A,
|
|
1455
|
+
var n = A.printErr || console.error.bind(console);
|
|
1456
|
+
Object.assign(A, C), C = null, A.arguments && A.arguments, A.thisProgram && A.thisProgram, A.quit && A.quit;
|
|
1457
1457
|
var t;
|
|
1458
1458
|
A.wasmBinary && (t = A.wasmBinary), A.noExitRuntime, typeof WebAssembly != "object" && J("no native wasm support detected");
|
|
1459
1459
|
var w, F, h = !1, D, s;
|
|
1460
1460
|
function c() {
|
|
1461
|
-
var
|
|
1462
|
-
A.HEAP8 = D = new Int8Array(
|
|
1461
|
+
var B = w.buffer;
|
|
1462
|
+
A.HEAP8 = D = new Int8Array(B), A.HEAP16 = new Int16Array(B), A.HEAP32 = new Int32Array(B), A.HEAPU8 = s = new Uint8Array(B), A.HEAPU16 = new Uint16Array(B), A.HEAPU32 = new Uint32Array(B), A.HEAPF32 = new Float32Array(B), A.HEAPF64 = new Float64Array(B);
|
|
1463
1463
|
}
|
|
1464
1464
|
var N = [], R = [], f = [];
|
|
1465
1465
|
function y() {
|
|
1466
1466
|
if (A.preRun)
|
|
1467
1467
|
for (typeof A.preRun == "function" && (A.preRun = [A.preRun]); A.preRun.length; )
|
|
1468
1468
|
v(A.preRun.shift());
|
|
1469
|
-
|
|
1469
|
+
x(N);
|
|
1470
1470
|
}
|
|
1471
1471
|
function G() {
|
|
1472
|
-
|
|
1472
|
+
x(R);
|
|
1473
1473
|
}
|
|
1474
1474
|
function H() {
|
|
1475
1475
|
if (A.postRun)
|
|
1476
1476
|
for (typeof A.postRun == "function" && (A.postRun = [A.postRun]); A.postRun.length; )
|
|
1477
1477
|
P(A.postRun.shift());
|
|
1478
|
-
|
|
1478
|
+
x(f);
|
|
1479
1479
|
}
|
|
1480
|
-
function v(
|
|
1481
|
-
N.unshift(
|
|
1480
|
+
function v(B) {
|
|
1481
|
+
N.unshift(B);
|
|
1482
1482
|
}
|
|
1483
|
-
function p(
|
|
1484
|
-
R.unshift(
|
|
1483
|
+
function p(B) {
|
|
1484
|
+
R.unshift(B);
|
|
1485
1485
|
}
|
|
1486
|
-
function P(
|
|
1487
|
-
f.unshift(
|
|
1486
|
+
function P(B) {
|
|
1487
|
+
f.unshift(B);
|
|
1488
1488
|
}
|
|
1489
1489
|
var k = 0, U = null;
|
|
1490
|
-
function q(
|
|
1490
|
+
function q(B) {
|
|
1491
1491
|
k++, A.monitorRunDependencies && A.monitorRunDependencies(k);
|
|
1492
1492
|
}
|
|
1493
|
-
function K(
|
|
1493
|
+
function K(B) {
|
|
1494
1494
|
if (k--, A.monitorRunDependencies && A.monitorRunDependencies(k), k == 0 && U) {
|
|
1495
1495
|
var g = U;
|
|
1496
1496
|
U = null, g();
|
|
1497
1497
|
}
|
|
1498
1498
|
}
|
|
1499
|
-
function J(
|
|
1500
|
-
A.onAbort && A.onAbort(
|
|
1501
|
-
var g = new WebAssembly.RuntimeError(
|
|
1499
|
+
function J(B) {
|
|
1500
|
+
A.onAbort && A.onAbort(B), B = "Aborted(" + B + ")", n(B), h = !0, B += ". Build with -sASSERTIONS for more info.";
|
|
1501
|
+
var g = new WebAssembly.RuntimeError(B);
|
|
1502
1502
|
throw E(g), g;
|
|
1503
1503
|
}
|
|
1504
1504
|
var u = "data:application/octet-stream;base64,";
|
|
1505
|
-
function L(
|
|
1506
|
-
return
|
|
1505
|
+
function L(B) {
|
|
1506
|
+
return B.startsWith(u);
|
|
1507
1507
|
}
|
|
1508
1508
|
var S;
|
|
1509
1509
|
S = "data:application/octet-stream;base64,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", L(S) || (S = e(S));
|
|
1510
|
-
function
|
|
1511
|
-
if (
|
|
1510
|
+
function W(B) {
|
|
1511
|
+
if (B == S && t)
|
|
1512
1512
|
return new Uint8Array(t);
|
|
1513
|
-
var g = cA(
|
|
1513
|
+
var g = cA(B);
|
|
1514
1514
|
if (g)
|
|
1515
1515
|
return g;
|
|
1516
1516
|
throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
|
|
1517
1517
|
}
|
|
1518
|
-
function
|
|
1519
|
-
var i,
|
|
1520
|
-
i = new WebAssembly.Module(
|
|
1518
|
+
function O(B, g) {
|
|
1519
|
+
var i, a = W(B);
|
|
1520
|
+
i = new WebAssembly.Module(a);
|
|
1521
1521
|
var d = new WebAssembly.Instance(i, g);
|
|
1522
1522
|
return [d, i];
|
|
1523
1523
|
}
|
|
1524
|
-
function
|
|
1525
|
-
var
|
|
1526
|
-
function g(
|
|
1527
|
-
var Y =
|
|
1524
|
+
function Z() {
|
|
1525
|
+
var B = { a: FA };
|
|
1526
|
+
function g(a, d) {
|
|
1527
|
+
var Y = a.exports;
|
|
1528
1528
|
return F = Y, w = F.b, c(), F.i, p(F.c), K(), Y;
|
|
1529
1529
|
}
|
|
1530
1530
|
if (q(), A.instantiateWasm)
|
|
1531
1531
|
try {
|
|
1532
|
-
return A.instantiateWasm(
|
|
1533
|
-
} catch (
|
|
1534
|
-
|
|
1532
|
+
return A.instantiateWasm(B, g);
|
|
1533
|
+
} catch (a) {
|
|
1534
|
+
n("Module.instantiateWasm callback failed with error: " + a), E(a);
|
|
1535
1535
|
}
|
|
1536
|
-
var i =
|
|
1536
|
+
var i = O(S, B);
|
|
1537
1537
|
return g(i[0]);
|
|
1538
1538
|
}
|
|
1539
|
-
var
|
|
1540
|
-
for (;
|
|
1541
|
-
|
|
1542
|
-
}, AA = (
|
|
1539
|
+
var x = (B) => {
|
|
1540
|
+
for (; B.length > 0; )
|
|
1541
|
+
B.shift()(A);
|
|
1542
|
+
}, AA = (B) => {
|
|
1543
1543
|
J("OOM");
|
|
1544
|
-
}, IA = (
|
|
1544
|
+
}, IA = (B) => {
|
|
1545
1545
|
s.length, AA();
|
|
1546
1546
|
};
|
|
1547
|
-
function _(
|
|
1548
|
-
var g = A["_" +
|
|
1547
|
+
function _(B) {
|
|
1548
|
+
var g = A["_" + B];
|
|
1549
1549
|
return g;
|
|
1550
1550
|
}
|
|
1551
|
-
var $ = (
|
|
1552
|
-
D.set(
|
|
1553
|
-
}, gA = (
|
|
1554
|
-
for (var g = 0, i = 0; i <
|
|
1555
|
-
var
|
|
1556
|
-
|
|
1551
|
+
var $ = (B, g) => {
|
|
1552
|
+
D.set(B, g);
|
|
1553
|
+
}, gA = (B) => {
|
|
1554
|
+
for (var g = 0, i = 0; i < B.length; ++i) {
|
|
1555
|
+
var a = B.charCodeAt(i);
|
|
1556
|
+
a <= 127 ? g++ : a <= 2047 ? g += 2 : a >= 55296 && a <= 57343 ? (g += 4, ++i) : g += 3;
|
|
1557
1557
|
}
|
|
1558
1558
|
return g;
|
|
1559
|
-
}, iA = (
|
|
1560
|
-
if (!(
|
|
1561
|
-
for (var d = i, Y = i +
|
|
1562
|
-
var l =
|
|
1559
|
+
}, iA = (B, g, i, a) => {
|
|
1560
|
+
if (!(a > 0)) return 0;
|
|
1561
|
+
for (var d = i, Y = i + a - 1, M = 0; M < B.length; ++M) {
|
|
1562
|
+
var l = B.charCodeAt(M);
|
|
1563
1563
|
if (l >= 55296 && l <= 57343) {
|
|
1564
|
-
var m =
|
|
1564
|
+
var m = B.charCodeAt(++M);
|
|
1565
1565
|
l = 65536 + ((l & 1023) << 10) | m & 1023;
|
|
1566
1566
|
}
|
|
1567
1567
|
if (l <= 127) {
|
|
@@ -1579,26 +1579,26 @@ var cI = (() => {
|
|
|
1579
1579
|
}
|
|
1580
1580
|
}
|
|
1581
1581
|
return g[i] = 0, i - d;
|
|
1582
|
-
},
|
|
1583
|
-
var g = gA(
|
|
1584
|
-
return
|
|
1585
|
-
},
|
|
1586
|
-
for (var
|
|
1587
|
-
if (d - g > 16 &&
|
|
1588
|
-
return
|
|
1582
|
+
}, BA = (B, g, i) => iA(B, s, g, i), QA = (B) => {
|
|
1583
|
+
var g = gA(B) + 1, i = aA(g);
|
|
1584
|
+
return BA(B, i, g), i;
|
|
1585
|
+
}, CA = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, oA = (B, g, i) => {
|
|
1586
|
+
for (var a = g + i, d = g; B[d] && !(d >= a); ) ++d;
|
|
1587
|
+
if (d - g > 16 && B.buffer && CA)
|
|
1588
|
+
return CA.decode(B.subarray(g, d));
|
|
1589
1589
|
for (var Y = ""; g < d; ) {
|
|
1590
|
-
var M =
|
|
1590
|
+
var M = B[g++];
|
|
1591
1591
|
if (!(M & 128)) {
|
|
1592
1592
|
Y += String.fromCharCode(M);
|
|
1593
1593
|
continue;
|
|
1594
1594
|
}
|
|
1595
|
-
var l =
|
|
1595
|
+
var l = B[g++] & 63;
|
|
1596
1596
|
if ((M & 224) == 192) {
|
|
1597
1597
|
Y += String.fromCharCode((M & 31) << 6 | l);
|
|
1598
1598
|
continue;
|
|
1599
1599
|
}
|
|
1600
|
-
var m =
|
|
1601
|
-
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 |
|
|
1600
|
+
var m = B[g++] & 63;
|
|
1601
|
+
if ((M & 240) == 224 ? M = (M & 15) << 12 | l << 6 | m : M = (M & 7) << 18 | l << 12 | m << 6 | B[g++] & 63, M < 65536)
|
|
1602
1602
|
Y += String.fromCharCode(M);
|
|
1603
1603
|
else {
|
|
1604
1604
|
var V = M - 65536;
|
|
@@ -1606,65 +1606,65 @@ var cI = (() => {
|
|
|
1606
1606
|
}
|
|
1607
1607
|
}
|
|
1608
1608
|
return Y;
|
|
1609
|
-
}, eA = (
|
|
1609
|
+
}, eA = (B, g) => B ? oA(s, B, g) : "", rA = function(B, g, i, a, d) {
|
|
1610
1610
|
var Y = { string: (b) => {
|
|
1611
1611
|
var z = 0;
|
|
1612
1612
|
return b != null && b !== 0 && (z = QA(b)), z;
|
|
1613
1613
|
}, array: (b) => {
|
|
1614
|
-
var z =
|
|
1614
|
+
var z = aA(b.length);
|
|
1615
1615
|
return $(b, z), z;
|
|
1616
1616
|
} };
|
|
1617
1617
|
function M(b) {
|
|
1618
1618
|
return g === "string" ? eA(b) : g === "boolean" ? !!b : b;
|
|
1619
1619
|
}
|
|
1620
|
-
var l = _(
|
|
1621
|
-
if (
|
|
1622
|
-
for (var j = 0; j <
|
|
1620
|
+
var l = _(B), m = [], V = 0;
|
|
1621
|
+
if (a)
|
|
1622
|
+
for (var j = 0; j < a.length; j++) {
|
|
1623
1623
|
var tA = Y[i[j]];
|
|
1624
|
-
tA ? (V === 0 && (V = EA()), m[j] = tA(
|
|
1624
|
+
tA ? (V === 0 && (V = EA()), m[j] = tA(a[j])) : m[j] = a[j];
|
|
1625
1625
|
}
|
|
1626
1626
|
var wA = l.apply(null, m);
|
|
1627
1627
|
function yA(b) {
|
|
1628
1628
|
return V !== 0 && RA(V), M(b);
|
|
1629
1629
|
}
|
|
1630
1630
|
return wA = yA(wA), wA;
|
|
1631
|
-
}, sA = function(
|
|
1631
|
+
}, sA = function(B, g, i, a) {
|
|
1632
1632
|
var d = !i || i.every((M) => M === "number" || M === "boolean"), Y = g !== "string";
|
|
1633
|
-
return Y && d && !
|
|
1634
|
-
return rA(
|
|
1633
|
+
return Y && d && !a ? _(B) : function() {
|
|
1634
|
+
return rA(B, g, i, arguments);
|
|
1635
1635
|
};
|
|
1636
|
-
}, FA = { a: IA }, T =
|
|
1636
|
+
}, FA = { a: IA }, T = Z();
|
|
1637
1637
|
T.c, A._kiss_fft_free = T.d, A._free = T.e, A._kiss_fft_alloc = T.f, A._malloc = T.g, A._kiss_fft = T.h, T.__errno_location;
|
|
1638
|
-
var EA = T.j, RA = T.k,
|
|
1639
|
-
function DA(
|
|
1638
|
+
var EA = T.j, RA = T.k, aA = T.l;
|
|
1639
|
+
function DA(B) {
|
|
1640
1640
|
try {
|
|
1641
|
-
for (var g = atob(
|
|
1642
|
-
i[
|
|
1641
|
+
for (var g = atob(B), i = new Uint8Array(g.length), a = 0; a < g.length; ++a)
|
|
1642
|
+
i[a] = g.charCodeAt(a);
|
|
1643
1643
|
return i;
|
|
1644
1644
|
} catch {
|
|
1645
1645
|
throw new Error("Converting base64 string to bytes failed.");
|
|
1646
1646
|
}
|
|
1647
1647
|
}
|
|
1648
|
-
function cA(
|
|
1649
|
-
if (L(
|
|
1650
|
-
return DA(
|
|
1648
|
+
function cA(B) {
|
|
1649
|
+
if (L(B))
|
|
1650
|
+
return DA(B.slice(u.length));
|
|
1651
1651
|
}
|
|
1652
1652
|
A.ccall = rA, A.cwrap = sA;
|
|
1653
|
-
var
|
|
1654
|
-
U = function
|
|
1655
|
-
|
|
1653
|
+
var nA;
|
|
1654
|
+
U = function B() {
|
|
1655
|
+
nA || hA(), nA || (U = B);
|
|
1656
1656
|
};
|
|
1657
1657
|
function hA() {
|
|
1658
1658
|
if (k > 0 || (y(), k > 0))
|
|
1659
1659
|
return;
|
|
1660
|
-
function
|
|
1661
|
-
|
|
1660
|
+
function B() {
|
|
1661
|
+
nA || (nA = !0, A.calledRun = !0, !h && (G(), r(A), A.onRuntimeInitialized && A.onRuntimeInitialized(), H()));
|
|
1662
1662
|
}
|
|
1663
1663
|
A.setStatus ? (A.setStatus("Running..."), setTimeout(function() {
|
|
1664
1664
|
setTimeout(function() {
|
|
1665
1665
|
A.setStatus("");
|
|
1666
|
-
}, 1),
|
|
1667
|
-
}, 1)) :
|
|
1666
|
+
}, 1), B();
|
|
1667
|
+
}, 1)) : B();
|
|
1668
1668
|
}
|
|
1669
1669
|
if (A.preInit)
|
|
1670
1670
|
for (typeof A.preInit == "function" && (A.preInit = [A.preInit]); A.preInit.length > 0; )
|
|
@@ -1706,51 +1706,51 @@ class fI {
|
|
|
1706
1706
|
function HA(o) {
|
|
1707
1707
|
this.size = o, this._csize = o << 1;
|
|
1708
1708
|
for (var I = new Array(this.size * 2), A = 0; A < I.length; A += 2) {
|
|
1709
|
-
const
|
|
1710
|
-
I[A] = Math.cos(
|
|
1709
|
+
const n = Math.PI * A / this.size;
|
|
1710
|
+
I[A] = Math.cos(n), I[A + 1] = -Math.sin(n);
|
|
1711
1711
|
}
|
|
1712
1712
|
this.table = I;
|
|
1713
1713
|
for (var r = 0, E = 1; this.size > E; E <<= 1) r++;
|
|
1714
1714
|
this._width = r % 2 === 0 ? r - 1 : r, this._bitrev = new Array(1 << this._width);
|
|
1715
|
-
for (var
|
|
1716
|
-
this._bitrev[
|
|
1715
|
+
for (var C = 0; C < this._bitrev.length; C++) {
|
|
1716
|
+
this._bitrev[C] = 0;
|
|
1717
1717
|
for (var Q = 0; Q < this._width; Q += 2) {
|
|
1718
1718
|
var e = this._width - Q - 2;
|
|
1719
|
-
this._bitrev[
|
|
1719
|
+
this._bitrev[C] |= (C >>> Q & 3) << e;
|
|
1720
1720
|
}
|
|
1721
1721
|
}
|
|
1722
1722
|
this._data = null;
|
|
1723
1723
|
}
|
|
1724
1724
|
HA.prototype.fft = function(I) {
|
|
1725
1725
|
this._data = I, this._out = new Float32Array(2 * this.size);
|
|
1726
|
-
var A = this._csize, r = 1 << this._width, E = A / r << 1,
|
|
1726
|
+
var A = this._csize, r = 1 << this._width, E = A / r << 1, C, Q, e = this._bitrev;
|
|
1727
1727
|
if (E === 4)
|
|
1728
|
-
for (
|
|
1728
|
+
for (C = 0, Q = 0; C < A; C += E, Q++) {
|
|
1729
1729
|
const h = e[Q];
|
|
1730
|
-
this._singleTransform2(
|
|
1730
|
+
this._singleTransform2(C, h, r);
|
|
1731
1731
|
}
|
|
1732
1732
|
else
|
|
1733
|
-
for (
|
|
1733
|
+
for (C = 0, Q = 0; C < A; C += E, Q++) {
|
|
1734
1734
|
const h = e[Q];
|
|
1735
|
-
this._singleTransform4(
|
|
1735
|
+
this._singleTransform4(C, h, r);
|
|
1736
1736
|
}
|
|
1737
1737
|
for (r >>= 2; r >= 2; r >>= 2) {
|
|
1738
1738
|
E = A / r << 1;
|
|
1739
|
-
var
|
|
1740
|
-
for (
|
|
1741
|
-
for (var t =
|
|
1742
|
-
const h = w, D = h +
|
|
1743
|
-
this._out[h] = IA + iA, this._out[h + 1] = _ +
|
|
1739
|
+
var n = E >>> 2;
|
|
1740
|
+
for (C = 0; C < A; C += E)
|
|
1741
|
+
for (var t = C + n, w = C, F = 0; w < t; w += 2, F += r) {
|
|
1742
|
+
const h = w, D = h + n, s = D + n, c = s + n, N = this._out[h], R = this._out[h + 1], f = this._out[D], y = this._out[D + 1], G = this._out[s], H = this._out[s + 1], v = this._out[c], p = this._out[c + 1], P = N, k = R, U = this.table[F], q = this.table[F + 1], K = f * U - y * q, J = f * q + y * U, u = this.table[2 * F], L = this.table[2 * F + 1], S = G * u - H * L, W = G * L + H * u, O = this.table[3 * F], Z = this.table[3 * F + 1], x = v * O - p * Z, AA = v * Z + p * O, IA = P + S, _ = k + W, $ = P - S, gA = k - W, iA = K + x, BA = J + AA, QA = K - x, CA = J - AA;
|
|
1743
|
+
this._out[h] = IA + iA, this._out[h + 1] = _ + BA, this._out[D] = $ + CA, this._out[D + 1] = gA - QA, this._out[s] = IA - iA, this._out[s + 1] = _ - BA, this._out[c] = $ - CA, this._out[c + 1] = gA + QA;
|
|
1744
1744
|
}
|
|
1745
1745
|
}
|
|
1746
1746
|
return this._out;
|
|
1747
1747
|
};
|
|
1748
1748
|
HA.prototype._singleTransform2 = function(I, A, r) {
|
|
1749
|
-
const E = this._data[A],
|
|
1750
|
-
this._out[I] = E + Q, this._out[I + 1] =
|
|
1749
|
+
const E = this._data[A], C = this._data[A + 1], Q = this._data[A + r], e = this._data[A + r + 1];
|
|
1750
|
+
this._out[I] = E + Q, this._out[I + 1] = C + e, this._out[I + 2] = E - Q, this._out[I + 3] = C - e;
|
|
1751
1751
|
};
|
|
1752
1752
|
HA.prototype._singleTransform4 = function(I, A, r) {
|
|
1753
|
-
const E = r * 2,
|
|
1753
|
+
const E = r * 2, C = r * 3, Q = this._data[A], e = this._data[A + 1], n = this._data[A + r], t = this._data[A + r + 1], w = this._data[A + E], F = this._data[A + E + 1], h = this._data[A + C], D = this._data[A + C + 1], s = Q + w, c = e + F, N = Q - w, R = e - F, f = n + h, y = t + D, G = n - h, H = t - D;
|
|
1754
1754
|
this._out[I] = s + f, this._out[I + 1] = c + y, this._out[I + 2] = N + H, this._out[I + 3] = R - G, this._out[I + 4] = s - f, this._out[I + 5] = c - y, this._out[I + 6] = N - H, this._out[I + 7] = R + G;
|
|
1755
1755
|
};
|
|
1756
1756
|
const qA = [
|
|
@@ -1808,19 +1808,19 @@ class FI {
|
|
|
1808
1808
|
setSubLibrary(I) {
|
|
1809
1809
|
switch (I) {
|
|
1810
1810
|
case "nayukiJavascript":
|
|
1811
|
-
this.fftLibrary = new
|
|
1811
|
+
this.fftLibrary = new ZA(this.size);
|
|
1812
1812
|
break;
|
|
1813
1813
|
case "nayuki3Wasm":
|
|
1814
1814
|
this.fftLibrary = new gI(this.size);
|
|
1815
1815
|
break;
|
|
1816
1816
|
case "kissWasm":
|
|
1817
|
-
this.fftLibrary = new
|
|
1817
|
+
this.fftLibrary = new WA(this.size);
|
|
1818
1818
|
break;
|
|
1819
1819
|
case "crossWasm":
|
|
1820
1820
|
this.fftLibrary = new XA(this.size), this.size > 16384 && (this.fftLibrary = new LA(this.size));
|
|
1821
1821
|
break;
|
|
1822
1822
|
case "nockertJavascript":
|
|
1823
|
-
this.fftLibrary = new
|
|
1823
|
+
this.fftLibrary = new CI(this.size);
|
|
1824
1824
|
break;
|
|
1825
1825
|
//case "dntjJavascript":
|
|
1826
1826
|
// this.fftLibrary = new DntjWebFftWrapperJavascript(this.size);
|
|
@@ -1829,7 +1829,7 @@ class FI {
|
|
|
1829
1829
|
this.fftLibrary = new LA(this.size);
|
|
1830
1830
|
break;
|
|
1831
1831
|
case "mljsJavascript":
|
|
1832
|
-
this.fftLibrary = new
|
|
1832
|
+
this.fftLibrary = new aI(this.size);
|
|
1833
1833
|
break;
|
|
1834
1834
|
case "kissfftmodifiedWasm":
|
|
1835
1835
|
this.fftLibrary = new fI(this.size);
|
|
@@ -1856,11 +1856,11 @@ class FI {
|
|
|
1856
1856
|
var { outputArr: A, fftLibrary: r, size: E } = this;
|
|
1857
1857
|
if (I.length !== E)
|
|
1858
1858
|
throw new Error("Input array length must be == size");
|
|
1859
|
-
const
|
|
1860
|
-
|
|
1859
|
+
const C = new Float32Array(2 * E);
|
|
1860
|
+
C.fill(0);
|
|
1861
1861
|
for (let Q = 0; Q < E; Q++)
|
|
1862
|
-
|
|
1863
|
-
return A = r.fft(
|
|
1862
|
+
C[2 * Q] = I[Q];
|
|
1863
|
+
return A = r.fft(C), A.slice(E, E * 2);
|
|
1864
1864
|
}
|
|
1865
1865
|
// takes in an array of arrays each of length 2*size. the outter array length must also be a power of two. only supports complex
|
|
1866
1866
|
fft2d(I) {
|
|
@@ -1875,21 +1875,21 @@ class FI {
|
|
|
1875
1875
|
for (let e = 0; e < r; e++)
|
|
1876
1876
|
this.outputArr = this.fft(I[e]), E.push(this.outputArr);
|
|
1877
1877
|
this.dispose(), this.size = r, this.setSubLibrary(this.subLibrary);
|
|
1878
|
-
let
|
|
1878
|
+
let C = [];
|
|
1879
1879
|
for (let e = 0; e < A; e++) {
|
|
1880
|
-
const
|
|
1881
|
-
|
|
1880
|
+
const n = new Float32Array(2 * r);
|
|
1881
|
+
n.fill(0);
|
|
1882
1882
|
for (let w = 0; w < r; w++)
|
|
1883
|
-
|
|
1883
|
+
n[2 * w] = E[w][2 * e], n[2 * w + 1] = E[w][2 * e + 1];
|
|
1884
1884
|
let t = new Float32Array(2 * r);
|
|
1885
|
-
t = this.fft(
|
|
1885
|
+
t = this.fft(n), C.push(t);
|
|
1886
1886
|
}
|
|
1887
1887
|
let Q = [];
|
|
1888
1888
|
for (let e = 0; e < r; e++) {
|
|
1889
|
-
let
|
|
1889
|
+
let n = new Float32Array(2 * A);
|
|
1890
1890
|
for (let t = 0; t < A; t++)
|
|
1891
|
-
|
|
1892
|
-
Q.push(
|
|
1891
|
+
n[2 * t] = C[t][2 * e], n[2 * t + 1] = C[t][2 * e + 1];
|
|
1892
|
+
Q.push(n);
|
|
1893
1893
|
}
|
|
1894
1894
|
return this.dispose(), this.size = A, this.setSubLibrary(this.subLibrary), Q;
|
|
1895
1895
|
}
|
|
@@ -1897,12 +1897,12 @@ class FI {
|
|
|
1897
1897
|
if (!A && this.getCurrentProfile())
|
|
1898
1898
|
return this.getCurrentProfile();
|
|
1899
1899
|
const E = performance.now();
|
|
1900
|
-
let
|
|
1901
|
-
r ?
|
|
1900
|
+
let C;
|
|
1901
|
+
r ? C = this.availableSubLibrariesQuick() : C = this.availableSubLibraries();
|
|
1902
1902
|
let Q = [];
|
|
1903
|
-
const e = I /
|
|
1904
|
-
for (let F = 0; F <
|
|
1905
|
-
this.setSubLibrary(
|
|
1903
|
+
const e = I / C.length / 2;
|
|
1904
|
+
for (let F = 0; F < C.length; F++) {
|
|
1905
|
+
this.setSubLibrary(C[F]);
|
|
1906
1906
|
const h = new Float32Array(2 * this.size);
|
|
1907
1907
|
for (let c = 0; c < this.size; c++)
|
|
1908
1908
|
h[2 * c] = Math.random() - 0.5, h[2 * c + 1] = Math.random() - 0.5;
|
|
@@ -1915,13 +1915,13 @@ class FI {
|
|
|
1915
1915
|
this.fft(h), s++;
|
|
1916
1916
|
Q.push(1e3 * s / (performance.now() - D)), this.dispose();
|
|
1917
1917
|
}
|
|
1918
|
-
const
|
|
1918
|
+
const n = (performance.now() - E) / 1e3;
|
|
1919
1919
|
let t = Q.indexOf(Math.max(...Q));
|
|
1920
1920
|
const w = {
|
|
1921
1921
|
fftsPerSecond: Q,
|
|
1922
|
-
subLibraries:
|
|
1923
|
-
totalElapsed:
|
|
1924
|
-
fastestSubLibrary:
|
|
1922
|
+
subLibraries: C,
|
|
1923
|
+
totalElapsed: n,
|
|
1924
|
+
fastestSubLibrary: C[t]
|
|
1925
1925
|
};
|
|
1926
1926
|
return console.log("Setting sublibrary to", w.fastestSubLibrary), this.setSubLibrary(w.fastestSubLibrary), typeof localStorage < "u" && localStorage.setItem("webfftProfile", JSON.stringify(w)), w;
|
|
1927
1927
|
}
|
|
@@ -1944,13 +1944,13 @@ class RI {
|
|
|
1944
1944
|
return this.fftSize;
|
|
1945
1945
|
}
|
|
1946
1946
|
compute(I, A, r) {
|
|
1947
|
-
const E = this.fftSize,
|
|
1947
|
+
const E = this.fftSize, C = this.complexIn;
|
|
1948
1948
|
for (let h = 0; h < E; h++) {
|
|
1949
1949
|
const D = h << 1;
|
|
1950
|
-
|
|
1950
|
+
C[D] = I[h], C[D + 1] = 0;
|
|
1951
1951
|
}
|
|
1952
|
-
const Q = this.fft.fft(
|
|
1953
|
-
for (let h = 0; h <
|
|
1952
|
+
const Q = this.fft.fft(C), e = this.spectrum, n = e.length, t = 1 / (r - A), w = this.EPS, F = this.INV_LN10;
|
|
1953
|
+
for (let h = 0; h < n; h++) {
|
|
1954
1954
|
const D = h << 1, s = Q[D], c = Q[D + 1], N = s * s + c * c + w, R = (10 * Math.log(N) * F - A) * t;
|
|
1955
1955
|
e[h] = R < 0 ? 0 : R > 1 ? 1 : R;
|
|
1956
1956
|
}
|
|
@@ -1988,41 +1988,41 @@ class lI {
|
|
|
1988
1988
|
return this.data ? this.data.length / this.config.sampleRate : 0;
|
|
1989
1989
|
}
|
|
1990
1990
|
}
|
|
1991
|
-
const NI = (o, I) => {
|
|
1991
|
+
const NI = "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", yI = (o, I) => {
|
|
1992
1992
|
const A = new Float32Array(o);
|
|
1993
1993
|
if (I === "rectangular")
|
|
1994
1994
|
return A.fill(1);
|
|
1995
1995
|
const r = 2 * Math.PI, E = o - 1;
|
|
1996
1996
|
switch (I) {
|
|
1997
1997
|
case "hann":
|
|
1998
|
-
for (let
|
|
1999
|
-
A[
|
|
1998
|
+
for (let C = 0; C < o; C++)
|
|
1999
|
+
A[C] = 0.5 * (1 - Math.cos(r * C / E));
|
|
2000
2000
|
break;
|
|
2001
2001
|
case "hamming":
|
|
2002
|
-
for (let
|
|
2003
|
-
A[
|
|
2002
|
+
for (let C = 0; C < o; C++)
|
|
2003
|
+
A[C] = 0.54 - 0.46 * Math.cos(r * C / E);
|
|
2004
2004
|
break;
|
|
2005
2005
|
case "blackman":
|
|
2006
|
-
for (let
|
|
2007
|
-
const Q = r *
|
|
2008
|
-
A[
|
|
2006
|
+
for (let C = 0; C < o; C++) {
|
|
2007
|
+
const Q = r * C / E;
|
|
2008
|
+
A[C] = 0.42 - 0.5 * Math.cos(Q) + 0.08 * Math.cos(2 * Q);
|
|
2009
2009
|
}
|
|
2010
2010
|
break;
|
|
2011
2011
|
}
|
|
2012
2012
|
return A;
|
|
2013
2013
|
};
|
|
2014
|
-
class
|
|
2014
|
+
class MI {
|
|
2015
2015
|
constructor(I, A, r, E) {
|
|
2016
2016
|
this.image = null, this.isProcessing = !1, this.id = I, this.startIndex = A, this.endIndex = r, this.startTime = A / E, this.endTime = r / E;
|
|
2017
2017
|
}
|
|
2018
2018
|
}
|
|
2019
|
-
class
|
|
2019
|
+
class GI {
|
|
2020
2020
|
constructor(I) {
|
|
2021
2021
|
let A;
|
|
2022
|
-
I.fftExecutor ? (A = I.fftExecutor.size(), this.fft = I.fftExecutor) : (A = I.fftSize ?? 1024, this.fft = new RI(A)), this.windowBuffer =
|
|
2022
|
+
I.fftExecutor ? (A = I.fftExecutor.size(), this.fft = I.fftExecutor) : (A = I.fftSize ?? 1024, this.fft = new RI(A)), this.windowBuffer = yI(I.windowSize, I.windowType), this.inputBuf = new Float32Array(A);
|
|
2023
2023
|
}
|
|
2024
|
-
process(I, A, r, E,
|
|
2025
|
-
const { windowSize: Q, minDb: e, maxDb:
|
|
2024
|
+
process(I, A, r, E, C) {
|
|
2025
|
+
const { windowSize: Q, minDb: e, maxDb: n, overlap: t } = E, w = Math.max(1, Q - t), F = this.fft.size(), D = Math.ceil((r - A) / w), s = (F >> 1) + 1;
|
|
2026
2026
|
if (D <= 0)
|
|
2027
2027
|
return new ImageData(1, 1);
|
|
2028
2028
|
const c = new ImageData(D, s), N = c.data, R = this.inputBuf, f = this.windowBuffer;
|
|
@@ -2038,9 +2038,9 @@ class MI {
|
|
|
2038
2038
|
R[k] = (I[v + k] - p) * f[k];
|
|
2039
2039
|
for (; k < F; k++)
|
|
2040
2040
|
R[k] = 0;
|
|
2041
|
-
const U = this.fft.compute(R, e,
|
|
2041
|
+
const U = this.fft.compute(R, e, n);
|
|
2042
2042
|
for (let q = 0; q < s; q++) {
|
|
2043
|
-
const K = U[q], J =
|
|
2043
|
+
const K = U[q], J = C(K), L = ((s - 1 - q) * D + H) * 4;
|
|
2044
2044
|
N[L] = J[0], N[L + 1] = J[1], N[L + 2] = J[2], N[L + 3] = 255;
|
|
2045
2045
|
}
|
|
2046
2046
|
if (H + 1 < D) {
|
|
@@ -2061,13 +2061,13 @@ class MI {
|
|
|
2061
2061
|
this.fft.dispose();
|
|
2062
2062
|
}
|
|
2063
2063
|
}
|
|
2064
|
-
class
|
|
2064
|
+
class dI {
|
|
2065
2065
|
constructor(I) {
|
|
2066
2066
|
this.model = I;
|
|
2067
2067
|
}
|
|
2068
|
-
draw(I, A, r, E,
|
|
2069
|
-
I.save(), I.strokeStyle = "#464646", I.fillStyle = "#252525", I.font = "11px
|
|
2070
|
-
const [e,
|
|
2068
|
+
draw(I, A, r, E, C, Q) {
|
|
2069
|
+
I.save(), I.strokeStyle = "#464646", I.fillStyle = "#252525", I.font = "11px AxisFont", I.textBaseline = "top", I.lineWidth = 1;
|
|
2070
|
+
const [e, n] = E, [t, w] = C, F = n - e, { left: h, bottom: D, top: s, right: c } = Q, N = h, R = s, f = A - h - c, y = r - D - s;
|
|
2071
2071
|
if (F <= 0) {
|
|
2072
2072
|
I.restore();
|
|
2073
2073
|
return;
|
|
@@ -2081,13 +2081,13 @@ class GI {
|
|
|
2081
2081
|
if (S < N || S > N + f)
|
|
2082
2082
|
continue;
|
|
2083
2083
|
I.beginPath(), I.moveTo(S, G), I.lineTo(S, G + 5), I.stroke();
|
|
2084
|
-
const
|
|
2085
|
-
let
|
|
2084
|
+
const W = p + L * 1e3;
|
|
2085
|
+
let O = "";
|
|
2086
2086
|
if (this.model.showRealTimeScale) {
|
|
2087
|
-
const
|
|
2088
|
-
|
|
2089
|
-
} else
|
|
2090
|
-
I.textAlign = "center", I.fillText(
|
|
2087
|
+
const Z = new Date(W), x = Z.getHours().toString().padStart(2, "0"), AA = Z.getMinutes().toString().padStart(2, "0"), IA = Z.getSeconds().toString().padStart(2, "0");
|
|
2088
|
+
O = `${x}:${AA}:${IA}`;
|
|
2089
|
+
} else W >= 0 && (O = `${Math.floor(n - W / 1e3)}s`);
|
|
2090
|
+
I.textAlign = "center", I.fillText(O, S, G + 8);
|
|
2091
2091
|
}
|
|
2092
2092
|
const P = w - t, k = Math.max(3, Math.floor(y / 40));
|
|
2093
2093
|
let U = 1;
|
|
@@ -2102,12 +2102,12 @@ class GI {
|
|
|
2102
2102
|
const L = J / 1e3;
|
|
2103
2103
|
if (u > w + L || u < t - L)
|
|
2104
2104
|
continue;
|
|
2105
|
-
const S = (w - u) / P,
|
|
2106
|
-
if (
|
|
2105
|
+
const S = (w - u) / P, W = R + S * y;
|
|
2106
|
+
if (W < R - 1 || W > R + y + 1)
|
|
2107
2107
|
continue;
|
|
2108
|
-
I.beginPath(), I.moveTo(h,
|
|
2109
|
-
let
|
|
2110
|
-
u % 1 !== 0 && (
|
|
2108
|
+
I.beginPath(), I.moveTo(h, W), I.lineTo(h - 5, W), I.stroke();
|
|
2109
|
+
let O = u.toString();
|
|
2110
|
+
u % 1 !== 0 && (O = u.toFixed(1).replace(/\.0$/, "")), I.fillText(O, h - 8, W);
|
|
2111
2111
|
}
|
|
2112
2112
|
I.save(), I.translate(10, y / 2.8), I.rotate(-Math.PI / 2), I.textAlign = "right", I.fillText("Frequency (Hz)", 0, 0), I.restore();
|
|
2113
2113
|
}
|
|
@@ -2117,37 +2117,37 @@ function TA(o, I) {
|
|
|
2117
2117
|
return I[0];
|
|
2118
2118
|
if (o >= 1)
|
|
2119
2119
|
return I[I.length - 1];
|
|
2120
|
-
const A = 1 / (I.length - 1), r = o / A | 0, E = (o - r * A) / A,
|
|
2120
|
+
const A = 1 / (I.length - 1), r = o / A | 0, E = (o - r * A) / A, C = I[r], Q = I[r + 1];
|
|
2121
2121
|
return [
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2122
|
+
C[0] + (Q[0] - C[0]) * E | 0,
|
|
2123
|
+
C[1] + (Q[1] - C[1]) * E | 0,
|
|
2124
|
+
C[2] + (Q[2] - C[2]) * E | 0
|
|
2125
2125
|
];
|
|
2126
2126
|
}
|
|
2127
|
-
const
|
|
2127
|
+
const YI = [
|
|
2128
2128
|
[68, 1, 84],
|
|
2129
2129
|
[59, 82, 139],
|
|
2130
2130
|
[33, 145, 140],
|
|
2131
2131
|
[94, 201, 98],
|
|
2132
2132
|
[253, 231, 37]
|
|
2133
|
-
],
|
|
2133
|
+
], kI = [
|
|
2134
2134
|
[0, 0, 4],
|
|
2135
2135
|
[87, 16, 110],
|
|
2136
2136
|
[187, 55, 84],
|
|
2137
2137
|
[249, 142, 9],
|
|
2138
2138
|
[252, 255, 164]
|
|
2139
2139
|
];
|
|
2140
|
-
function kI(o) {
|
|
2141
|
-
return TA(o, dI);
|
|
2142
|
-
}
|
|
2143
2140
|
function SI(o) {
|
|
2144
2141
|
return TA(o, YI);
|
|
2145
2142
|
}
|
|
2146
2143
|
function UI(o) {
|
|
2144
|
+
return TA(o, kI);
|
|
2145
|
+
}
|
|
2146
|
+
function HI(o) {
|
|
2147
2147
|
const I = Math.floor(o * 255);
|
|
2148
2148
|
return [I, I, I];
|
|
2149
2149
|
}
|
|
2150
|
-
function
|
|
2150
|
+
function mI(o) {
|
|
2151
2151
|
const I = Math.max(0, Math.min(1, o)), A = Math.min(4 * I - 1.5, -4 * I + 4.5), r = Math.min(4 * I - 0.5, -4 * I + 3.5), E = Math.min(4 * I + 0.5, -4 * I + 2.5);
|
|
2152
2152
|
return [
|
|
2153
2153
|
Math.floor(Math.max(0, Math.min(1, A)) * 255),
|
|
@@ -2155,27 +2155,27 @@ function HI(o) {
|
|
|
2155
2155
|
Math.floor(Math.max(0, Math.min(1, E)) * 255)
|
|
2156
2156
|
];
|
|
2157
2157
|
}
|
|
2158
|
-
function
|
|
2158
|
+
function vI(o) {
|
|
2159
2159
|
let I = 0, A = 0, r = 0;
|
|
2160
2160
|
return o < 0.33 ? I = o / 0.33 : o < 0.66 ? (I = 1, A = (o - 0.33) / 0.33) : (I = 1, A = 1, r = (o - 0.66) / 0.34), [Math.floor(I * 255), Math.floor(A * 255), Math.floor(r * 255)];
|
|
2161
2161
|
}
|
|
2162
|
-
function
|
|
2162
|
+
function uI(o) {
|
|
2163
2163
|
const I = o, A = 1 - o;
|
|
2164
2164
|
return [Math.floor(I * 255), Math.floor(A * 255), Math.floor(1 * 255)];
|
|
2165
2165
|
}
|
|
2166
|
-
function
|
|
2166
|
+
function JI(o) {
|
|
2167
2167
|
return [255, Math.floor(o * 255), Math.floor((1 - o) * 255)];
|
|
2168
2168
|
}
|
|
2169
|
-
function
|
|
2169
|
+
function LI(o) {
|
|
2170
2170
|
return [Math.floor(o * 255), Math.floor((0.5 + 0.5 * o) * 255), Math.floor(0.4 * 255)];
|
|
2171
2171
|
}
|
|
2172
|
-
function
|
|
2172
|
+
function KI(o) {
|
|
2173
2173
|
return [255, Math.floor(o * 255), 0];
|
|
2174
2174
|
}
|
|
2175
|
-
function
|
|
2175
|
+
function bI(o) {
|
|
2176
2176
|
return [0, Math.floor(o * 255), Math.floor((1 - 0.5 * o) * 255)];
|
|
2177
2177
|
}
|
|
2178
|
-
function
|
|
2178
|
+
function qI(o) {
|
|
2179
2179
|
const I = o, A = 0.1 * Math.sin(o * Math.PI * 2), r = o < 0.5 ? o + A : o, E = o < 0.75 ? o + A : o;
|
|
2180
2180
|
return [
|
|
2181
2181
|
Math.floor(Math.min(1, I) * 255),
|
|
@@ -2183,26 +2183,26 @@ function bI(o) {
|
|
|
2183
2183
|
Math.floor(Math.min(1, E) * 255)
|
|
2184
2184
|
];
|
|
2185
2185
|
}
|
|
2186
|
-
const
|
|
2187
|
-
viridis:
|
|
2188
|
-
inferno:
|
|
2189
|
-
grayscale:
|
|
2190
|
-
jet:
|
|
2191
|
-
hot:
|
|
2192
|
-
cool:
|
|
2193
|
-
spring:
|
|
2194
|
-
summer:
|
|
2195
|
-
autumn:
|
|
2196
|
-
winter:
|
|
2197
|
-
bone:
|
|
2186
|
+
const TI = {
|
|
2187
|
+
viridis: SI,
|
|
2188
|
+
inferno: UI,
|
|
2189
|
+
grayscale: HI,
|
|
2190
|
+
jet: mI,
|
|
2191
|
+
hot: vI,
|
|
2192
|
+
cool: uI,
|
|
2193
|
+
spring: JI,
|
|
2194
|
+
summer: LI,
|
|
2195
|
+
autumn: KI,
|
|
2196
|
+
winter: bI,
|
|
2197
|
+
bone: qI
|
|
2198
2198
|
};
|
|
2199
|
-
class
|
|
2199
|
+
class pI {
|
|
2200
2200
|
// [R, G, B, R, G, B...] for 0..255
|
|
2201
2201
|
constructor(I = "jet") {
|
|
2202
2202
|
this.type = I, this.lut = new Uint8Array(256 * 3), this.generateLut();
|
|
2203
2203
|
}
|
|
2204
2204
|
generateLut() {
|
|
2205
|
-
const I =
|
|
2205
|
+
const I = TI[this.type];
|
|
2206
2206
|
for (let A = 0; A < 256; A++) {
|
|
2207
2207
|
const r = I(A / 255), E = A * 3;
|
|
2208
2208
|
this.lut[E] = r[0], this.lut[E + 1] = r[1], this.lut[E + 2] = r[2];
|
|
@@ -2216,9 +2216,9 @@ class TI {
|
|
|
2216
2216
|
this.type = I, this.generateLut();
|
|
2217
2217
|
}
|
|
2218
2218
|
}
|
|
2219
|
-
class
|
|
2219
|
+
class PI {
|
|
2220
2220
|
constructor(I) {
|
|
2221
|
-
this.chunks = /* @__PURE__ */ new Map(), this.offscreenCanvas = null, this.offscreenCtx = null, this.offscreenHelpers = /* @__PURE__ */ new Map(), this.ctx = null, this.lastW = 0, this.lastH = 0, this.lastDPR = 0, this.model = I, this.processor = new
|
|
2221
|
+
this.chunks = /* @__PURE__ */ new Map(), this.offscreenCanvas = null, this.offscreenCtx = null, this.offscreenHelpers = /* @__PURE__ */ new Map(), this.ctx = null, this.lastW = 0, this.lastH = 0, this.lastDPR = 0, this.model = I, this.processor = new GI(I.config), this.colormap = new pI(), this.axisRenderer = new dI(I);
|
|
2222
2222
|
}
|
|
2223
2223
|
setColormap(I) {
|
|
2224
2224
|
this.colormap.setMap(I), this.clearCache();
|
|
@@ -2232,37 +2232,37 @@ class pI {
|
|
|
2232
2232
|
setupHiDPICanvas(I, A, r) {
|
|
2233
2233
|
const E = window.devicePixelRatio || 1;
|
|
2234
2234
|
I.style.width = `${A}px`, I.style.height = `${r}px`, I.width = Math.round(A * E), I.height = Math.round(r * E);
|
|
2235
|
-
const
|
|
2236
|
-
return
|
|
2235
|
+
const C = I.getContext("2d", { alpha: !0 });
|
|
2236
|
+
return C.resetTransform(), C.scale(E, E), C.imageSmoothingEnabled = !1, this.offscreenCanvas || (this.offscreenCanvas = document.createElement("canvas")), this.offscreenCanvas.width = I.width, this.offscreenCanvas.height = I.height, this.offscreenCtx = this.offscreenCanvas.getContext("2d", { alpha: !0 }), this.offscreenCtx.resetTransform(), this.offscreenCtx.scale(E, E), this.offscreenCtx.imageSmoothingEnabled = !1, C;
|
|
2237
2237
|
}
|
|
2238
2238
|
calibrateCanvas(I, A, r) {
|
|
2239
2239
|
const E = window.devicePixelRatio || 1;
|
|
2240
2240
|
return this.ctx && this.lastW === A && this.lastH === r && this.lastDPR === E ? this.ctx : (this.lastW = A, this.lastH = r, this.lastDPR = E, this.ctx = this.setupHiDPICanvas(I, A, r), this.ctx);
|
|
2241
2241
|
}
|
|
2242
2242
|
render(I) {
|
|
2243
|
-
const { canvas: A, timeRange: r, freqRange: E } = I,
|
|
2244
|
-
if (!
|
|
2243
|
+
const { canvas: A, timeRange: r, freqRange: E } = I, C = this.calibrateCanvas(A, I.width, I.height);
|
|
2244
|
+
if (!C || !this.offscreenCtx || !this.offscreenCanvas)
|
|
2245
2245
|
return;
|
|
2246
|
-
const Q = window.devicePixelRatio || 1, e = A.width / Q,
|
|
2247
|
-
if (
|
|
2246
|
+
const Q = window.devicePixelRatio || 1, e = A.width / Q, n = A.height / Q, [t, w] = r, [F, h] = E, D = 50, s = 30, c = 12, N = 32, R = D, f = c, y = e - D - N, G = n - s - c;
|
|
2247
|
+
if (C.clearRect(0, 0, e, n), !this.model.data)
|
|
2248
2248
|
return;
|
|
2249
2249
|
const H = this.model.config.sampleRate, v = this.model.config, p = Math.max(1, v.windowSize - v.overlap), k = 10 * H, q = Math.ceil(k / p) * p, K = Math.floor(Math.max(0, t * H)), J = Math.floor(Math.min(this.model.data.length, w * H));
|
|
2250
2250
|
if (J <= K)
|
|
2251
2251
|
return;
|
|
2252
2252
|
const u = Math.floor(K / q), L = Math.floor(J / q);
|
|
2253
2253
|
for (let S = u; S <= L; S++) {
|
|
2254
|
-
const
|
|
2255
|
-
let
|
|
2256
|
-
if (!
|
|
2257
|
-
const AA = new
|
|
2258
|
-
this.chunks.set(
|
|
2254
|
+
const W = S * q, O = Math.min((S + 1) * q, this.model.data.length), Z = `chunk_${S}`;
|
|
2255
|
+
let x = this.chunks.get(Z);
|
|
2256
|
+
if (!x) {
|
|
2257
|
+
const AA = new MI(Z, W, O, H);
|
|
2258
|
+
this.chunks.set(Z, AA);
|
|
2259
2259
|
const IA = this.processor.process(
|
|
2260
2260
|
this.model.data,
|
|
2261
|
-
|
|
2262
|
-
|
|
2261
|
+
W,
|
|
2262
|
+
O,
|
|
2263
2263
|
v,
|
|
2264
2264
|
($) => this.colormap.getRGB($)
|
|
2265
|
-
), _ =
|
|
2265
|
+
), _ = Z;
|
|
2266
2266
|
createImageBitmap(IA).then(($) => {
|
|
2267
2267
|
const gA = this.chunks.get(_);
|
|
2268
2268
|
gA && this.offscreenCtx && (gA.image = $, this.offscreenCtx.save(), this.offscreenCtx.beginPath(), this.offscreenCtx.rect(R, f, y, G), this.offscreenCtx.clip(), this.drawChunk(
|
|
@@ -2277,11 +2277,11 @@ class pI {
|
|
|
2277
2277
|
y,
|
|
2278
2278
|
G
|
|
2279
2279
|
), this.offscreenCtx.restore());
|
|
2280
|
-
}),
|
|
2280
|
+
}), x = AA;
|
|
2281
2281
|
}
|
|
2282
|
-
|
|
2282
|
+
x.image && this.offscreenCtx && (this.offscreenCtx.save(), this.offscreenCtx.beginPath(), this.offscreenCtx.rect(R, f, y, G), this.offscreenCtx.clip(), this.drawChunk(
|
|
2283
2283
|
this.offscreenCtx,
|
|
2284
|
-
|
|
2284
|
+
x,
|
|
2285
2285
|
t,
|
|
2286
2286
|
w,
|
|
2287
2287
|
F,
|
|
@@ -2292,29 +2292,33 @@ class pI {
|
|
|
2292
2292
|
G
|
|
2293
2293
|
), this.offscreenCtx.restore());
|
|
2294
2294
|
}
|
|
2295
|
-
|
|
2295
|
+
C.drawImage(this.offscreenCanvas, 0, 0, e, n), this.axisRenderer.draw(C, e, n, r, E, {
|
|
2296
2296
|
left: D,
|
|
2297
2297
|
bottom: s,
|
|
2298
2298
|
top: c,
|
|
2299
2299
|
right: N
|
|
2300
2300
|
});
|
|
2301
2301
|
}
|
|
2302
|
-
drawChunk(I, A, r, E,
|
|
2302
|
+
drawChunk(I, A, r, E, C, Q, e, n, t, w) {
|
|
2303
2303
|
if (!A.image)
|
|
2304
2304
|
return;
|
|
2305
2305
|
const F = E - r, h = this.model.config.sampleRate, D = h / 2, s = A.startIndex / h, c = A.endIndex / h, N = e + (s - r) / F * t, R = e + (c - r) / F * t;
|
|
2306
2306
|
if (R <= e || N >= e + t)
|
|
2307
2307
|
return;
|
|
2308
|
-
const f = Math.max(e, N), y = Math.min(e + t, R) - f, G = A.image.width, H = (f - N) / (R - N) * G, v = y / (R - N) * G, p = Math.min(Q, D), P = Math.max(
|
|
2308
|
+
const f = Math.max(e, N), y = Math.min(e + t, R) - f, G = A.image.width, H = (f - N) / (R - N) * G, v = y / (R - N) * G, p = Math.min(Q, D), P = Math.max(C, 0), k = A.image.height, U = (1 - p / D) * k, K = (1 - P / D) * k - U;
|
|
2309
2309
|
if (K > 0) {
|
|
2310
|
-
const J =
|
|
2310
|
+
const J = n, u = w;
|
|
2311
2311
|
I.drawImage(A.image, H, U, v, K, f, J, y, u);
|
|
2312
2312
|
}
|
|
2313
2313
|
}
|
|
2314
2314
|
}
|
|
2315
|
-
class
|
|
2315
|
+
class WI {
|
|
2316
2316
|
constructor(I) {
|
|
2317
|
-
this.model = new lI(I), this.renderer = new
|
|
2317
|
+
this.model = new lI(I), this.renderer = new PI(this.model);
|
|
2318
|
+
}
|
|
2319
|
+
async init() {
|
|
2320
|
+
const I = new FontFace("AxisFont", `url(data:font/woff2;base64,${NI})`);
|
|
2321
|
+
await I.load(), document.fonts.add(I);
|
|
2318
2322
|
}
|
|
2319
2323
|
setData(I) {
|
|
2320
2324
|
this.model.setData(I), this.renderer.clearCache();
|
|
@@ -2341,6 +2345,6 @@ class PI {
|
|
|
2341
2345
|
}
|
|
2342
2346
|
export {
|
|
2343
2347
|
RI as FFTExecutor,
|
|
2344
|
-
|
|
2348
|
+
WI as Spectrogram
|
|
2345
2349
|
};
|
|
2346
2350
|
//# sourceMappingURL=spectrogram-js.es.js.map
|