waveform-analysis 0.1.74 → 0.1.75

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.
Files changed (97) hide show
  1. package/README.md +246 -39
  2. package/dist/assets/workerRuntime-BJiRmIZD.js +2446 -0
  3. package/dist/index.cjs +1 -2
  4. package/dist/index.js +1 -7119
  5. package/dist/style.css +1 -1
  6. package/dist/types/animation/WaveformAnimationController.d.ts +30 -0
  7. package/dist/types/animation/core/Animation.d.ts +13 -0
  8. package/dist/types/animation/core/Animator.d.ts +23 -0
  9. package/dist/types/animation/core/easing.d.ts +3 -0
  10. package/dist/types/animation/core/errors.d.ts +4 -0
  11. package/dist/types/animation/core/handle.d.ts +7 -0
  12. package/dist/types/animation/core/owner.d.ts +3 -0
  13. package/dist/types/animation/core/propertyGroups.d.ts +17 -0
  14. package/dist/types/animation/core/task.d.ts +29 -0
  15. package/dist/types/animation/core/types.d.ts +74 -0
  16. package/dist/types/animation/core/validation.d.ts +30 -0
  17. package/dist/types/animation/core/values.d.ts +8 -0
  18. package/dist/types/animation/presets/annotation.d.ts +4 -0
  19. package/dist/types/animation/presets/lineDrawing.d.ts +7 -0
  20. package/dist/types/animation/presets/shared.d.ts +14 -0
  21. package/dist/types/animation/presets/transitions.d.ts +4 -0
  22. package/dist/types/animation/types.d.ts +84 -0
  23. package/dist/types/components/WaveformChart.vue.d.ts +3 -2
  24. package/dist/types/components/animation/annotationPresentation.d.ts +17 -0
  25. package/dist/types/components/animation/chartExportVersion.d.ts +2 -0
  26. package/dist/types/components/animation/config.d.ts +31 -0
  27. package/dist/types/components/animation/context.d.ts +20 -0
  28. package/dist/types/components/animation/geometry.d.ts +10 -0
  29. package/dist/types/components/animation/paginationPresentation.d.ts +13 -0
  30. package/dist/types/components/animation/pathBuffer.d.ts +4 -0
  31. package/dist/types/components/animation/trackPresentation.d.ts +35 -0
  32. package/dist/types/components/animation/useWaveformAnimations.d.ts +27 -0
  33. package/dist/types/components/annotation/WaveformAnnotationContextMenu.vue.d.ts +2 -2
  34. package/dist/types/components/annotation/types.d.ts +7 -0
  35. package/dist/types/components/controls/useChartImageExport.d.ts +2 -0
  36. package/dist/types/components/core/types.d.ts +8 -0
  37. package/dist/types/components/core/useWaveformChartController.d.ts +25 -0
  38. package/dist/types/components/core/useWaveformRenderSampling.d.ts +2 -0
  39. package/dist/types/components/core/waveformChartTypes.d.ts +2 -1
  40. package/dist/types/components/rendering/WaveformSeriesLayer.vue.d.ts +1 -0
  41. package/dist/types/components/rendering/WaveformTrack.vue.d.ts +4 -3
  42. package/dist/types/components/rendering/updateAxis.d.ts +5 -0
  43. package/dist/types/components/rendering/updateGrid.d.ts +3 -0
  44. package/dist/types/components/rendering/yAxisTickVisibility.d.ts +2 -0
  45. package/dist/types/components/utils/assignElement.d.ts +2 -0
  46. package/dist/types/index.d.ts +9 -0
  47. package/dist/types/views/AnimationDemo.vue.d.ts +3 -0
  48. package/package.json +5 -2
  49. package/src/DemoRouterApp.vue +1 -0
  50. package/src/animation/WaveformAnimationController.ts +328 -0
  51. package/src/animation/core/Animation.ts +37 -0
  52. package/src/animation/core/Animator.ts +200 -0
  53. package/src/animation/core/easing.ts +74 -0
  54. package/src/animation/core/errors.ts +24 -0
  55. package/src/animation/core/handle.ts +34 -0
  56. package/src/animation/core/owner.ts +9 -0
  57. package/src/animation/core/propertyGroups.ts +143 -0
  58. package/src/animation/core/task.ts +153 -0
  59. package/src/animation/core/types.ts +81 -0
  60. package/src/animation/core/validation.ts +173 -0
  61. package/src/animation/core/values.ts +38 -0
  62. package/src/animation/presets/annotation.ts +66 -0
  63. package/src/animation/presets/lineDrawing.ts +51 -0
  64. package/src/animation/presets/shared.ts +58 -0
  65. package/src/animation/presets/transitions.ts +77 -0
  66. package/src/animation/types.ts +81 -0
  67. package/src/components/WaveformChart.vue +1 -0
  68. package/src/components/WaveformChartView.vue +13 -4
  69. package/src/components/animation/annotationPresentation.ts +145 -0
  70. package/src/components/animation/chartExportVersion.ts +5 -0
  71. package/src/components/animation/config.ts +87 -0
  72. package/src/components/animation/context.ts +56 -0
  73. package/src/components/animation/geometry.ts +148 -0
  74. package/src/components/animation/paginationPresentation.ts +114 -0
  75. package/src/components/animation/pathBuffer.ts +61 -0
  76. package/src/components/animation/trackPresentation.ts +172 -0
  77. package/src/components/animation/useWaveformAnimations.ts +420 -0
  78. package/src/components/annotation/WaveformAnnotationLayer.vue +43 -30
  79. package/src/components/annotation/types.ts +3 -0
  80. package/src/components/controls/useChartImageExport.ts +4 -0
  81. package/src/components/core/trackLayoutBuilder.ts +9 -18
  82. package/src/components/core/types.ts +4 -0
  83. package/src/components/core/useWaveformChartController.ts +24 -20
  84. package/src/components/core/useWaveformRenderSampling.ts +23 -1
  85. package/src/components/core/waveformChartTypes.ts +2 -1
  86. package/src/components/rendering/WaveformSeriesLayer.vue +13 -1
  87. package/src/components/rendering/WaveformTrack.vue +6 -1
  88. package/src/components/rendering/WaveformTrackAxes.vue +64 -51
  89. package/src/components/rendering/WaveformTrackBackdrop.vue +35 -49
  90. package/src/components/rendering/updateAxis.ts +57 -0
  91. package/src/components/rendering/updateGrid.ts +42 -0
  92. package/src/components/rendering/yAxisTickVisibility.ts +45 -18
  93. package/src/components/utils/assignElement.ts +7 -0
  94. package/src/index.ts +52 -0
  95. package/src/router.ts +1 -0
  96. package/src/views/AnimationDemo.vue +129 -0
  97. package/dist/assets/workerRuntime-5p-EI-GL.js +0 -1
@@ -0,0 +1,2446 @@
1
+ (function() {
2
+ function A(A, g, I, t, C) {
3
+ const B = o.sample_dataset_indexes(A, g, I, t, C);
4
+ if (B[3]) throw E(B[2]);
5
+ var i = Q(B[0], B[1]).slice();
6
+ return o.__wbindgen_free(B[0], 4 * B[1], 4), i;
7
+ }
8
+ function g(A, g, I, t) {
9
+ const C = n(A, o.__wbindgen_malloc), B = a, i = n(g, o.__wbindgen_malloc), e = a, s = o.sample_indexes(C, B, i, e, I, t);
10
+ if (s[3]) throw E(s[2]);
11
+ var r = Q(s[0], s[1]).slice();
12
+ return o.__wbindgen_free(s[0], 4 * s[1], 4), r;
13
+ }
14
+ function I(A, g) {
15
+ return A >>>= 0, C().subarray(A / 8, A / 8 + g);
16
+ }
17
+ function Q(A, g) {
18
+ return A >>>= 0, i().subarray(A / 4, A / 4 + g);
19
+ }
20
+ let t = null;
21
+ function C() {
22
+ return null !== t && 0 !== t.byteLength || (t = new Float64Array(o.memory.buffer)), t;
23
+ }
24
+ let B = null;
25
+ function i() {
26
+ return null !== B && 0 !== B.byteLength || (B = new Uint32Array(o.memory.buffer)), B;
27
+ }
28
+ let e = null;
29
+ function n(A, g) {
30
+ const I = g(8 * A.length, 8) >>> 0;
31
+ return C().set(A, I / 8), a = A.length, I;
32
+ }
33
+ function E(A) {
34
+ const g = o.__wbindgen_externrefs.get(A);
35
+ return o.__externref_table_dealloc(A), g;
36
+ }
37
+ let s = new TextDecoder("utf-8", {
38
+ ignoreBOM: !0,
39
+ fatal: !0
40
+ });
41
+ s.decode();
42
+ let o, r = 0, a = 0;
43
+ const h = {
44
+ none: 0,
45
+ peak: 1,
46
+ lttb: 2,
47
+ average: 3,
48
+ min: 4,
49
+ max: 5,
50
+ minmax: 6,
51
+ sum: 7
52
+ };
53
+ let c;
54
+ function l(A) {
55
+ if (A.x.length !== A.y.length) throw new Error("x and y must have the same length");
56
+ }
57
+ function u(A, g, I, Q) {
58
+ const t = Q - I;
59
+ return {
60
+ start: I + Math.floor(A * t / g),
61
+ end: I + Math.floor((A + 1) * t / g)
62
+ };
63
+ }
64
+ function D(A, g) {
65
+ A[A.length - 1] !== g && A.push(g);
66
+ }
67
+ function N(A) {
68
+ return "minimumIndexes" in A ? A.minimumIndexes.byteLength + A.maximumIndexes.byteLength : A.x.byteLength + A.y.byteLength + A.count.byteLength;
69
+ }
70
+ function y(A, g) {
71
+ let I = 1;
72
+ for (; 2 * I <= g && A % (2 * I) == 0;) I *= 2;
73
+ return I;
74
+ }
75
+ var w = class {
76
+ points;
77
+ extremaLayers = [];
78
+ sumLayers = [];
79
+ indexBytes = 0;
80
+ maxBytes;
81
+ constructor(A, g = {}) {
82
+ this.points = A, this.maxBytes = Number.isFinite(g.maxBytes) ? Math.max(0, Math.floor(g.maxBytes ?? 0)) : 8388608;
83
+ }
84
+ get byteLength() {
85
+ return this.indexBytes;
86
+ }
87
+ dispose() {
88
+ this.extremaLayers.length = 0, this.sumLayers.length = 0, this.indexBytes = 0;
89
+ }
90
+ sample(A, g, I, Q) {
91
+ const t = Math.max(0, Math.min(this.points.length, Math.floor(A))), C = Math.max(t, Math.min(this.points.length, Math.floor(g))), B = C - t, i = (e = Q, 0 === (n = B) ? 0 : Number.isFinite(e) ? Math.min(n, Math.max(1, Math.floor(e))) : n);
92
+ var e, n;
93
+ if ("lttb" !== I) return "average" === I || "sum" === I ? this.aggregate(t, C, i, I) : "none" === I || B <= i ? this.allIndexes(t, C) : 1 === i ? this.indexes([t]) : 2 === i ? this.indexes([t, C - 1]) : this.extrema(t, C, i, I);
94
+ }
95
+ allIndexes(A, g) {
96
+ return {
97
+ kind: "source-indexes",
98
+ sourceIndexes: Uint32Array.from({ length: g - A }, (g, I) => A + I)
99
+ };
100
+ }
101
+ indexes(A) {
102
+ return {
103
+ kind: "source-indexes",
104
+ sourceIndexes: Uint32Array.from(A)
105
+ };
106
+ }
107
+ extrema(A, g, I, Q) {
108
+ const t = "peak" === Q ? Math.floor((I - 2) / 4) : "minmax" === Q ? Math.floor((I - 2) / 2) : Math.max(0, I - 2);
109
+ if (0 === t) return this.indexes([A, g - 1]);
110
+ const C = [A];
111
+ for (let B = 0; B < t; B += 1) {
112
+ const I = u(B, t, A + 1, g - 1), i = this.queryExtrema(I.start, I.end);
113
+ if (!i) return;
114
+ if ("min" === Q) D(C, i.minimum);
115
+ else if ("max" === Q) D(C, i.maximum);
116
+ else if ("minmax" === Q) i.minimum <= i.maximum ? (D(C, i.minimum), D(C, i.maximum)) : (D(C, i.maximum), D(C, i.minimum));
117
+ else for (const A of [
118
+ I.start,
119
+ i.minimum,
120
+ i.maximum,
121
+ I.end - 1
122
+ ].sort((A, g) => A - g)) D(C, A);
123
+ }
124
+ return D(C, g - 1), this.indexes(C);
125
+ }
126
+ aggregate(A, g, I, Q) {
127
+ const t = new Float64Array(I), C = new Float64Array(I);
128
+ for (let B = 0; B < I; B += 1) {
129
+ const i = u(B, I, A, g), e = this.querySum(i.start, i.end);
130
+ if (!e || 0 === e.count) return;
131
+ t[B] = e.x / e.count, C[B] = "average" === Q ? e.y / e.count : e.y;
132
+ }
133
+ return {
134
+ kind: "aggregates",
135
+ x: t,
136
+ y: C
137
+ };
138
+ }
139
+ queryExtrema(A, g) {
140
+ const I = Math.floor(Math.log2(Math.max(1, g - A)));
141
+ if (!this.ensureExtrema(I)) return;
142
+ let Q = A, t = A;
143
+ for (let C = A; C < g;) {
144
+ const A = y(C, g - C), I = Math.floor(Math.log2(A)), B = C / A, i = this.extremaLayers[I], e = i ? i.minimumIndexes[B] : C, n = i ? i.maximumIndexes[B] : C;
145
+ this.isMinimum(e, Q) && (Q = e), this.isMaximum(n, t) && (t = n), C += A;
146
+ }
147
+ return {
148
+ minimum: Q,
149
+ maximum: t
150
+ };
151
+ }
152
+ querySum(A, g) {
153
+ const I = Math.floor(Math.log2(Math.max(1, g - A)));
154
+ if (!this.ensureSum(I)) return;
155
+ let Q = 0, t = 0, C = 0;
156
+ for (let B = A; B < g;) {
157
+ const A = y(B, g - B), I = Math.floor(Math.log2(A)), i = B / A, e = this.sumLayers[I];
158
+ if (e) Q += e.x[i], t += e.y[i], C += e.count[i];
159
+ else {
160
+ const A = this.points[B];
161
+ Q += A.x, t += A.y, C += 1;
162
+ }
163
+ B += A;
164
+ }
165
+ return {
166
+ x: Q,
167
+ y: t,
168
+ count: C
169
+ };
170
+ }
171
+ ensureExtrema(A) {
172
+ for (let g = 1; g <= A; g += 1) {
173
+ if (this.extremaLayers[g]) continue;
174
+ const A = Math.ceil(this.points.length / 2 ** g), I = {
175
+ minimumIndexes: new Uint32Array(A),
176
+ maximumIndexes: new Uint32Array(A)
177
+ };
178
+ if (!this.reserve(N(I))) return !1;
179
+ const Q = this.extremaLayers[g - 1];
180
+ for (let g = 0; g < A; g += 1) {
181
+ const A = 2 * g, t = A + 1, C = Q ? Q.minimumIndexes[A] : A, B = Q ? Q.maximumIndexes[A] : A, i = Q ? t < Q.minimumIndexes.length : t < this.points.length, e = Q && i ? Q.minimumIndexes[t] : t, n = Q && i ? Q.maximumIndexes[t] : t;
182
+ I.minimumIndexes[g] = i && this.isMinimum(e, C) ? e : C, I.maximumIndexes[g] = i && this.isMaximum(n, B) ? n : B;
183
+ }
184
+ this.extremaLayers[g] = I;
185
+ }
186
+ return !0;
187
+ }
188
+ ensureSum(A) {
189
+ for (let g = 1; g <= A; g += 1) {
190
+ if (this.sumLayers[g]) continue;
191
+ const A = Math.ceil(this.points.length / 2 ** g), I = {
192
+ x: new Float64Array(A),
193
+ y: new Float64Array(A),
194
+ count: new Uint32Array(A)
195
+ };
196
+ if (!this.reserve(N(I))) return !1;
197
+ const Q = this.sumLayers[g - 1];
198
+ for (let g = 0; g < A; g += 1) {
199
+ const A = 2 * g, t = A + 1;
200
+ if (Q) I.x[g] = Q.x[A] + (t < Q.x.length ? Q.x[t] : 0), I.y[g] = Q.y[A] + (t < Q.y.length ? Q.y[t] : 0), I.count[g] = Q.count[A] + (t < Q.count.length ? Q.count[t] : 0);
201
+ else {
202
+ const Q = this.points[A], C = this.points[t];
203
+ I.x[g] = Q.x + (C?.x ?? 0), I.y[g] = Q.y + (C?.y ?? 0), I.count[g] = C ? 2 : 1;
204
+ }
205
+ }
206
+ this.sumLayers[g] = I;
207
+ }
208
+ return !0;
209
+ }
210
+ reserve(A) {
211
+ return !(this.indexBytes + A > this.maxBytes || (this.indexBytes += A, 0));
212
+ }
213
+ isMinimum(A, g) {
214
+ const I = this.points[A], Q = this.points[g];
215
+ return I.y < Q.y || I.y === Q.y && A < g;
216
+ }
217
+ isMaximum(A, g) {
218
+ const I = this.points[A], Q = this.points[g];
219
+ return I.y > Q.y || I.y === Q.y && A < g;
220
+ }
221
+ };
222
+ function G(A, g) {
223
+ return null == A || null == g ? NaN : A < g ? -1 : A > g ? 1 : A >= g ? 0 : NaN;
224
+ }
225
+ function d(A, g) {
226
+ return null == A || null == g ? NaN : g < A ? -1 : g > A ? 1 : g >= A ? 0 : NaN;
227
+ }
228
+ function Y() {
229
+ return 0;
230
+ }
231
+ var m = { value: () => {} };
232
+ function k() {
233
+ for (var A, g = 0, I = arguments.length, Q = {}; g < I; ++g) {
234
+ if (!(A = arguments[g] + "") || A in Q || /[\s.]/.test(A)) throw new Error("illegal type: " + A);
235
+ Q[A] = [];
236
+ }
237
+ return new f(Q);
238
+ }
239
+ function f(A) {
240
+ this._ = A;
241
+ }
242
+ function M(A, g) {
243
+ for (var I, Q = 0, t = A.length; Q < t; ++Q) if ((I = A[Q]).name === g) return I.value;
244
+ }
245
+ function F(A, g, I) {
246
+ for (var Q = 0, t = A.length; Q < t; ++Q) if (A[Q].name === g) {
247
+ A[Q] = m, A = A.slice(0, Q).concat(A.slice(Q + 1));
248
+ break;
249
+ }
250
+ return null != I && A.push({
251
+ name: g,
252
+ value: I
253
+ }), A;
254
+ }
255
+ f.prototype = k.prototype = {
256
+ constructor: f,
257
+ on: function(A, g) {
258
+ var I, Q, t = this._, C = (Q = t, (A + "").trim().split(/^|\s+/).map(function(A) {
259
+ var g = "", I = A.indexOf(".");
260
+ if (I >= 0 && (g = A.slice(I + 1), A = A.slice(0, I)), A && !Q.hasOwnProperty(A)) throw new Error("unknown type: " + A);
261
+ return {
262
+ type: A,
263
+ name: g
264
+ };
265
+ })), B = -1, i = C.length;
266
+ if (!(arguments.length < 2)) {
267
+ if (null != g && "function" != typeof g) throw new Error("invalid callback: " + g);
268
+ for (; ++B < i;) if (I = (A = C[B]).type) t[I] = F(t[I], A.name, g);
269
+ else if (null == g) for (I in t) t[I] = F(t[I], A.name, null);
270
+ return this;
271
+ }
272
+ for (; ++B < i;) if ((I = (A = C[B]).type) && (I = M(t[I], A.name))) return I;
273
+ },
274
+ copy: function() {
275
+ var A = {}, g = this._;
276
+ for (var I in g) A[I] = g[I].slice();
277
+ return new f(A);
278
+ },
279
+ call: function(A, g) {
280
+ if ((I = arguments.length - 2) > 0) for (var I, Q, t = new Array(I), C = 0; C < I; ++C) t[C] = arguments[C + 2];
281
+ if (!this._.hasOwnProperty(A)) throw new Error("unknown type: " + A);
282
+ for (C = 0, I = (Q = this._[A]).length; C < I; ++C) Q[C].value.apply(g, t);
283
+ },
284
+ apply: function(A, g, I) {
285
+ if (!this._.hasOwnProperty(A)) throw new Error("unknown type: " + A);
286
+ for (var Q = this._[A], t = 0, C = Q.length; t < C; ++t) Q[t].value.apply(g, I);
287
+ }
288
+ };
289
+ var J = {
290
+ svg: "http://www.w3.org/2000/svg",
291
+ xhtml: "http://www.w3.org/1999/xhtml",
292
+ xlink: "http://www.w3.org/1999/xlink",
293
+ xml: "http://www.w3.org/XML/1998/namespace",
294
+ xmlns: "http://www.w3.org/2000/xmlns/"
295
+ };
296
+ function p(A) {
297
+ var g = A += "", I = g.indexOf(":");
298
+ return I >= 0 && "xmlns" !== (g = A.slice(0, I)) && (A = A.slice(I + 1)), J.hasOwnProperty(g) ? {
299
+ space: J[g],
300
+ local: A
301
+ } : A;
302
+ }
303
+ function R(A) {
304
+ return function() {
305
+ var g = this.ownerDocument, I = this.namespaceURI;
306
+ return "http://www.w3.org/1999/xhtml" === I && "http://www.w3.org/1999/xhtml" === g.documentElement.namespaceURI ? g.createElement(A) : g.createElementNS(I, A);
307
+ };
308
+ }
309
+ function x(A) {
310
+ return function() {
311
+ return this.ownerDocument.createElementNS(A.space, A.local);
312
+ };
313
+ }
314
+ function b(A) {
315
+ var g = p(A);
316
+ return (g.local ? x : R)(g);
317
+ }
318
+ function S() {}
319
+ function Z(A) {
320
+ return null == A ? S : function() {
321
+ return this.querySelector(A);
322
+ };
323
+ }
324
+ function U() {
325
+ return [];
326
+ }
327
+ function j(A) {
328
+ return null == A ? U : function() {
329
+ return this.querySelectorAll(A);
330
+ };
331
+ }
332
+ function X(A) {
333
+ return function() {
334
+ return this.matches(A);
335
+ };
336
+ }
337
+ function H(A) {
338
+ return function(g) {
339
+ return g.matches(A);
340
+ };
341
+ }
342
+ var L = Array.prototype.find;
343
+ function v() {
344
+ return this.firstElementChild;
345
+ }
346
+ var W = Array.prototype.filter;
347
+ function K() {
348
+ return Array.from(this.children);
349
+ }
350
+ function T(A) {
351
+ return new Array(A.length);
352
+ }
353
+ function O(A, g) {
354
+ this.ownerDocument = A.ownerDocument, this.namespaceURI = A.namespaceURI, this._next = null, this._parent = A, this.__data__ = g;
355
+ }
356
+ function V(A, g, I, Q, t, C) {
357
+ for (var B, i = 0, e = g.length, n = C.length; i < n; ++i) (B = g[i]) ? (B.__data__ = C[i], Q[i] = B) : I[i] = new O(A, C[i]);
358
+ for (; i < e; ++i) (B = g[i]) && (t[i] = B);
359
+ }
360
+ function q(A, g, I, Q, t, C, B) {
361
+ var i, e, n, E = /* @__PURE__ */ new Map(), s = g.length, o = C.length, r = new Array(s);
362
+ for (i = 0; i < s; ++i) (e = g[i]) && (r[i] = n = B.call(e, e.__data__, i, g) + "", E.has(n) ? t[i] = e : E.set(n, e));
363
+ for (i = 0; i < o; ++i) n = B.call(A, C[i], i, C) + "", (e = E.get(n)) ? (Q[i] = e, e.__data__ = C[i], E.delete(n)) : I[i] = new O(A, C[i]);
364
+ for (i = 0; i < s; ++i) (e = g[i]) && E.get(r[i]) === e && (t[i] = e);
365
+ }
366
+ function z(A) {
367
+ return A.__data__;
368
+ }
369
+ function _(A) {
370
+ return "object" == typeof A && "length" in A ? A : Array.from(A);
371
+ }
372
+ function P(A, g) {
373
+ return A < g ? -1 : A > g ? 1 : A >= g ? 0 : NaN;
374
+ }
375
+ function $(A) {
376
+ return function() {
377
+ this.removeAttribute(A);
378
+ };
379
+ }
380
+ function AA(A) {
381
+ return function() {
382
+ this.removeAttributeNS(A.space, A.local);
383
+ };
384
+ }
385
+ function gA(A, g) {
386
+ return function() {
387
+ this.setAttribute(A, g);
388
+ };
389
+ }
390
+ function IA(A, g) {
391
+ return function() {
392
+ this.setAttributeNS(A.space, A.local, g);
393
+ };
394
+ }
395
+ function QA(A, g) {
396
+ return function() {
397
+ var I = g.apply(this, arguments);
398
+ null == I ? this.removeAttribute(A) : this.setAttribute(A, I);
399
+ };
400
+ }
401
+ function tA(A, g) {
402
+ return function() {
403
+ var I = g.apply(this, arguments);
404
+ null == I ? this.removeAttributeNS(A.space, A.local) : this.setAttributeNS(A.space, A.local, I);
405
+ };
406
+ }
407
+ function CA(A) {
408
+ return A.ownerDocument && A.ownerDocument.defaultView || A.document && A || A.defaultView;
409
+ }
410
+ function BA(A) {
411
+ return function() {
412
+ this.style.removeProperty(A);
413
+ };
414
+ }
415
+ function iA(A, g, I) {
416
+ return function() {
417
+ this.style.setProperty(A, g, I);
418
+ };
419
+ }
420
+ function eA(A, g, I) {
421
+ return function() {
422
+ var Q = g.apply(this, arguments);
423
+ null == Q ? this.style.removeProperty(A) : this.style.setProperty(A, Q, I);
424
+ };
425
+ }
426
+ function nA(A, g) {
427
+ return A.style.getPropertyValue(g) || CA(A).getComputedStyle(A, null).getPropertyValue(g);
428
+ }
429
+ function EA(A) {
430
+ return function() {
431
+ delete this[A];
432
+ };
433
+ }
434
+ function sA(A, g) {
435
+ return function() {
436
+ this[A] = g;
437
+ };
438
+ }
439
+ function oA(A, g) {
440
+ return function() {
441
+ var I = g.apply(this, arguments);
442
+ null == I ? delete this[A] : this[A] = I;
443
+ };
444
+ }
445
+ function rA(A) {
446
+ return A.trim().split(/^|\s+/);
447
+ }
448
+ function aA(A) {
449
+ return A.classList || new hA(A);
450
+ }
451
+ function hA(A) {
452
+ this._node = A, this._names = rA(A.getAttribute("class") || "");
453
+ }
454
+ function cA(A, g) {
455
+ for (var I = aA(A), Q = -1, t = g.length; ++Q < t;) I.add(g[Q]);
456
+ }
457
+ function lA(A, g) {
458
+ for (var I = aA(A), Q = -1, t = g.length; ++Q < t;) I.remove(g[Q]);
459
+ }
460
+ function uA(A) {
461
+ return function() {
462
+ cA(this, A);
463
+ };
464
+ }
465
+ function DA(A) {
466
+ return function() {
467
+ lA(this, A);
468
+ };
469
+ }
470
+ function NA(A, g) {
471
+ return function() {
472
+ (g.apply(this, arguments) ? cA : lA)(this, A);
473
+ };
474
+ }
475
+ function yA() {
476
+ this.textContent = "";
477
+ }
478
+ function wA(A) {
479
+ return function() {
480
+ this.textContent = A;
481
+ };
482
+ }
483
+ function GA(A) {
484
+ return function() {
485
+ var g = A.apply(this, arguments);
486
+ this.textContent = null == g ? "" : g;
487
+ };
488
+ }
489
+ function dA() {
490
+ this.innerHTML = "";
491
+ }
492
+ function YA(A) {
493
+ return function() {
494
+ this.innerHTML = A;
495
+ };
496
+ }
497
+ function mA(A) {
498
+ return function() {
499
+ var g = A.apply(this, arguments);
500
+ this.innerHTML = null == g ? "" : g;
501
+ };
502
+ }
503
+ function kA() {
504
+ this.nextSibling && this.parentNode.appendChild(this);
505
+ }
506
+ function fA() {
507
+ this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild);
508
+ }
509
+ function MA() {
510
+ return null;
511
+ }
512
+ function FA() {
513
+ var A = this.parentNode;
514
+ A && A.removeChild(this);
515
+ }
516
+ function JA() {
517
+ var A = this.cloneNode(!1), g = this.parentNode;
518
+ return g ? g.insertBefore(A, this.nextSibling) : A;
519
+ }
520
+ function pA() {
521
+ var A = this.cloneNode(!0), g = this.parentNode;
522
+ return g ? g.insertBefore(A, this.nextSibling) : A;
523
+ }
524
+ function RA(A) {
525
+ return function() {
526
+ var g = this.__on;
527
+ if (g) {
528
+ for (var I, Q = 0, t = -1, C = g.length; Q < C; ++Q) I = g[Q], A.type && I.type !== A.type || I.name !== A.name ? g[++t] = I : this.removeEventListener(I.type, I.listener, I.options);
529
+ ++t ? g.length = t : delete this.__on;
530
+ }
531
+ };
532
+ }
533
+ function xA(A, g, I) {
534
+ return function() {
535
+ var Q, t = this.__on, C = function(A) {
536
+ return function(g) {
537
+ A.call(this, g, this.__data__);
538
+ };
539
+ }(g);
540
+ if (t) {
541
+ for (var B = 0, i = t.length; B < i; ++B) if ((Q = t[B]).type === A.type && Q.name === A.name) return this.removeEventListener(Q.type, Q.listener, Q.options), this.addEventListener(Q.type, Q.listener = C, Q.options = I), void (Q.value = g);
542
+ }
543
+ this.addEventListener(A.type, C, I), Q = {
544
+ type: A.type,
545
+ name: A.name,
546
+ value: g,
547
+ listener: C,
548
+ options: I
549
+ }, t ? t.push(Q) : this.__on = [Q];
550
+ };
551
+ }
552
+ function bA(A, g, I) {
553
+ var Q = CA(A), t = Q.CustomEvent;
554
+ "function" == typeof t ? t = new t(g, I) : (t = Q.document.createEvent("Event"), I ? (t.initEvent(g, I.bubbles, I.cancelable), t.detail = I.detail) : t.initEvent(g, !1, !1)), A.dispatchEvent(t);
555
+ }
556
+ function SA(A, g) {
557
+ return function() {
558
+ return bA(this, A, g);
559
+ };
560
+ }
561
+ function ZA(A, g) {
562
+ return function() {
563
+ return bA(this, A, g.apply(this, arguments));
564
+ };
565
+ }
566
+ O.prototype = {
567
+ constructor: O,
568
+ appendChild: function(A) {
569
+ return this._parent.insertBefore(A, this._next);
570
+ },
571
+ insertBefore: function(A, g) {
572
+ return this._parent.insertBefore(A, g);
573
+ },
574
+ querySelector: function(A) {
575
+ return this._parent.querySelector(A);
576
+ },
577
+ querySelectorAll: function(A) {
578
+ return this._parent.querySelectorAll(A);
579
+ }
580
+ }, hA.prototype = {
581
+ add: function(A) {
582
+ this._names.indexOf(A) < 0 && (this._names.push(A), this._node.setAttribute("class", this._names.join(" ")));
583
+ },
584
+ remove: function(A) {
585
+ var g = this._names.indexOf(A);
586
+ g >= 0 && (this._names.splice(g, 1), this._node.setAttribute("class", this._names.join(" ")));
587
+ },
588
+ contains: function(A) {
589
+ return this._names.indexOf(A) >= 0;
590
+ }
591
+ };
592
+ var UA = [null];
593
+ function jA(A, g) {
594
+ this._groups = A, this._parents = g;
595
+ }
596
+ function XA() {
597
+ return new jA([[document.documentElement]], UA);
598
+ }
599
+ function HA(A, g, I) {
600
+ A.prototype = g.prototype = I, I.constructor = A;
601
+ }
602
+ function LA(A, g) {
603
+ var I = Object.create(A.prototype);
604
+ for (var Q in g) I[Q] = g[Q];
605
+ return I;
606
+ }
607
+ function vA() {}
608
+ jA.prototype = XA.prototype = {
609
+ constructor: jA,
610
+ select: function(A) {
611
+ "function" != typeof A && (A = Z(A));
612
+ for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B, i = g[t], e = i.length, n = Q[t] = new Array(e), E = 0; E < e; ++E) (C = i[E]) && (B = A.call(C, C.__data__, E, i)) && ("__data__" in C && (B.__data__ = C.__data__), n[E] = B);
613
+ return new jA(Q, this._parents);
614
+ },
615
+ selectAll: function(A) {
616
+ A = "function" == typeof A ? function(A) {
617
+ return function() {
618
+ return null == (g = A.apply(this, arguments)) ? [] : Array.isArray(g) ? g : Array.from(g);
619
+ var g;
620
+ };
621
+ }(A) : j(A);
622
+ for (var g = this._groups, I = g.length, Q = [], t = [], C = 0; C < I; ++C) for (var B, i = g[C], e = i.length, n = 0; n < e; ++n) (B = i[n]) && (Q.push(A.call(B, B.__data__, n, i)), t.push(B));
623
+ return new jA(Q, t);
624
+ },
625
+ selectChild: function(A) {
626
+ return this.select(null == A ? v : function(A) {
627
+ return function() {
628
+ return L.call(this.children, A);
629
+ };
630
+ }("function" == typeof A ? A : H(A)));
631
+ },
632
+ selectChildren: function(A) {
633
+ return this.selectAll(null == A ? K : function(A) {
634
+ return function() {
635
+ return W.call(this.children, A);
636
+ };
637
+ }("function" == typeof A ? A : H(A)));
638
+ },
639
+ filter: function(A) {
640
+ "function" != typeof A && (A = X(A));
641
+ for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B = g[t], i = B.length, e = Q[t] = [], n = 0; n < i; ++n) (C = B[n]) && A.call(C, C.__data__, n, B) && e.push(C);
642
+ return new jA(Q, this._parents);
643
+ },
644
+ data: function(A, g) {
645
+ if (!arguments.length) return Array.from(this, z);
646
+ var I, Q = g ? q : V, t = this._parents, C = this._groups;
647
+ "function" != typeof A && (I = A, A = function() {
648
+ return I;
649
+ });
650
+ for (var B = C.length, i = new Array(B), e = new Array(B), n = new Array(B), E = 0; E < B; ++E) {
651
+ var s = t[E], o = C[E], r = o.length, a = _(A.call(s, s && s.__data__, E, t)), h = a.length, c = e[E] = new Array(h), l = i[E] = new Array(h);
652
+ Q(s, o, c, l, n[E] = new Array(r), a, g);
653
+ for (var u, D, N = 0, y = 0; N < h; ++N) if (u = c[N]) {
654
+ for (N >= y && (y = N + 1); !(D = l[y]) && ++y < h;);
655
+ u._next = D || null;
656
+ }
657
+ }
658
+ return (i = new jA(i, t))._enter = e, i._exit = n, i;
659
+ },
660
+ enter: function() {
661
+ return new jA(this._enter || this._groups.map(T), this._parents);
662
+ },
663
+ exit: function() {
664
+ return new jA(this._exit || this._groups.map(T), this._parents);
665
+ },
666
+ join: function(A, g, I) {
667
+ var Q = this.enter(), t = this, C = this.exit();
668
+ return "function" == typeof A ? (Q = A(Q)) && (Q = Q.selection()) : Q = Q.append(A + ""), null != g && (t = g(t)) && (t = t.selection()), null == I ? C.remove() : I(C), Q && t ? Q.merge(t).order() : t;
669
+ },
670
+ merge: function(A) {
671
+ for (var g = A.selection ? A.selection() : A, I = this._groups, Q = g._groups, t = I.length, C = Q.length, B = Math.min(t, C), i = new Array(t), e = 0; e < B; ++e) for (var n, E = I[e], s = Q[e], o = E.length, r = i[e] = new Array(o), a = 0; a < o; ++a) (n = E[a] || s[a]) && (r[a] = n);
672
+ for (; e < t; ++e) i[e] = I[e];
673
+ return new jA(i, this._parents);
674
+ },
675
+ selection: function() {
676
+ return this;
677
+ },
678
+ order: function() {
679
+ for (var A = this._groups, g = -1, I = A.length; ++g < I;) for (var Q, t = A[g], C = t.length - 1, B = t[C]; --C >= 0;) (Q = t[C]) && (B && 4 ^ Q.compareDocumentPosition(B) && B.parentNode.insertBefore(Q, B), B = Q);
680
+ return this;
681
+ },
682
+ sort: function(A) {
683
+ function g(g, I) {
684
+ return g && I ? A(g.__data__, I.__data__) : !g - !I;
685
+ }
686
+ A || (A = P);
687
+ for (var I = this._groups, Q = I.length, t = new Array(Q), C = 0; C < Q; ++C) {
688
+ for (var B, i = I[C], e = i.length, n = t[C] = new Array(e), E = 0; E < e; ++E) (B = i[E]) && (n[E] = B);
689
+ n.sort(g);
690
+ }
691
+ return new jA(t, this._parents).order();
692
+ },
693
+ call: function() {
694
+ var A = arguments[0];
695
+ return arguments[0] = this, A.apply(null, arguments), this;
696
+ },
697
+ nodes: function() {
698
+ return Array.from(this);
699
+ },
700
+ node: function() {
701
+ for (var A = this._groups, g = 0, I = A.length; g < I; ++g) for (var Q = A[g], t = 0, C = Q.length; t < C; ++t) {
702
+ var B = Q[t];
703
+ if (B) return B;
704
+ }
705
+ return null;
706
+ },
707
+ size: function() {
708
+ let A = 0;
709
+ for (const g of this) ++A;
710
+ return A;
711
+ },
712
+ empty: function() {
713
+ return !this.node();
714
+ },
715
+ each: function(A) {
716
+ for (var g = this._groups, I = 0, Q = g.length; I < Q; ++I) for (var t, C = g[I], B = 0, i = C.length; B < i; ++B) (t = C[B]) && A.call(t, t.__data__, B, C);
717
+ return this;
718
+ },
719
+ attr: function(A, g) {
720
+ var I = p(A);
721
+ if (arguments.length < 2) {
722
+ var Q = this.node();
723
+ return I.local ? Q.getAttributeNS(I.space, I.local) : Q.getAttribute(I);
724
+ }
725
+ return this.each((null == g ? I.local ? AA : $ : "function" == typeof g ? I.local ? tA : QA : I.local ? IA : gA)(I, g));
726
+ },
727
+ style: function(A, g, I) {
728
+ return arguments.length > 1 ? this.each((null == g ? BA : "function" == typeof g ? eA : iA)(A, g, null == I ? "" : I)) : nA(this.node(), A);
729
+ },
730
+ property: function(A, g) {
731
+ return arguments.length > 1 ? this.each((null == g ? EA : "function" == typeof g ? oA : sA)(A, g)) : this.node()[A];
732
+ },
733
+ classed: function(A, g) {
734
+ var I = rA(A + "");
735
+ if (arguments.length < 2) {
736
+ for (var Q = aA(this.node()), t = -1, C = I.length; ++t < C;) if (!Q.contains(I[t])) return !1;
737
+ return !0;
738
+ }
739
+ return this.each(("function" == typeof g ? NA : g ? uA : DA)(I, g));
740
+ },
741
+ text: function(A) {
742
+ return arguments.length ? this.each(null == A ? yA : ("function" == typeof A ? GA : wA)(A)) : this.node().textContent;
743
+ },
744
+ html: function(A) {
745
+ return arguments.length ? this.each(null == A ? dA : ("function" == typeof A ? mA : YA)(A)) : this.node().innerHTML;
746
+ },
747
+ raise: function() {
748
+ return this.each(kA);
749
+ },
750
+ lower: function() {
751
+ return this.each(fA);
752
+ },
753
+ append: function(A) {
754
+ var g = "function" == typeof A ? A : b(A);
755
+ return this.select(function() {
756
+ return this.appendChild(g.apply(this, arguments));
757
+ });
758
+ },
759
+ insert: function(A, g) {
760
+ var I = "function" == typeof A ? A : b(A), Q = null == g ? MA : "function" == typeof g ? g : Z(g);
761
+ return this.select(function() {
762
+ return this.insertBefore(I.apply(this, arguments), Q.apply(this, arguments) || null);
763
+ });
764
+ },
765
+ remove: function() {
766
+ return this.each(FA);
767
+ },
768
+ clone: function(A) {
769
+ return this.select(A ? pA : JA);
770
+ },
771
+ datum: function(A) {
772
+ return arguments.length ? this.property("__data__", A) : this.node().__data__;
773
+ },
774
+ on: function(A, g, I) {
775
+ var Q, t, C = function(A) {
776
+ return A.trim().split(/^|\s+/).map(function(A) {
777
+ var g = "", I = A.indexOf(".");
778
+ return I >= 0 && (g = A.slice(I + 1), A = A.slice(0, I)), {
779
+ type: A,
780
+ name: g
781
+ };
782
+ });
783
+ }(A + ""), B = C.length;
784
+ if (!(arguments.length < 2)) {
785
+ for (i = g ? xA : RA, Q = 0; Q < B; ++Q) this.each(i(C[Q], g, I));
786
+ return this;
787
+ }
788
+ var i = this.node().__on;
789
+ if (i) {
790
+ for (var e, n = 0, E = i.length; n < E; ++n) for (Q = 0, e = i[n]; Q < B; ++Q) if ((t = C[Q]).type === e.type && t.name === e.name) return e.value;
791
+ }
792
+ },
793
+ dispatch: function(A, g) {
794
+ return this.each(("function" == typeof g ? ZA : SA)(A, g));
795
+ },
796
+ [Symbol.iterator]: function* () {
797
+ for (var A = this._groups, g = 0, I = A.length; g < I; ++g) for (var Q, t = A[g], C = 0, B = t.length; C < B; ++C) (Q = t[C]) && (yield Q);
798
+ }
799
+ };
800
+ var WA = .7, KA = 1 / WA, TA = "\\s*([+-]?\\d+)\\s*", OA = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", VA = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", qA = /^#([0-9a-f]{3,8})$/, zA = new RegExp(`^rgb\\(${TA},${TA},${TA}\\)$`), _A = new RegExp(`^rgb\\(${VA},${VA},${VA}\\)$`), PA = new RegExp(`^rgba\\(${TA},${TA},${TA},${OA}\\)$`), $A = new RegExp(`^rgba\\(${VA},${VA},${VA},${OA}\\)$`), Ag = new RegExp(`^hsl\\(${OA},${VA},${VA}\\)$`), gg = new RegExp(`^hsla\\(${OA},${VA},${VA},${OA}\\)$`), Ig = {
801
+ aliceblue: 15792383,
802
+ antiquewhite: 16444375,
803
+ aqua: 65535,
804
+ aquamarine: 8388564,
805
+ azure: 15794175,
806
+ beige: 16119260,
807
+ bisque: 16770244,
808
+ black: 0,
809
+ blanchedalmond: 16772045,
810
+ blue: 255,
811
+ blueviolet: 9055202,
812
+ brown: 10824234,
813
+ burlywood: 14596231,
814
+ cadetblue: 6266528,
815
+ chartreuse: 8388352,
816
+ chocolate: 13789470,
817
+ coral: 16744272,
818
+ cornflowerblue: 6591981,
819
+ cornsilk: 16775388,
820
+ crimson: 14423100,
821
+ cyan: 65535,
822
+ darkblue: 139,
823
+ darkcyan: 35723,
824
+ darkgoldenrod: 12092939,
825
+ darkgray: 11119017,
826
+ darkgreen: 25600,
827
+ darkgrey: 11119017,
828
+ darkkhaki: 12433259,
829
+ darkmagenta: 9109643,
830
+ darkolivegreen: 5597999,
831
+ darkorange: 16747520,
832
+ darkorchid: 10040012,
833
+ darkred: 9109504,
834
+ darksalmon: 15308410,
835
+ darkseagreen: 9419919,
836
+ darkslateblue: 4734347,
837
+ darkslategray: 3100495,
838
+ darkslategrey: 3100495,
839
+ darkturquoise: 52945,
840
+ darkviolet: 9699539,
841
+ deeppink: 16716947,
842
+ deepskyblue: 49151,
843
+ dimgray: 6908265,
844
+ dimgrey: 6908265,
845
+ dodgerblue: 2003199,
846
+ firebrick: 11674146,
847
+ floralwhite: 16775920,
848
+ forestgreen: 2263842,
849
+ fuchsia: 16711935,
850
+ gainsboro: 14474460,
851
+ ghostwhite: 16316671,
852
+ gold: 16766720,
853
+ goldenrod: 14329120,
854
+ gray: 8421504,
855
+ green: 32768,
856
+ greenyellow: 11403055,
857
+ grey: 8421504,
858
+ honeydew: 15794160,
859
+ hotpink: 16738740,
860
+ indianred: 13458524,
861
+ indigo: 4915330,
862
+ ivory: 16777200,
863
+ khaki: 15787660,
864
+ lavender: 15132410,
865
+ lavenderblush: 16773365,
866
+ lawngreen: 8190976,
867
+ lemonchiffon: 16775885,
868
+ lightblue: 11393254,
869
+ lightcoral: 15761536,
870
+ lightcyan: 14745599,
871
+ lightgoldenrodyellow: 16448210,
872
+ lightgray: 13882323,
873
+ lightgreen: 9498256,
874
+ lightgrey: 13882323,
875
+ lightpink: 16758465,
876
+ lightsalmon: 16752762,
877
+ lightseagreen: 2142890,
878
+ lightskyblue: 8900346,
879
+ lightslategray: 7833753,
880
+ lightslategrey: 7833753,
881
+ lightsteelblue: 11584734,
882
+ lightyellow: 16777184,
883
+ lime: 65280,
884
+ limegreen: 3329330,
885
+ linen: 16445670,
886
+ magenta: 16711935,
887
+ maroon: 8388608,
888
+ mediumaquamarine: 6737322,
889
+ mediumblue: 205,
890
+ mediumorchid: 12211667,
891
+ mediumpurple: 9662683,
892
+ mediumseagreen: 3978097,
893
+ mediumslateblue: 8087790,
894
+ mediumspringgreen: 64154,
895
+ mediumturquoise: 4772300,
896
+ mediumvioletred: 13047173,
897
+ midnightblue: 1644912,
898
+ mintcream: 16121850,
899
+ mistyrose: 16770273,
900
+ moccasin: 16770229,
901
+ navajowhite: 16768685,
902
+ navy: 128,
903
+ oldlace: 16643558,
904
+ olive: 8421376,
905
+ olivedrab: 7048739,
906
+ orange: 16753920,
907
+ orangered: 16729344,
908
+ orchid: 14315734,
909
+ palegoldenrod: 15657130,
910
+ palegreen: 10025880,
911
+ paleturquoise: 11529966,
912
+ palevioletred: 14381203,
913
+ papayawhip: 16773077,
914
+ peachpuff: 16767673,
915
+ peru: 13468991,
916
+ pink: 16761035,
917
+ plum: 14524637,
918
+ powderblue: 11591910,
919
+ purple: 8388736,
920
+ rebeccapurple: 6697881,
921
+ red: 16711680,
922
+ rosybrown: 12357519,
923
+ royalblue: 4286945,
924
+ saddlebrown: 9127187,
925
+ salmon: 16416882,
926
+ sandybrown: 16032864,
927
+ seagreen: 3050327,
928
+ seashell: 16774638,
929
+ sienna: 10506797,
930
+ silver: 12632256,
931
+ skyblue: 8900331,
932
+ slateblue: 6970061,
933
+ slategray: 7372944,
934
+ slategrey: 7372944,
935
+ snow: 16775930,
936
+ springgreen: 65407,
937
+ steelblue: 4620980,
938
+ tan: 13808780,
939
+ teal: 32896,
940
+ thistle: 14204888,
941
+ tomato: 16737095,
942
+ turquoise: 4251856,
943
+ violet: 15631086,
944
+ wheat: 16113331,
945
+ white: 16777215,
946
+ whitesmoke: 16119285,
947
+ yellow: 16776960,
948
+ yellowgreen: 10145074
949
+ };
950
+ function Qg() {
951
+ return this.rgb().formatHex();
952
+ }
953
+ function tg() {
954
+ return this.rgb().formatRgb();
955
+ }
956
+ function Cg(A) {
957
+ var g, I;
958
+ return A = (A + "").trim().toLowerCase(), (g = qA.exec(A)) ? (I = g[1].length, g = parseInt(g[1], 16), 6 === I ? Bg(g) : 3 === I ? new ng(g >> 8 & 15 | g >> 4 & 240, g >> 4 & 15 | 240 & g, (15 & g) << 4 | 15 & g, 1) : 8 === I ? ig(g >> 24 & 255, g >> 16 & 255, g >> 8 & 255, (255 & g) / 255) : 4 === I ? ig(g >> 12 & 15 | g >> 8 & 240, g >> 8 & 15 | g >> 4 & 240, g >> 4 & 15 | 240 & g, ((15 & g) << 4 | 15 & g) / 255) : null) : (g = zA.exec(A)) ? new ng(g[1], g[2], g[3], 1) : (g = _A.exec(A)) ? new ng(255 * g[1] / 100, 255 * g[2] / 100, 255 * g[3] / 100, 1) : (g = PA.exec(A)) ? ig(g[1], g[2], g[3], g[4]) : (g = $A.exec(A)) ? ig(255 * g[1] / 100, 255 * g[2] / 100, 255 * g[3] / 100, g[4]) : (g = Ag.exec(A)) ? hg(g[1], g[2] / 100, g[3] / 100, 1) : (g = gg.exec(A)) ? hg(g[1], g[2] / 100, g[3] / 100, g[4]) : Ig.hasOwnProperty(A) ? Bg(Ig[A]) : "transparent" === A ? new ng(NaN, NaN, NaN, 0) : null;
959
+ }
960
+ function Bg(A) {
961
+ return new ng(A >> 16 & 255, A >> 8 & 255, 255 & A, 1);
962
+ }
963
+ function ig(A, g, I, Q) {
964
+ return Q <= 0 && (A = g = I = NaN), new ng(A, g, I, Q);
965
+ }
966
+ function eg(A, g, I, Q) {
967
+ return 1 === arguments.length ? ((t = A) instanceof vA || (t = Cg(t)), t ? new ng((t = t.rgb()).r, t.g, t.b, t.opacity) : new ng()) : new ng(A, g, I, null == Q ? 1 : Q);
968
+ var t;
969
+ }
970
+ function ng(A, g, I, Q) {
971
+ this.r = +A, this.g = +g, this.b = +I, this.opacity = +Q;
972
+ }
973
+ function Eg() {
974
+ return `#${ag(this.r)}${ag(this.g)}${ag(this.b)}`;
975
+ }
976
+ function sg() {
977
+ const A = og(this.opacity);
978
+ return `${1 === A ? "rgb(" : "rgba("}${rg(this.r)}, ${rg(this.g)}, ${rg(this.b)}${1 === A ? ")" : `, ${A})`}`;
979
+ }
980
+ function og(A) {
981
+ return isNaN(A) ? 1 : Math.max(0, Math.min(1, A));
982
+ }
983
+ function rg(A) {
984
+ return Math.max(0, Math.min(255, Math.round(A) || 0));
985
+ }
986
+ function ag(A) {
987
+ return ((A = rg(A)) < 16 ? "0" : "") + A.toString(16);
988
+ }
989
+ function hg(A, g, I, Q) {
990
+ return Q <= 0 ? A = g = I = NaN : I <= 0 || I >= 1 ? A = g = NaN : g <= 0 && (A = NaN), new lg(A, g, I, Q);
991
+ }
992
+ function cg(A) {
993
+ if (A instanceof lg) return new lg(A.h, A.s, A.l, A.opacity);
994
+ if (A instanceof vA || (A = Cg(A)), !A) return new lg();
995
+ if (A instanceof lg) return A;
996
+ var g = (A = A.rgb()).r / 255, I = A.g / 255, Q = A.b / 255, t = Math.min(g, I, Q), C = Math.max(g, I, Q), B = NaN, i = C - t, e = (C + t) / 2;
997
+ return i ? (B = g === C ? (I - Q) / i + 6 * (I < Q) : I === C ? (Q - g) / i + 2 : (g - I) / i + 4, i /= e < .5 ? C + t : 2 - C - t, B *= 60) : i = e > 0 && e < 1 ? 0 : B, new lg(B, i, e, A.opacity);
998
+ }
999
+ function lg(A, g, I, Q) {
1000
+ this.h = +A, this.s = +g, this.l = +I, this.opacity = +Q;
1001
+ }
1002
+ function ug(A) {
1003
+ return (A = (A || 0) % 360) < 0 ? A + 360 : A;
1004
+ }
1005
+ function Dg(A) {
1006
+ return Math.max(0, Math.min(1, A || 0));
1007
+ }
1008
+ function Ng(A, g, I) {
1009
+ return 255 * (A < 60 ? g + (I - g) * A / 60 : A < 180 ? I : A < 240 ? g + (I - g) * (240 - A) / 60 : g);
1010
+ }
1011
+ HA(vA, Cg, {
1012
+ copy(A) {
1013
+ return Object.assign(new this.constructor(), this, A);
1014
+ },
1015
+ displayable() {
1016
+ return this.rgb().displayable();
1017
+ },
1018
+ hex: Qg,
1019
+ formatHex: Qg,
1020
+ formatHex8: function() {
1021
+ return this.rgb().formatHex8();
1022
+ },
1023
+ formatHsl: function() {
1024
+ return cg(this).formatHsl();
1025
+ },
1026
+ formatRgb: tg,
1027
+ toString: tg
1028
+ }), HA(ng, eg, LA(vA, {
1029
+ brighter(A) {
1030
+ return A = null == A ? KA : Math.pow(KA, A), new ng(this.r * A, this.g * A, this.b * A, this.opacity);
1031
+ },
1032
+ darker(A) {
1033
+ return A = null == A ? WA : Math.pow(WA, A), new ng(this.r * A, this.g * A, this.b * A, this.opacity);
1034
+ },
1035
+ rgb() {
1036
+ return this;
1037
+ },
1038
+ clamp() {
1039
+ return new ng(rg(this.r), rg(this.g), rg(this.b), og(this.opacity));
1040
+ },
1041
+ displayable() {
1042
+ return -.5 <= this.r && this.r < 255.5 && -.5 <= this.g && this.g < 255.5 && -.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1;
1043
+ },
1044
+ hex: Eg,
1045
+ formatHex: Eg,
1046
+ formatHex8: function() {
1047
+ return `#${ag(this.r)}${ag(this.g)}${ag(this.b)}${ag(255 * (isNaN(this.opacity) ? 1 : this.opacity))}`;
1048
+ },
1049
+ formatRgb: sg,
1050
+ toString: sg
1051
+ })), HA(lg, function(A, g, I, Q) {
1052
+ return 1 === arguments.length ? cg(A) : new lg(A, g, I, null == Q ? 1 : Q);
1053
+ }, LA(vA, {
1054
+ brighter(A) {
1055
+ return A = null == A ? KA : Math.pow(KA, A), new lg(this.h, this.s, this.l * A, this.opacity);
1056
+ },
1057
+ darker(A) {
1058
+ return A = null == A ? WA : Math.pow(WA, A), new lg(this.h, this.s, this.l * A, this.opacity);
1059
+ },
1060
+ rgb() {
1061
+ var A = this.h % 360 + 360 * (this.h < 0), g = isNaN(A) || isNaN(this.s) ? 0 : this.s, I = this.l, Q = I + (I < .5 ? I : 1 - I) * g, t = 2 * I - Q;
1062
+ return new ng(Ng(A >= 240 ? A - 240 : A + 120, t, Q), Ng(A, t, Q), Ng(A < 120 ? A + 240 : A - 120, t, Q), this.opacity);
1063
+ },
1064
+ clamp() {
1065
+ return new lg(ug(this.h), Dg(this.s), Dg(this.l), og(this.opacity));
1066
+ },
1067
+ displayable() {
1068
+ return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1;
1069
+ },
1070
+ formatHsl() {
1071
+ const A = og(this.opacity);
1072
+ return `${1 === A ? "hsl(" : "hsla("}${ug(this.h)}, ${100 * Dg(this.s)}%, ${100 * Dg(this.l)}%${1 === A ? ")" : `, ${A})`}`;
1073
+ }
1074
+ }));
1075
+ var wg = (A) => () => A;
1076
+ function Gg(A, g) {
1077
+ var I = g - A;
1078
+ return I ? function(A, g) {
1079
+ return function(I) {
1080
+ return A + I * g;
1081
+ };
1082
+ }(A, I) : wg(isNaN(A) ? g : A);
1083
+ }
1084
+ var dg = function A(g) {
1085
+ var I = function(A) {
1086
+ return 1 === (A = +A) ? Gg : function(g, I) {
1087
+ return I - g ? function(A, g, I) {
1088
+ return A = Math.pow(A, I), g = Math.pow(g, I) - A, I = 1 / I, function(Q) {
1089
+ return Math.pow(A + Q * g, I);
1090
+ };
1091
+ }(g, I, A) : wg(isNaN(g) ? I : g);
1092
+ };
1093
+ }(g);
1094
+ function Q(A, g) {
1095
+ var Q = I((A = eg(A)).r, (g = eg(g)).r), t = I(A.g, g.g), C = I(A.b, g.b), B = Gg(A.opacity, g.opacity);
1096
+ return function(g) {
1097
+ return A.r = Q(g), A.g = t(g), A.b = C(g), A.opacity = B(g), A + "";
1098
+ };
1099
+ }
1100
+ return Q.gamma = A, Q;
1101
+ }(1);
1102
+ function mg(A, g) {
1103
+ return A = +A, g = +g, function(I) {
1104
+ return A * (1 - I) + g * I;
1105
+ };
1106
+ }
1107
+ var kg = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, fg = new RegExp(kg.source, "g");
1108
+ function Mg(A, g) {
1109
+ var I, Q, t, C = kg.lastIndex = fg.lastIndex = 0, B = -1, i = [], e = [];
1110
+ for (A += "", g += ""; (I = kg.exec(A)) && (Q = fg.exec(g));) (t = Q.index) > C && (t = g.slice(C, t), i[B] ? i[B] += t : i[++B] = t), (I = I[0]) === (Q = Q[0]) ? i[B] ? i[B] += Q : i[++B] = Q : (i[++B] = null, e.push({
1111
+ i: B,
1112
+ x: mg(I, Q)
1113
+ })), C = fg.lastIndex;
1114
+ return C < g.length && (t = g.slice(C), i[B] ? i[B] += t : i[++B] = t), i.length < 2 ? e[0] ? function(A) {
1115
+ return function(g) {
1116
+ return A(g) + "";
1117
+ };
1118
+ }(e[0].x) : function(A) {
1119
+ return function() {
1120
+ return A;
1121
+ };
1122
+ }(g) : (g = e.length, function(A) {
1123
+ for (var I, Q = 0; Q < g; ++Q) i[(I = e[Q]).i] = I.x(A);
1124
+ return i.join("");
1125
+ });
1126
+ }
1127
+ var Fg, Jg = 180 / Math.PI, pg = {
1128
+ translateX: 0,
1129
+ translateY: 0,
1130
+ rotate: 0,
1131
+ skewX: 0,
1132
+ scaleX: 1,
1133
+ scaleY: 1
1134
+ };
1135
+ function Rg(A, g, I, Q, t, C) {
1136
+ var B, i, e;
1137
+ return (B = Math.sqrt(A * A + g * g)) && (A /= B, g /= B), (e = A * I + g * Q) && (I -= A * e, Q -= g * e), (i = Math.sqrt(I * I + Q * Q)) && (I /= i, Q /= i, e /= i), A * Q < g * I && (A = -A, g = -g, e = -e, B = -B), {
1138
+ translateX: t,
1139
+ translateY: C,
1140
+ rotate: Math.atan2(g, A) * Jg,
1141
+ skewX: Math.atan(e) * Jg,
1142
+ scaleX: B,
1143
+ scaleY: i
1144
+ };
1145
+ }
1146
+ function xg(A, g, I, Q) {
1147
+ function t(A) {
1148
+ return A.length ? A.pop() + " " : "";
1149
+ }
1150
+ return function(C, B) {
1151
+ var i = [], e = [];
1152
+ return C = A(C), B = A(B), function(A, Q, t, C, B, i) {
1153
+ if (A !== t || Q !== C) {
1154
+ var e = B.push("translate(", null, g, null, I);
1155
+ i.push({
1156
+ i: e - 4,
1157
+ x: mg(A, t)
1158
+ }, {
1159
+ i: e - 2,
1160
+ x: mg(Q, C)
1161
+ });
1162
+ } else (t || C) && B.push("translate(" + t + g + C + I);
1163
+ }(C.translateX, C.translateY, B.translateX, B.translateY, i, e), function(A, g, I, C) {
1164
+ A !== g ? (A - g > 180 ? g += 360 : g - A > 180 && (A += 360), C.push({
1165
+ i: I.push(t(I) + "rotate(", null, Q) - 2,
1166
+ x: mg(A, g)
1167
+ })) : g && I.push(t(I) + "rotate(" + g + Q);
1168
+ }(C.rotate, B.rotate, i, e), function(A, g, I, C) {
1169
+ A !== g ? C.push({
1170
+ i: I.push(t(I) + "skewX(", null, Q) - 2,
1171
+ x: mg(A, g)
1172
+ }) : g && I.push(t(I) + "skewX(" + g + Q);
1173
+ }(C.skewX, B.skewX, i, e), function(A, g, I, Q, C, B) {
1174
+ if (A !== I || g !== Q) {
1175
+ var i = C.push(t(C) + "scale(", null, ",", null, ")");
1176
+ B.push({
1177
+ i: i - 4,
1178
+ x: mg(A, I)
1179
+ }, {
1180
+ i: i - 2,
1181
+ x: mg(g, Q)
1182
+ });
1183
+ } else 1 === I && 1 === Q || C.push(t(C) + "scale(" + I + "," + Q + ")");
1184
+ }(C.scaleX, C.scaleY, B.scaleX, B.scaleY, i, e), C = B = null, function(A) {
1185
+ for (var g, I = -1, Q = e.length; ++I < Q;) i[(g = e[I]).i] = g.x(A);
1186
+ return i.join("");
1187
+ };
1188
+ };
1189
+ }
1190
+ var bg, Sg, Zg = xg(function(A) {
1191
+ const g = new ("function" == typeof DOMMatrix ? DOMMatrix : WebKitCSSMatrix)(A + "");
1192
+ return g.isIdentity ? pg : Rg(g.a, g.b, g.c, g.d, g.e, g.f);
1193
+ }, "px, ", "px)", "deg)"), Ug = xg(function(A) {
1194
+ return null == A ? pg : (Fg || (Fg = document.createElementNS("http://www.w3.org/2000/svg", "g")), Fg.setAttribute("transform", A), (A = Fg.transform.baseVal.consolidate()) ? Rg((A = A.matrix).a, A.b, A.c, A.d, A.e, A.f) : pg);
1195
+ }, ", ", ")", ")"), jg = 0, Xg = 0, Hg = 0, Lg = 0, vg = 0, Wg = 0, Kg = "object" == typeof performance && performance.now ? performance : Date, Tg = "object" == typeof window && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(A) {
1196
+ setTimeout(A, 17);
1197
+ };
1198
+ function Og() {
1199
+ return vg || (Tg(Vg), vg = Kg.now() + Wg);
1200
+ }
1201
+ function Vg() {
1202
+ vg = 0;
1203
+ }
1204
+ function qg() {
1205
+ this._call = this._time = this._next = null;
1206
+ }
1207
+ function zg(A, g, I) {
1208
+ var Q = new qg();
1209
+ return Q.restart(A, g, I), Q;
1210
+ }
1211
+ function _g() {
1212
+ vg = (Lg = Kg.now()) + Wg, jg = Xg = 0;
1213
+ try {
1214
+ (function() {
1215
+ Og(), ++jg;
1216
+ for (var A, g = bg; g;) (A = vg - g._time) >= 0 && g._call.call(void 0, A), g = g._next;
1217
+ --jg;
1218
+ })();
1219
+ } finally {
1220
+ jg = 0, function() {
1221
+ for (var A, g, I = bg, Q = Infinity; I;) I._call ? (Q > I._time && (Q = I._time), A = I, I = I._next) : (g = I._next, I._next = null, I = A ? A._next = g : bg = g);
1222
+ Sg = A, $g(Q);
1223
+ }(), vg = 0;
1224
+ }
1225
+ }
1226
+ function Pg() {
1227
+ var A = Kg.now(), g = A - Lg;
1228
+ g > 1e3 && (Wg -= g, Lg = A);
1229
+ }
1230
+ function $g(A) {
1231
+ jg || (Xg && (Xg = clearTimeout(Xg)), A - vg > 24 ? (A < Infinity && (Xg = setTimeout(_g, A - Kg.now() - Wg)), Hg && (Hg = clearInterval(Hg))) : (Hg || (Lg = Kg.now(), Hg = setInterval(Pg, 1e3)), jg = 1, Tg(_g)));
1232
+ }
1233
+ function AI(A, g, I) {
1234
+ var Q = new qg();
1235
+ return g = null == g ? 0 : +g, Q.restart((I) => {
1236
+ Q.stop(), A(I + g);
1237
+ }, g, I), Q;
1238
+ }
1239
+ qg.prototype = zg.prototype = {
1240
+ constructor: qg,
1241
+ restart: function(A, g, I) {
1242
+ if ("function" != typeof A) throw new TypeError("callback is not a function");
1243
+ I = (null == I ? Og() : +I) + (null == g ? 0 : +g), this._next || Sg === this || (Sg ? Sg._next = this : bg = this, Sg = this), this._call = A, this._time = I, $g();
1244
+ },
1245
+ stop: function() {
1246
+ this._call && (this._call = null, this._time = Infinity, $g());
1247
+ }
1248
+ };
1249
+ var gI = k("start", "end", "cancel", "interrupt"), II = [];
1250
+ function QI(A, g, I, Q, t, C) {
1251
+ var B = A.__transition;
1252
+ if (B) {
1253
+ if (I in B) return;
1254
+ } else A.__transition = {};
1255
+ (function(A, g, I) {
1256
+ var Q, t = A.__transition;
1257
+ function C(e) {
1258
+ var n, E, s, o;
1259
+ if (1 !== I.state) return i();
1260
+ for (n in t) if ((o = t[n]).name === I.name) {
1261
+ if (3 === o.state) return AI(C);
1262
+ 4 === o.state ? (o.state = 6, o.timer.stop(), o.on.call("interrupt", A, A.__data__, o.index, o.group), delete t[n]) : +n < g && (o.state = 6, o.timer.stop(), o.on.call("cancel", A, A.__data__, o.index, o.group), delete t[n]);
1263
+ }
1264
+ if (AI(function() {
1265
+ 3 === I.state && (I.state = 4, I.timer.restart(B, I.delay, I.time), B(e));
1266
+ }), I.state = 2, I.on.call("start", A, A.__data__, I.index, I.group), 2 === I.state) {
1267
+ for (I.state = 3, Q = new Array(s = I.tween.length), n = 0, E = -1; n < s; ++n) (o = I.tween[n].value.call(A, A.__data__, I.index, I.group)) && (Q[++E] = o);
1268
+ Q.length = E + 1;
1269
+ }
1270
+ }
1271
+ function B(g) {
1272
+ for (var t = g < I.duration ? I.ease.call(null, g / I.duration) : (I.timer.restart(i), I.state = 5, 1), C = -1, B = Q.length; ++C < B;) Q[C].call(A, t);
1273
+ 5 === I.state && (I.on.call("end", A, A.__data__, I.index, I.group), i());
1274
+ }
1275
+ function i() {
1276
+ for (var Q in I.state = 6, I.timer.stop(), delete t[g], t) return;
1277
+ delete A.__transition;
1278
+ }
1279
+ t[g] = I, I.timer = zg(function(A) {
1280
+ I.state = 1, I.timer.restart(C, I.delay, I.time), I.delay <= A && C(A - I.delay);
1281
+ }, 0, I.time);
1282
+ })(A, I, {
1283
+ name: g,
1284
+ index: Q,
1285
+ group: t,
1286
+ on: gI,
1287
+ tween: II,
1288
+ time: C.time,
1289
+ delay: C.delay,
1290
+ duration: C.duration,
1291
+ ease: C.ease,
1292
+ timer: null,
1293
+ state: 0
1294
+ });
1295
+ }
1296
+ function tI(A, g) {
1297
+ var I = BI(A, g);
1298
+ if (I.state > 0) throw new Error("too late; already scheduled");
1299
+ return I;
1300
+ }
1301
+ function CI(A, g) {
1302
+ var I = BI(A, g);
1303
+ if (I.state > 3) throw new Error("too late; already running");
1304
+ return I;
1305
+ }
1306
+ function BI(A, g) {
1307
+ var I = A.__transition;
1308
+ if (!I || !(I = I[g])) throw new Error("transition not found");
1309
+ return I;
1310
+ }
1311
+ function iI(A, g) {
1312
+ var I, Q;
1313
+ return function() {
1314
+ var t = CI(this, A), C = t.tween;
1315
+ if (C !== I) {
1316
+ for (var B = 0, i = (Q = I = C).length; B < i; ++B) if (Q[B].name === g) {
1317
+ (Q = Q.slice()).splice(B, 1);
1318
+ break;
1319
+ }
1320
+ }
1321
+ t.tween = Q;
1322
+ };
1323
+ }
1324
+ function eI(A, g, I) {
1325
+ var Q, t;
1326
+ if ("function" != typeof I) throw new Error();
1327
+ return function() {
1328
+ var C = CI(this, A), B = C.tween;
1329
+ if (B !== Q) {
1330
+ t = (Q = B).slice();
1331
+ for (var i = {
1332
+ name: g,
1333
+ value: I
1334
+ }, e = 0, n = t.length; e < n; ++e) if (t[e].name === g) {
1335
+ t[e] = i;
1336
+ break;
1337
+ }
1338
+ e === n && t.push(i);
1339
+ }
1340
+ C.tween = t;
1341
+ };
1342
+ }
1343
+ function nI(A, g, I) {
1344
+ var Q = A._id;
1345
+ return A.each(function() {
1346
+ var A = CI(this, Q);
1347
+ (A.value || (A.value = {}))[g] = I.apply(this, arguments);
1348
+ }), function(A) {
1349
+ return BI(A, Q).value[g];
1350
+ };
1351
+ }
1352
+ function EI(A, g) {
1353
+ var I;
1354
+ return ("number" == typeof g ? mg : g instanceof Cg ? dg : (I = Cg(g)) ? (g = I, dg) : Mg)(A, g);
1355
+ }
1356
+ function sI(A) {
1357
+ return function() {
1358
+ this.removeAttribute(A);
1359
+ };
1360
+ }
1361
+ function oI(A) {
1362
+ return function() {
1363
+ this.removeAttributeNS(A.space, A.local);
1364
+ };
1365
+ }
1366
+ function rI(A, g, I) {
1367
+ var Q, t, C = I + "";
1368
+ return function() {
1369
+ var B = this.getAttribute(A);
1370
+ return B === C ? null : B === Q ? t : t = g(Q = B, I);
1371
+ };
1372
+ }
1373
+ function aI(A, g, I) {
1374
+ var Q, t, C = I + "";
1375
+ return function() {
1376
+ var B = this.getAttributeNS(A.space, A.local);
1377
+ return B === C ? null : B === Q ? t : t = g(Q = B, I);
1378
+ };
1379
+ }
1380
+ function hI(A, g, I) {
1381
+ var Q, t, C;
1382
+ return function() {
1383
+ var B, i, e = I(this);
1384
+ if (null != e) return (B = this.getAttribute(A)) === (i = e + "") ? null : B === Q && i === t ? C : (t = i, C = g(Q = B, e));
1385
+ this.removeAttribute(A);
1386
+ };
1387
+ }
1388
+ function cI(A, g, I) {
1389
+ var Q, t, C;
1390
+ return function() {
1391
+ var B, i, e = I(this);
1392
+ if (null != e) return (B = this.getAttributeNS(A.space, A.local)) === (i = e + "") ? null : B === Q && i === t ? C : (t = i, C = g(Q = B, e));
1393
+ this.removeAttributeNS(A.space, A.local);
1394
+ };
1395
+ }
1396
+ function lI(A, g) {
1397
+ var I, Q;
1398
+ function t() {
1399
+ var t = g.apply(this, arguments);
1400
+ return t !== Q && (I = (Q = t) && function(A, g) {
1401
+ return function(I) {
1402
+ this.setAttributeNS(A.space, A.local, g.call(this, I));
1403
+ };
1404
+ }(A, t)), I;
1405
+ }
1406
+ return t._value = g, t;
1407
+ }
1408
+ function uI(A, g) {
1409
+ var I, Q;
1410
+ function t() {
1411
+ var t = g.apply(this, arguments);
1412
+ return t !== Q && (I = (Q = t) && function(A, g) {
1413
+ return function(I) {
1414
+ this.setAttribute(A, g.call(this, I));
1415
+ };
1416
+ }(A, t)), I;
1417
+ }
1418
+ return t._value = g, t;
1419
+ }
1420
+ function DI(A, g) {
1421
+ return function() {
1422
+ tI(this, A).delay = +g.apply(this, arguments);
1423
+ };
1424
+ }
1425
+ function NI(A, g) {
1426
+ return g = +g, function() {
1427
+ tI(this, A).delay = g;
1428
+ };
1429
+ }
1430
+ function yI(A, g) {
1431
+ return function() {
1432
+ CI(this, A).duration = +g.apply(this, arguments);
1433
+ };
1434
+ }
1435
+ function wI(A, g) {
1436
+ return g = +g, function() {
1437
+ CI(this, A).duration = g;
1438
+ };
1439
+ }
1440
+ var GI = XA.prototype.constructor;
1441
+ function dI(A) {
1442
+ return function() {
1443
+ this.style.removeProperty(A);
1444
+ };
1445
+ }
1446
+ var YI = 0;
1447
+ function mI(A, g, I, Q) {
1448
+ this._groups = A, this._parents = g, this._name = I, this._id = Q;
1449
+ }
1450
+ function kI() {
1451
+ return ++YI;
1452
+ }
1453
+ var fI = XA.prototype;
1454
+ mI.prototype = function(A) {
1455
+ return XA().transition(A);
1456
+ }.prototype = {
1457
+ constructor: mI,
1458
+ select: function(A) {
1459
+ var g = this._name, I = this._id;
1460
+ "function" != typeof A && (A = Z(A));
1461
+ for (var Q = this._groups, t = Q.length, C = new Array(t), B = 0; B < t; ++B) for (var i, e, n = Q[B], E = n.length, s = C[B] = new Array(E), o = 0; o < E; ++o) (i = n[o]) && (e = A.call(i, i.__data__, o, n)) && ("__data__" in i && (e.__data__ = i.__data__), s[o] = e, QI(s[o], g, I, o, s, BI(i, I)));
1462
+ return new mI(C, this._parents, g, I);
1463
+ },
1464
+ selectAll: function(A) {
1465
+ var g = this._name, I = this._id;
1466
+ "function" != typeof A && (A = j(A));
1467
+ for (var Q = this._groups, t = Q.length, C = [], B = [], i = 0; i < t; ++i) for (var e, n = Q[i], E = n.length, s = 0; s < E; ++s) if (e = n[s]) {
1468
+ for (var o, r = A.call(e, e.__data__, s, n), a = BI(e, I), h = 0, c = r.length; h < c; ++h) (o = r[h]) && QI(o, g, I, h, r, a);
1469
+ C.push(r), B.push(e);
1470
+ }
1471
+ return new mI(C, B, g, I);
1472
+ },
1473
+ selectChild: fI.selectChild,
1474
+ selectChildren: fI.selectChildren,
1475
+ filter: function(A) {
1476
+ "function" != typeof A && (A = X(A));
1477
+ for (var g = this._groups, I = g.length, Q = new Array(I), t = 0; t < I; ++t) for (var C, B = g[t], i = B.length, e = Q[t] = [], n = 0; n < i; ++n) (C = B[n]) && A.call(C, C.__data__, n, B) && e.push(C);
1478
+ return new mI(Q, this._parents, this._name, this._id);
1479
+ },
1480
+ merge: function(A) {
1481
+ if (A._id !== this._id) throw new Error();
1482
+ for (var g = this._groups, I = A._groups, Q = g.length, t = I.length, C = Math.min(Q, t), B = new Array(Q), i = 0; i < C; ++i) for (var e, n = g[i], E = I[i], s = n.length, o = B[i] = new Array(s), r = 0; r < s; ++r) (e = n[r] || E[r]) && (o[r] = e);
1483
+ for (; i < Q; ++i) B[i] = g[i];
1484
+ return new mI(B, this._parents, this._name, this._id);
1485
+ },
1486
+ selection: function() {
1487
+ return new GI(this._groups, this._parents);
1488
+ },
1489
+ transition: function() {
1490
+ for (var A = this._name, g = this._id, I = kI(), Q = this._groups, t = Q.length, C = 0; C < t; ++C) for (var B, i = Q[C], e = i.length, n = 0; n < e; ++n) if (B = i[n]) {
1491
+ var E = BI(B, g);
1492
+ QI(B, A, I, n, i, {
1493
+ time: E.time + E.delay + E.duration,
1494
+ delay: 0,
1495
+ duration: E.duration,
1496
+ ease: E.ease
1497
+ });
1498
+ }
1499
+ return new mI(Q, this._parents, A, I);
1500
+ },
1501
+ call: fI.call,
1502
+ nodes: fI.nodes,
1503
+ node: fI.node,
1504
+ size: fI.size,
1505
+ empty: fI.empty,
1506
+ each: fI.each,
1507
+ on: function(A, g) {
1508
+ var I = this._id;
1509
+ return arguments.length < 2 ? BI(this.node(), I).on.on(A) : this.each(function(A, g, I) {
1510
+ var Q, t, C = function(A) {
1511
+ return (A + "").trim().split(/^|\s+/).every(function(A) {
1512
+ var g = A.indexOf(".");
1513
+ return g >= 0 && (A = A.slice(0, g)), !A || "start" === A;
1514
+ });
1515
+ }(g) ? tI : CI;
1516
+ return function() {
1517
+ var B = C(this, A), i = B.on;
1518
+ i !== Q && (t = (Q = i).copy()).on(g, I), B.on = t;
1519
+ };
1520
+ }(I, A, g));
1521
+ },
1522
+ attr: function(A, g) {
1523
+ var I = p(A), Q = "transform" === I ? Ug : EI;
1524
+ return this.attrTween(A, "function" == typeof g ? (I.local ? cI : hI)(I, Q, nI(this, "attr." + A, g)) : null == g ? (I.local ? oI : sI)(I) : (I.local ? aI : rI)(I, Q, g));
1525
+ },
1526
+ attrTween: function(A, g) {
1527
+ var I = "attr." + A;
1528
+ if (arguments.length < 2) return (I = this.tween(I)) && I._value;
1529
+ if (null == g) return this.tween(I, null);
1530
+ if ("function" != typeof g) throw new Error();
1531
+ var Q = p(A);
1532
+ return this.tween(I, (Q.local ? lI : uI)(Q, g));
1533
+ },
1534
+ style: function(A, g, I) {
1535
+ var Q = "transform" == (A += "") ? Zg : EI;
1536
+ return null == g ? this.styleTween(A, function(A, g) {
1537
+ var I, Q, t;
1538
+ return function() {
1539
+ var C = nA(this, A), B = (this.style.removeProperty(A), nA(this, A));
1540
+ return C === B ? null : C === I && B === Q ? t : t = g(I = C, Q = B);
1541
+ };
1542
+ }(A, Q)).on("end.style." + A, dI(A)) : "function" == typeof g ? this.styleTween(A, function(A, g, I) {
1543
+ var Q, t, C;
1544
+ return function() {
1545
+ var B = nA(this, A), i = I(this), e = i + "";
1546
+ return null == i && (this.style.removeProperty(A), e = i = nA(this, A)), B === e ? null : B === Q && e === t ? C : (t = e, C = g(Q = B, i));
1547
+ };
1548
+ }(A, Q, nI(this, "style." + A, g))).each(function(A, g) {
1549
+ var I, Q, t, C, B = "style." + g, i = "end." + B;
1550
+ return function() {
1551
+ var e = CI(this, A), n = e.on, E = null == e.value[B] ? C || (C = dI(g)) : void 0;
1552
+ n === I && t === E || (Q = (I = n).copy()).on(i, t = E), e.on = Q;
1553
+ };
1554
+ }(this._id, A)) : this.styleTween(A, function(A, g, I) {
1555
+ var Q, t, C = I + "";
1556
+ return function() {
1557
+ var B = nA(this, A);
1558
+ return B === C ? null : B === Q ? t : t = g(Q = B, I);
1559
+ };
1560
+ }(A, Q, g), I).on("end.style." + A, null);
1561
+ },
1562
+ styleTween: function(A, g, I) {
1563
+ var Q = "style." + (A += "");
1564
+ if (arguments.length < 2) return (Q = this.tween(Q)) && Q._value;
1565
+ if (null == g) return this.tween(Q, null);
1566
+ if ("function" != typeof g) throw new Error();
1567
+ return this.tween(Q, function(A, g, I) {
1568
+ var Q, t;
1569
+ function C() {
1570
+ var C = g.apply(this, arguments);
1571
+ return C !== t && (Q = (t = C) && function(A, g, I) {
1572
+ return function(Q) {
1573
+ this.style.setProperty(A, g.call(this, Q), I);
1574
+ };
1575
+ }(A, C, I)), Q;
1576
+ }
1577
+ return C._value = g, C;
1578
+ }(A, g, null == I ? "" : I));
1579
+ },
1580
+ text: function(A) {
1581
+ return this.tween("text", "function" == typeof A ? function(A) {
1582
+ return function() {
1583
+ var g = A(this);
1584
+ this.textContent = null == g ? "" : g;
1585
+ };
1586
+ }(nI(this, "text", A)) : function(A) {
1587
+ return function() {
1588
+ this.textContent = A;
1589
+ };
1590
+ }(null == A ? "" : A + ""));
1591
+ },
1592
+ textTween: function(A) {
1593
+ var g = "text";
1594
+ if (arguments.length < 1) return (g = this.tween(g)) && g._value;
1595
+ if (null == A) return this.tween(g, null);
1596
+ if ("function" != typeof A) throw new Error();
1597
+ return this.tween(g, function(A) {
1598
+ var g, I;
1599
+ function Q() {
1600
+ var Q = A.apply(this, arguments);
1601
+ return Q !== I && (g = (I = Q) && function(A) {
1602
+ return function(g) {
1603
+ this.textContent = A.call(this, g);
1604
+ };
1605
+ }(Q)), g;
1606
+ }
1607
+ return Q._value = A, Q;
1608
+ }(A));
1609
+ },
1610
+ remove: function() {
1611
+ return this.on("end.remove", function(A) {
1612
+ return function() {
1613
+ var g = this.parentNode;
1614
+ for (var I in this.__transition) if (+I !== A) return;
1615
+ g && g.removeChild(this);
1616
+ };
1617
+ }(this._id));
1618
+ },
1619
+ tween: function(A, g) {
1620
+ var I = this._id;
1621
+ if (A += "", arguments.length < 2) {
1622
+ for (var Q, t = BI(this.node(), I).tween, C = 0, B = t.length; C < B; ++C) if ((Q = t[C]).name === A) return Q.value;
1623
+ return null;
1624
+ }
1625
+ return this.each((null == g ? iI : eI)(I, A, g));
1626
+ },
1627
+ delay: function(A) {
1628
+ var g = this._id;
1629
+ return arguments.length ? this.each(("function" == typeof A ? DI : NI)(g, A)) : BI(this.node(), g).delay;
1630
+ },
1631
+ duration: function(A) {
1632
+ var g = this._id;
1633
+ return arguments.length ? this.each(("function" == typeof A ? yI : wI)(g, A)) : BI(this.node(), g).duration;
1634
+ },
1635
+ ease: function(A) {
1636
+ var g = this._id;
1637
+ return arguments.length ? this.each(function(A, g) {
1638
+ if ("function" != typeof g) throw new Error();
1639
+ return function() {
1640
+ CI(this, A).ease = g;
1641
+ };
1642
+ }(g, A)) : BI(this.node(), g).ease;
1643
+ },
1644
+ easeVarying: function(A) {
1645
+ if ("function" != typeof A) throw new Error();
1646
+ return this.each(function(A, g) {
1647
+ return function() {
1648
+ var I = g.apply(this, arguments);
1649
+ if ("function" != typeof I) throw new Error();
1650
+ CI(this, A).ease = I;
1651
+ };
1652
+ }(this._id, A));
1653
+ },
1654
+ end: function() {
1655
+ var A, g, I = this, Q = I._id, t = I.size();
1656
+ return new Promise(function(C, B) {
1657
+ var i = { value: B }, e = { value: function() {
1658
+ 0 === --t && C();
1659
+ } };
1660
+ I.each(function() {
1661
+ var I = CI(this, Q), t = I.on;
1662
+ t !== A && ((g = (A = t).copy())._.cancel.push(i), g._.interrupt.push(i), g._.end.push(e)), I.on = g;
1663
+ }), 0 === t && C();
1664
+ });
1665
+ },
1666
+ [Symbol.iterator]: fI[Symbol.iterator]
1667
+ };
1668
+ var MI = {
1669
+ time: null,
1670
+ delay: 0,
1671
+ duration: 250,
1672
+ ease: function(A) {
1673
+ return ((A *= 2) <= 1 ? A * A * A : (A -= 2) * A * A + 2) / 2;
1674
+ }
1675
+ };
1676
+ function FI(A, g) {
1677
+ for (var I; !(I = A.__transition) || !(I = I[g]);) if (!(A = A.parentNode)) throw new Error(`transition ${g} not found`);
1678
+ return I;
1679
+ }
1680
+ XA.prototype.interrupt = function(A) {
1681
+ return this.each(function() {
1682
+ (function(A, g) {
1683
+ var I, Q, t, C = A.__transition, B = !0;
1684
+ if (C) {
1685
+ for (t in g = null == g ? null : g + "", C) (I = C[t]).name === g ? (Q = I.state > 2 && I.state < 5, I.state = 6, I.timer.stop(), I.on.call(Q ? "interrupt" : "cancel", A, A.__data__, I.index, I.group), delete C[t]) : B = !1;
1686
+ B && delete A.__transition;
1687
+ }
1688
+ })(this, A);
1689
+ });
1690
+ }, XA.prototype.transition = function(A) {
1691
+ var g, I;
1692
+ A instanceof mI ? (g = A._id, A = A._name) : (g = kI(), (I = MI).time = Og(), A = null == A ? null : A + "");
1693
+ for (var Q = this._groups, t = Q.length, C = 0; C < t; ++C) for (var B, i = Q[C], e = i.length, n = 0; n < e; ++n) (B = i[n]) && QI(B, A, g, n, i, I || FI(B, g));
1694
+ return new mI(Q, this._parents, A, g);
1695
+ };
1696
+ const { abs: JI, max: pI, min: RI } = Math;
1697
+ function xI(A) {
1698
+ return { type: A };
1699
+ }
1700
+ function bI(A, g, I) {
1701
+ this.k = A, this.x = g, this.y = I;
1702
+ }
1703
+ ["w", "e"].map(xI), ["n", "s"].map(xI), [
1704
+ "n",
1705
+ "w",
1706
+ "e",
1707
+ "s",
1708
+ "nw",
1709
+ "ne",
1710
+ "sw",
1711
+ "se"
1712
+ ].map(xI), bI.prototype = {
1713
+ constructor: bI,
1714
+ scale: function(A) {
1715
+ return 1 === A ? this : new bI(this.k * A, this.x, this.y);
1716
+ },
1717
+ translate: function(A, g) {
1718
+ return 0 === A & 0 === g ? this : new bI(this.k, this.x + this.k * A, this.y + this.k * g);
1719
+ },
1720
+ apply: function(A) {
1721
+ return [A[0] * this.k + this.x, A[1] * this.k + this.y];
1722
+ },
1723
+ applyX: function(A) {
1724
+ return A * this.k + this.x;
1725
+ },
1726
+ applyY: function(A) {
1727
+ return A * this.k + this.y;
1728
+ },
1729
+ invert: function(A) {
1730
+ return [(A[0] - this.x) / this.k, (A[1] - this.y) / this.k];
1731
+ },
1732
+ invertX: function(A) {
1733
+ return (A - this.x) / this.k;
1734
+ },
1735
+ invertY: function(A) {
1736
+ return (A - this.y) / this.k;
1737
+ },
1738
+ rescaleX: function(A) {
1739
+ return A.copy().domain(A.range().map(this.invertX, this).map(A.invert, A));
1740
+ },
1741
+ rescaleY: function(A) {
1742
+ return A.copy().domain(A.range().map(this.invertY, this).map(A.invert, A));
1743
+ },
1744
+ toString: function() {
1745
+ return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")";
1746
+ }
1747
+ }, new bI(1, 0, 0), bI.prototype;
1748
+ const SI = function(A) {
1749
+ let g, I, Q;
1750
+ function t(A, Q, t = 0, C = A.length) {
1751
+ if (t < C) {
1752
+ if (0 !== g(Q, Q)) return C;
1753
+ do {
1754
+ const g = t + C >>> 1;
1755
+ I(A[g], Q) < 0 ? t = g + 1 : C = g;
1756
+ } while (t < C);
1757
+ }
1758
+ return t;
1759
+ }
1760
+ return 2 !== A.length ? (g = G, I = (g, I) => G(A(g), I), Q = (g, I) => A(g) - I) : (g = A === G || A === d ? A : Y, I = A, Q = A), {
1761
+ left: t,
1762
+ center: function(A, g, I = 0, C = A.length) {
1763
+ const B = t(A, g, I, C - 1);
1764
+ return B > I && Q(A[B - 1], g) > -Q(A[B], g) ? B - 1 : B;
1765
+ },
1766
+ right: function(A, Q, t = 0, C = A.length) {
1767
+ if (t < C) {
1768
+ if (0 !== g(Q, Q)) return C;
1769
+ do {
1770
+ const g = t + C >>> 1;
1771
+ I(A[g], Q) <= 0 ? t = g + 1 : C = g;
1772
+ } while (t < C);
1773
+ }
1774
+ return t;
1775
+ }
1776
+ };
1777
+ }((A) => A.x);
1778
+ function ZI(A, g) {
1779
+ let I = Number.POSITIVE_INFINITY, Q = Number.NEGATIVE_INFINITY, t = Number.POSITIVE_INFINITY, C = Number.NEGATIVE_INFINITY;
1780
+ for (const B of A) I = Math.min(I, B.x), Q = Math.max(Q, B.x), t = Math.min(t, B.y), C = Math.max(C, B.y);
1781
+ return {
1782
+ inputPointCount: g,
1783
+ validPointCount: A.length,
1784
+ xDomain: A.length ? [I, Q] : null,
1785
+ yDomain: A.length ? [t, C] : null
1786
+ };
1787
+ }
1788
+ function UI(A, g, I = A.length) {
1789
+ let Q = Number.POSITIVE_INFINITY, t = Number.NEGATIVE_INFINITY, C = Number.POSITIVE_INFINITY, B = Number.NEGATIVE_INFINITY;
1790
+ for (let i = 0; i < A.length; i += 1) Q = Math.min(Q, A[i]), t = Math.max(t, A[i]), C = Math.min(C, g[i]), B = Math.max(B, g[i]);
1791
+ return {
1792
+ inputPointCount: I,
1793
+ validPointCount: A.length,
1794
+ xDomain: A.length ? [Q, t] : null,
1795
+ yDomain: A.length ? [C, B] : null
1796
+ };
1797
+ }
1798
+ function jI(A, g) {
1799
+ return A ? A.revision === g ? "ok" : "stale-revision" : "not-found";
1800
+ }
1801
+ function XI(A) {
1802
+ return "auto" === A ? "peak" : A;
1803
+ }
1804
+ function HI(A, g) {
1805
+ const I = A[0], Q = A.at(-1);
1806
+ return Number.isFinite(g) && I && Q && g >= I.x && g <= Q.x ? A[SI.center(A, g)] : void 0;
1807
+ }
1808
+ function LI(A) {
1809
+ return A?.y.length ?? 0;
1810
+ }
1811
+ function vI(A, g) {
1812
+ return A.x ? A.x[g] : A.sampleStartTime + (A.sampleSourceIndexes?.[g] ?? g) / A.sampleRate;
1813
+ }
1814
+ function WI(A, g) {
1815
+ const I = (g, I) => {
1816
+ let Q = 0, t = LI(A);
1817
+ for (; Q < t;) {
1818
+ const C = Q + Math.floor((t - Q) / 2);
1819
+ (I ? vI(A, C) <= g : vI(A, C) < g) ? Q = C + 1 : t = C;
1820
+ }
1821
+ return Q;
1822
+ }, Q = Math.min(g[0], g[1]), t = Math.max(g[0], g[1]);
1823
+ return {
1824
+ start: I(Q, !1),
1825
+ end: I(t, !0)
1826
+ };
1827
+ }
1828
+ function KI(A, g, I) {
1829
+ return A.x ? A.x.subarray(g, I) : Float64Array.from({ length: I - g }, (I, Q) => vI(A, g + Q));
1830
+ }
1831
+ function TI(A) {
1832
+ return "wasm" === A?.kind && "registerDataset" in A && "disposeDataset" in A && "disposeAllDatasets" in A && "datasetIndexBytes" in A && "registerSamples" in A && "sampleDataset" in A;
1833
+ }
1834
+ function OI(A, g, I, Q) {
1835
+ if ("typed" === g?.kind) {
1836
+ const A = function(A, g) {
1837
+ const I = Math.min(A.length, g.length);
1838
+ let Q = A.length === g.length;
1839
+ for (let C = 0; C < I && Q; C += 1) Q = Number.isFinite(A[C]) && Number.isFinite(g[C]) && (0 === C || A[C] >= A[C - 1]);
1840
+ if (Q) return {
1841
+ x: A.slice(),
1842
+ y: Float64Array.from(g)
1843
+ };
1844
+ const t = [];
1845
+ for (let C = 0; C < I; C += 1) Number.isFinite(A[C]) && Number.isFinite(g[C]) && t.push(C);
1846
+ return t.sort((g, I) => A[g] - A[I] || g - I), {
1847
+ x: Float64Array.from(t, (g) => A[g]),
1848
+ y: Float64Array.from(t, (A) => g[A])
1849
+ };
1850
+ }(g.x, g.y);
1851
+ return {
1852
+ x: A.x,
1853
+ y: A.y,
1854
+ revision: I,
1855
+ metrics: UI(A.x, A.y, Math.max(g.x.length, g.y.length))
1856
+ };
1857
+ }
1858
+ if ("samples" === g?.kind) {
1859
+ if (!(Number.isFinite(g.sampleRate) && g.sampleRate > 0 && Number.isFinite(g.startTime)) || g.sourceIndexes && g.sourceIndexes.length !== g.values.length) return {
1860
+ y: /* @__PURE__ */ new Float64Array(),
1861
+ sampleStartTime: 0,
1862
+ sampleRate: 1,
1863
+ revision: I,
1864
+ metrics: {
1865
+ inputPointCount: g.values.length,
1866
+ validPointCount: 0,
1867
+ xDomain: null,
1868
+ yDomain: null
1869
+ }
1870
+ };
1871
+ if (!g.sourceIndexes && g.values.every(Number.isFinite)) {
1872
+ const A = Float64Array.from(g.values);
1873
+ let Q = Infinity, t = -Infinity;
1874
+ for (const g of A) Q = Math.min(Q, g), t = Math.max(t, g);
1875
+ return {
1876
+ y: A,
1877
+ sampleStartTime: g.startTime,
1878
+ sampleRate: g.sampleRate,
1879
+ revision: I,
1880
+ metrics: {
1881
+ inputPointCount: A.length,
1882
+ validPointCount: A.length,
1883
+ xDomain: A.length ? [g.startTime, g.startTime + (A.length - 1) / g.sampleRate] : null,
1884
+ yDomain: A.length ? [Q, t] : null
1885
+ }
1886
+ };
1887
+ }
1888
+ const A = Array.from({ length: g.values.length }, (A, g) => g).filter((A) => Number.isFinite(g.values[A])), Q = (A) => g.sourceIndexes?.[A] ?? A;
1889
+ A.sort((A, g) => Q(A) - Q(g) || A - g);
1890
+ const t = Float64Array.from(A, (A) => g.values[A]), C = Uint32Array.from(A, Q), B = (A) => g.startTime + C[A] / g.sampleRate;
1891
+ let i = Number.POSITIVE_INFINITY, e = Number.NEGATIVE_INFINITY;
1892
+ for (const g of t) i = Math.min(i, g), e = Math.max(e, g);
1893
+ return {
1894
+ y: t,
1895
+ sampleStartTime: g.startTime,
1896
+ sampleRate: g.sampleRate,
1897
+ sampleSourceIndexes: C.length === g.values.length && C.every((A, g) => A === g) ? void 0 : C,
1898
+ revision: I,
1899
+ metrics: {
1900
+ inputPointCount: g.values.length,
1901
+ validPointCount: t.length,
1902
+ xDomain: t.length ? [B(0), B(t.length - 1)] : null,
1903
+ yDomain: t.length ? [i, e] : null
1904
+ }
1905
+ };
1906
+ }
1907
+ const t = function(A) {
1908
+ const g = [];
1909
+ let I = !0, Q = Number.NEGATIVE_INFINITY;
1910
+ for (const t of A) Number.isFinite(t.x) && Number.isFinite(t.y) && (t.x < Q && (I = !1), Q = t.x, g.push({
1911
+ x: t.x,
1912
+ y: t.y,
1913
+ ...Number.isFinite(t.error) ? { error: t.error } : {},
1914
+ ...Number.isFinite(t.lowerError) ? { lowerError: t.lowerError } : {},
1915
+ ...Number.isFinite(t.upperError) ? { upperError: t.upperError } : {}
1916
+ }));
1917
+ return I || g.sort((A, g) => A.x - g.x), g;
1918
+ }(A ?? g?.points ?? []);
1919
+ return {
1920
+ x: Float64Array.from(t, (A) => A.x),
1921
+ y: Float64Array.from(t, (A) => A.y),
1922
+ points: t,
1923
+ revision: I,
1924
+ metrics: ZI(t, A?.length ?? g?.points.length ?? 0),
1925
+ index: new w(t, { maxBytes: Q })
1926
+ };
1927
+ }
1928
+ function VI(A, g, I) {
1929
+ TI(A) && void 0 === g.wasmDatasetHandle && (g.wasmDatasetHandle = g.x ? A.registerDataset(g.x, g.y, I) : A.registerSamples(g.y, g.sampleSourceIndexes, g.sampleStartTime, g.sampleRate, I), g.wasmIndexBytes = A.datasetIndexBytes(g.wasmDatasetHandle));
1930
+ }
1931
+ function qI(A, g) {
1932
+ g.index?.dispose(), void 0 !== g.wasmDatasetHandle && TI(A) && A.disposeDataset(g.wasmDatasetHandle);
1933
+ }
1934
+ function zI(A, g, I) {
1935
+ const Q = LI(I);
1936
+ if (g.start === g.end && (0 === g.start || g.end === Q)) return A;
1937
+ const t = g.start > 0 ? [g.start - 1] : [], C = g.end < Q ? [g.end] : [];
1938
+ if ("source-indexes" === A.kind) {
1939
+ const g = Array.from(A.sourceIndexes);
1940
+ return {
1941
+ kind: "source-indexes",
1942
+ sourceIndexes: Uint32Array.from([
1943
+ ...t,
1944
+ ...g,
1945
+ ...C
1946
+ ])
1947
+ };
1948
+ }
1949
+ const B = Array.from(A.x), i = Array.from(A.y);
1950
+ return t.length && (B.unshift(vI(I, t[0])), i.unshift(I.y[t[0]])), C.length && (B.push(vI(I, C[0])), i.push(I.y[C[0]])), {
1951
+ kind: "aggregates",
1952
+ x: Float64Array.from(B),
1953
+ y: Float64Array.from(i)
1954
+ };
1955
+ }
1956
+ function _I(A, g) {
1957
+ return 0 === g ? 0 : Number.isFinite(A) ? Math.min(g, Math.max(1, Math.floor(A))) : g;
1958
+ }
1959
+ function PI(A, g, I, Q) {
1960
+ const t = Q - I;
1961
+ return {
1962
+ start: I + Math.floor(A * t / g),
1963
+ end: I + Math.floor((A + 1) * t / g)
1964
+ };
1965
+ }
1966
+ function $I(A, g) {
1967
+ A[A.length - 1] !== g && A.push(g);
1968
+ }
1969
+ function AQ(A, g, I) {
1970
+ if (A <= g) return Array.from({ length: A }, (A, g) => g);
1971
+ if (1 === g) return [0];
1972
+ if (2 === g) return [0, A - 1];
1973
+ const Q = [0];
1974
+ return I().forEach((A) => $I(Q, A)), $I(Q, A - 1), Q;
1975
+ }
1976
+ const gQ = {
1977
+ kind: "javascript",
1978
+ sample: (A) => function(A, g, I, Q) {
1979
+ if (A.length !== g.length) throw new Error("x and y must have the same length");
1980
+ if ("average" === I || "sum" === I) return function(A, g, I, Q) {
1981
+ const t = _I(I, A.length), C = new Float64Array(t), B = new Float64Array(t);
1982
+ for (let i = 0; i < t; i += 1) {
1983
+ const I = PI(i, t, 0, A.length);
1984
+ for (let Q = I.start; Q < I.end; Q += 1) C[i] += A[Q], B[i] += g[Q];
1985
+ const e = I.end - I.start;
1986
+ C[i] /= e, "average" === Q && (B[i] /= e);
1987
+ }
1988
+ return {
1989
+ kind: "aggregates",
1990
+ x: C,
1991
+ y: B
1992
+ };
1993
+ }(A, g, Q, I);
1994
+ const t = _I(Q, A.length), C = "none" === I || A.length <= t ? Array.from({ length: A.length }, (A, g) => g) : "peak" === I ? function(A, g) {
1995
+ const I = Math.floor((g - 2) / 4);
1996
+ return AQ(A.length, g, () => {
1997
+ if (!I) return [];
1998
+ const g = [];
1999
+ for (let Q = 0; Q < I; Q += 1) {
2000
+ const t = PI(Q, I, 1, A.length - 1);
2001
+ let C = t.start, B = t.start;
2002
+ for (let g = t.start + 1; g < t.end; g += 1) A[g] < A[C] && (C = g), A[g] > A[B] && (B = g);
2003
+ [
2004
+ t.start,
2005
+ C,
2006
+ B,
2007
+ t.end - 1
2008
+ ].sort((A, g) => A - g).forEach((A) => $I(g, A));
2009
+ }
2010
+ return g;
2011
+ });
2012
+ }(g, t) : "lttb" === I ? function(A, g, I) {
2013
+ return AQ(A.length, I, () => {
2014
+ const Q = (A.length - 2) / (I - 2), t = [];
2015
+ let C = 0;
2016
+ for (let B = 0; B < I - 2; B += 1) {
2017
+ const i = Math.min(A.length, Math.floor((B + 1) * Q) + 1), e = Math.min(A.length, Math.floor((B + 2) * Q) + 1);
2018
+ let n = 0, E = 0;
2019
+ for (let I = i; I < e; I += 1) n += A[I], E += g[I];
2020
+ const s = e - i;
2021
+ s ? (n /= s, E /= s) : (n = A[A.length - 1], E = g[g.length - 1]);
2022
+ const o = PI(B, I - 2, 1, A.length - 1);
2023
+ let r = o.start, a = -1;
2024
+ for (let I = o.start; I < o.end; I += 1) {
2025
+ const Q = Math.abs((A[C] - n) * (g[I] - g[C]) - (A[C] - A[I]) * (E - g[C]));
2026
+ Q > a && (a = Q, r = I);
2027
+ }
2028
+ t.push(r), C = r;
2029
+ }
2030
+ return t;
2031
+ });
2032
+ }(A, g, t) : function(A, g, I) {
2033
+ const Q = "minmax" === I ? Math.floor((g - 2) / 2) : Math.max(0, g - 2);
2034
+ return AQ(A.length, g, () => {
2035
+ if (!Q) return [];
2036
+ const g = [];
2037
+ for (let t = 0; t < Q; t += 1) {
2038
+ const C = PI(t, Q, 1, A.length - 1);
2039
+ let B = C.start, i = C.start;
2040
+ for (let g = C.start + 1; g < C.end; g += 1) A[g] < A[B] && (B = g), A[g] > A[i] && (i = g);
2041
+ "min" === I ? $I(g, B) : "max" === I ? $I(g, i) : B <= i ? ($I(g, B), $I(g, i)) : ($I(g, i), $I(g, B));
2042
+ }
2043
+ return g;
2044
+ });
2045
+ }(g, t, I);
2046
+ return {
2047
+ kind: "source-indexes",
2048
+ sourceIndexes: Uint32Array.from(C)
2049
+ };
2050
+ }(A.x, A.y, A.strategy, A.targetPointCount)
2051
+ };
2052
+ var IQ = class {
2053
+ entries = /* @__PURE__ */ new Map();
2054
+ bytes = 0;
2055
+ maxEntries;
2056
+ maxBytes;
2057
+ constructor(A = {}) {
2058
+ this.maxEntries = Number.isFinite(A.maxEntries) ? Math.max(0, Math.floor(A.maxEntries ?? 0)) : 96, this.maxBytes = Number.isFinite(A.maxBytes) ? Math.max(0, Math.floor(A.maxBytes ?? 0)) : 16777216;
2059
+ }
2060
+ get metrics() {
2061
+ return {
2062
+ entries: this.entries.size,
2063
+ bytes: this.bytes,
2064
+ maxEntries: this.maxEntries,
2065
+ maxBytes: this.maxBytes
2066
+ };
2067
+ }
2068
+ get(A) {
2069
+ const g = this.entries.get(A);
2070
+ if (g) return this.entries.delete(A), this.entries.set(A, g), g.output;
2071
+ }
2072
+ set(A, g) {
2073
+ const I = function(A) {
2074
+ return "source-indexes" === A.kind ? A.sourceIndexes.byteLength : A.x.byteLength + A.y.byteLength;
2075
+ }(g);
2076
+ if (I > this.maxBytes || 0 === this.maxEntries) return;
2077
+ const Q = this.entries.get(A);
2078
+ for (Q && (this.bytes -= Q.bytes, this.entries.delete(A)), this.entries.set(A, {
2079
+ output: g,
2080
+ bytes: I
2081
+ }), this.bytes += I; this.entries.size > this.maxEntries || this.bytes > this.maxBytes;) {
2082
+ const A = this.entries.entries().next().value;
2083
+ if (!A) break;
2084
+ const [g, I] = A;
2085
+ this.entries.delete(g), this.bytes -= I.bytes;
2086
+ }
2087
+ }
2088
+ deleteDataset(A) {
2089
+ const g = `${A}\0`;
2090
+ for (const [I, Q] of this.entries) I.startsWith(g) && (this.entries.delete(I), this.bytes -= Q.bytes);
2091
+ }
2092
+ clear() {
2093
+ this.entries.clear(), this.bytes = 0;
2094
+ }
2095
+ };
2096
+ const QQ = new class {
2097
+ datasets = /* @__PURE__ */ new Map();
2098
+ javascriptBackend;
2099
+ cache;
2100
+ indexMaxBytes;
2101
+ wasmBackend;
2102
+ constructor(A = {}) {
2103
+ this.javascriptBackend = A.javascriptBackend ?? gQ, this.wasmBackend = A.wasmBackend, this.indexMaxBytes = A.indexMaxBytes, this.cache = new IQ({
2104
+ maxEntries: A.cacheMaxEntries,
2105
+ maxBytes: A.cacheMaxBytes
2106
+ });
2107
+ }
2108
+ get resourceMetrics() {
2109
+ return {
2110
+ datasetCount: this.datasets.size,
2111
+ indexBytes: [...this.datasets.values()].reduce((A, g) => A + (g.wasmIndexBytes ?? g.index?.byteLength ?? 0), 0),
2112
+ cache: this.cache.metrics
2113
+ };
2114
+ }
2115
+ setWasmBackend(A) {
2116
+ this.wasmBackend && this.wasmBackend !== A && TI(this.wasmBackend) && (this.wasmBackend.disposeAllDatasets(), this.datasets.forEach((A) => {
2117
+ A.wasmDatasetHandle = void 0, A.wasmIndexBytes = void 0;
2118
+ })), this.wasmBackend = A, TI(A) && this.datasets.forEach((g) => VI(A, g, this.indexMaxBytes));
2119
+ }
2120
+ handle(A) {
2121
+ switch (A.type) {
2122
+ case "register-dataset": return this.register(A.datasetId, A.requestId, A.points, A.dataset);
2123
+ case "replace-dataset": return this.replace(A.datasetId, A.requestId, A.revision, A.points, A.dataset);
2124
+ case "sample-viewport": return this.sample(A);
2125
+ case "find-nearest-point": return this.findNearest(A.datasetId, A.requestId, A.revision, A.x);
2126
+ case "get-dataset-metrics": return this.metrics(A.datasetId, A.requestId, A.revision);
2127
+ case "dispose-dataset": return this.dispose(A.datasetId, A.requestId, A.revision);
2128
+ case "dispose-all": return this.disposeAll(A.requestId);
2129
+ }
2130
+ }
2131
+ register(A, g, I, Q) {
2132
+ const t = this.datasets.get(A);
2133
+ if (t) return this.datasetResponse(g, A, t, "stale-revision");
2134
+ const C = OI(I, Q, 1, this.indexMaxBytes);
2135
+ return VI(this.wasmBackend, C, this.indexMaxBytes), this.datasets.set(A, C), this.datasetResponse(g, A, C, "ok");
2136
+ }
2137
+ replace(A, g, I, Q, t) {
2138
+ const C = this.datasets.get(A), B = jI(C, I);
2139
+ if ("ok" !== B || !C) return this.datasetResponse(g, A, C, B);
2140
+ qI(this.wasmBackend, C), this.cache.deleteDataset(A);
2141
+ const i = OI(Q, t, C.revision + 1, this.indexMaxBytes);
2142
+ return VI(this.wasmBackend, i, this.indexMaxBytes), this.datasets.set(A, i), this.datasetResponse(g, A, i, "ok");
2143
+ }
2144
+ sample(A) {
2145
+ return {
2146
+ type: "sample-viewport-response",
2147
+ requestId: A.requestId,
2148
+ results: A.series.map((g) => this.sampleSeries(A.requestId, g))
2149
+ };
2150
+ }
2151
+ sampleSeries(A, g) {
2152
+ const I = performance.now(), Q = this.datasets.get(g.datasetId), t = jI(Q, g.revision);
2153
+ if ("ok" !== t || !Q) return this.sampleResponse(A, g, t, void 0, "unavailable", "sampled", 0, I, !1);
2154
+ const C = WI(Q, g.xDomain), B = C.end - C.start;
2155
+ if (function(A, g) {
2156
+ if ("raw" === A.mode) return !0;
2157
+ if ("auto" !== A.mode) return !1;
2158
+ const I = Number.isFinite(A.autoThreshold) ? Math.max(1, Math.floor(A.autoThreshold ?? 0)) : 1e3;
2159
+ if (!A.previousSelectedMode) return g <= I;
2160
+ const Q = Number.isFinite(A.autoHysteresis) ? Math.max(0, Math.floor(A.autoHysteresis ?? 0)) : 0;
2161
+ return "raw" === A.previousSelectedMode ? g <= I + Q : g <= Math.max(0, I - Q);
2162
+ }(g, B)) return this.sampleResponse(A, g, "ok", zI({
2163
+ kind: "source-indexes",
2164
+ sourceIndexes: Uint32Array.from({ length: B }, (A, g) => C.start + g)
2165
+ }, C, Q), "raw", "raw", B, I, !1);
2166
+ const i = "wasm" === g.mode || "auto" === g.mode && this.wasmBackend ? this.wasmBackend : this.javascriptBackend, e = !i && "javascript" === g.wasmFailureFallback, n = i ?? (e ? this.javascriptBackend : void 0);
2167
+ if (!n) return this.sampleResponse(A, g, "wasm-unavailable", void 0, "unavailable", "sampled", B, I, !1);
2168
+ const E = XI(g.strategy), s = function(A) {
2169
+ if (Number.isFinite(A.maxPointCount) && (A.maxPointCount ?? 0) >= 1) return Math.floor(A.maxPointCount);
2170
+ const g = Number.isFinite(A.plotWidth) ? Math.max(0, A.plotWidth) : 0, I = Number.isFinite(A.maxPointsPerPixel) ? Math.max(0, A.maxPointsPerPixel ?? 0) : 4;
2171
+ return Math.max(1, Math.floor(g * I));
2172
+ }(g), o = function(A, g, I, Q, t) {
2173
+ return [
2174
+ A.datasetId,
2175
+ A.revision,
2176
+ g.start,
2177
+ g.end,
2178
+ A.plotWidth,
2179
+ Q,
2180
+ A.maxPointsPerPixel,
2181
+ A.maxPointCount,
2182
+ A.mode,
2183
+ t,
2184
+ I,
2185
+ A.lineType ?? "linear",
2186
+ A.pointType ?? "none",
2187
+ !0 === A.errorBarVisible ? 1 : 0,
2188
+ A.pointMinSpacing ?? 0,
2189
+ A.errorBarMinSpacing ?? 0
2190
+ ].join("\0");
2191
+ }(g, C, E, s, n.kind), r = this.cache.get(o);
2192
+ if (r) return this.sampleResponse(A, g, e ? "wasm-unavailable" : "ok", r, n.kind, "sampled", B, I, !0);
2193
+ const a = zI(("wasm" === n.kind ? void 0 !== Q.wasmDatasetHandle && TI(n) ? n.sampleDataset(Q.wasmDatasetHandle, C.start, C.end, E, s) : void 0 : Q.index?.sample(C.start, C.end, E, s)) ?? function(A, g) {
2194
+ return "aggregates" === A.kind ? A : {
2195
+ kind: "source-indexes",
2196
+ sourceIndexes: Uint32Array.from(A.sourceIndexes, (A) => A + g)
2197
+ };
2198
+ }(n.sample({
2199
+ x: KI(Q, C.start, C.end),
2200
+ y: Q.y.subarray(C.start, C.end),
2201
+ points: Q.points?.slice(C.start, C.end) ?? [],
2202
+ strategy: E,
2203
+ targetPointCount: s
2204
+ }), C.start), C, Q);
2205
+ return this.cache.set(o, a), void 0 !== Q.wasmDatasetHandle && TI(n) && (Q.wasmIndexBytes = n.datasetIndexBytes(Q.wasmDatasetHandle)), this.sampleResponse(A, g, e ? "wasm-unavailable" : "ok", a, n.kind, "sampled", B, I, !1);
2206
+ }
2207
+ sampleResponse(A, g, I, Q, t, C, B, i, e) {
2208
+ const n = function(A, g, I, Q, t, C, B, i) {
2209
+ return {
2210
+ seriesId: A.seriesId,
2211
+ datasetId: A.datasetId,
2212
+ mode: A.mode,
2213
+ selectedMode: t,
2214
+ backend: Q,
2215
+ strategy: XI(A.strategy),
2216
+ sourcePointCount: g,
2217
+ visiblePointCount: I,
2218
+ renderedPointCount: B,
2219
+ durationMs: C,
2220
+ cacheHit: i,
2221
+ requestId: 0,
2222
+ revision: A.revision,
2223
+ rawPointLimitExceeded: "raw" === t && Number.isFinite(A.rawPointLimit) && I > (A.rawPointLimit ?? Number.POSITIVE_INFINITY),
2224
+ scheduledRequestCount: 0,
2225
+ coalescedRequestCount: 0,
2226
+ maxPendingRequestCount: 0
2227
+ };
2228
+ }(g, LI(this.datasets.get(g.datasetId)), B, t, C, performance.now() - i, function(A) {
2229
+ return A ? "source-indexes" === A.kind ? A.sourceIndexes.length : A.x.length : 0;
2230
+ }(Q), e);
2231
+ return n.requestId = A, {
2232
+ seriesId: g.seriesId,
2233
+ datasetId: g.datasetId,
2234
+ revision: g.revision,
2235
+ status: I,
2236
+ output: Q,
2237
+ diagnostics: n
2238
+ };
2239
+ }
2240
+ findNearest(A, g, I, Q) {
2241
+ const t = this.datasets.get(A), C = jI(t, I);
2242
+ return "ok" === C && t ? {
2243
+ type: "find-nearest-point-response",
2244
+ requestId: g,
2245
+ datasetId: A,
2246
+ revision: I,
2247
+ status: C,
2248
+ point: t.points ? HI(t.points, Q) : (() => {
2249
+ const A = WI(t, [Q, Q]);
2250
+ if (!LI(t) || Q < vI(t, 0) || Q > vI(t, LI(t) - 1)) return;
2251
+ const g = Math.min(LI(t) - 1, A.start), I = Math.max(0, g - 1), C = Math.abs(Q - vI(t, I)) < Math.abs(vI(t, g) - Q) ? I : g;
2252
+ return Number.isFinite(Q) && LI(t) ? {
2253
+ x: vI(t, C),
2254
+ y: t.y[C]
2255
+ } : void 0;
2256
+ })()
2257
+ } : {
2258
+ type: "find-nearest-point-response",
2259
+ requestId: g,
2260
+ datasetId: A,
2261
+ revision: I,
2262
+ status: C
2263
+ };
2264
+ }
2265
+ metrics(A, g, I) {
2266
+ const Q = this.datasets.get(A);
2267
+ return this.datasetResponse(g, A, Q, jI(Q, I));
2268
+ }
2269
+ dispose(A, g, I) {
2270
+ const Q = this.datasets.get(A), t = jI(Q, I);
2271
+ return "ok" === t && Q && (qI(this.wasmBackend, Q), this.cache.deleteDataset(A), this.datasets.delete(A)), this.datasetResponse(g, A, Q, t);
2272
+ }
2273
+ disposeAll(A) {
2274
+ const g = [...this.datasets.keys()];
2275
+ return this.datasets.forEach((A) => qI(this.wasmBackend, A)), TI(this.wasmBackend) && this.wasmBackend.disposeAllDatasets(), this.datasets.clear(), this.cache.clear(), {
2276
+ type: "dispose-all-response",
2277
+ requestId: A,
2278
+ disposedDatasetIds: g
2279
+ };
2280
+ }
2281
+ datasetResponse(A, g, I, Q) {
2282
+ return {
2283
+ type: "dataset-response",
2284
+ requestId: A,
2285
+ datasetId: g,
2286
+ revision: I?.revision ?? 0,
2287
+ status: Q,
2288
+ metrics: I ? {
2289
+ ...I.metrics,
2290
+ indexBytes: I.wasmIndexBytes ?? I.index?.byteLength ?? 0
2291
+ } : void 0
2292
+ };
2293
+ }
2294
+ }();
2295
+ let tQ, CQ;
2296
+ const BQ = globalThis;
2297
+ BQ.onmessage = async (Q) => {
2298
+ try {
2299
+ "sample-viewport" === (u = Q.data).type && u.series.some((A) => "raw" !== A.mode) && await async function() {
2300
+ CQ || (tQ ??= (c ??= Promise.resolve(async function(A) {
2301
+ if (void 0 !== o) return o;
2302
+ void 0 !== A && (Object.getPrototypeOf(A) === Object.prototype ? {module_or_path: A} = A : console.warn("using deprecated parameters for the initialization function; pass a single object instead")), void 0 === A && (A = new URL("data:application/wasm;base64,AGFzbQEAAAAB0AEZYAAAYAABf2ABfwBgAX8Bf2ACf38AYAJ/fwF/YAJ/fwFvYAN/f38AYAN/f38Bf2AEf39/fwBgBH9/f38Bf2AEf39/fwR/f39/YAV/f39/fwBgBX9/f39/AX9gBX9/f39/A39/f2AFf39/f38Ef39/f2AGf39/f39/AGAGf39/f39/AX9gBn9/f39/fwR/f39/YAd/f39/f39/AGAHf39/f398fABgCH9/f39/fHx/AGAGf39/f3x8BH9/f39gB39/f398fH8Df39/YAJ8fAF8AoQBAh4uL3dhdmVmb3JtX3NhbXBsaW5nX3dhc21fYmcuanMfX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZQAAHi4vd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbV9iZy5qcyBfX3diaW5kZ2VuX2Nhc3RfMDAwMDAwMDAwMDAwMDAwMQAGA4wBigEDEAwQEBMMBQoMAhEQFQgMCgwEBxQEAgQFBAQTAQQECQkFBRAQFBMMBw0HBwQTBAwMBxAQEAwDCRUQBAIAAgICAgMHAwcIBAcFAwIEBwUFDRIWEg8XDwQLBQMOAgICAgkEAwICBAIFGBgEBwUHBAQICgIEBQcECAACAgAFBQQEBAUFAgIEBAUDAAAECQJwARcXbwCACAUDAQARBgkBfwFBgIDAAAsH5AIRBm1lbW9yeQIAD2NhbGN1bGF0ZV9yYW5nZQBZD2Rpc3Bvc2VfZGF0YXNldAA4EmZpbmRfdmlzaWJsZV9yYW5nZQBTEHJlZ2lzdGVyX2RhdGFzZXQAXBdyZWdpc3Rlcl9zYW1wbGVfZGF0YXNldABWEXNhbXBsZV9hZ2dyZWdhdGVzAFIZc2FtcGxlX2RhdGFzZXRfYWdncmVnYXRlcwBXFnNhbXBsZV9kYXRhc2V0X2luZGV4ZXMAVQ5zYW1wbGVfaW5kZXhlcwBUFGRpc3Bvc2VfYWxsX2RhdGFzZXRzAD4TZGF0YXNldF9pbmRleF9ieXRlcwBFFV9fd2JpbmRnZW5fZXh0ZXJucmVmcwEBEV9fd2JpbmRnZW5fbWFsbG9jAE8ZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYwA/D19fd2JpbmRnZW5fZnJlZQBuEF9fd2JpbmRnZW5fc3RhcnQAAAkiAQBBAQsWiQEBhgFaZ0ck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AggiDqdBgICA/3lxQbCAgIACcjYCCEEBIQ0gACgCACIKIAAoAgQiCyAMIAIgAxBRDQNBACEHIAEgCWtB//8DcSECA0AgB0H//wNxIAJPDQJBASENIAdBAWohByAKQTAgCygCEBEFAEUNAAwECwtBASENIAogCyAMIAIgAxBRDQIgCiAEIAUgCygCDBEIAA0CQQAhByAIIAFrQf//A3EhAANAIAdB//8DcSICIABJIQ0gAiAATw0DIAdBAWohByAKIAkgCygCEBEFAEUNAAwDCwtBASENIAogBCAFIAsoAgwRCAANASAAIA43AghBAA8LQQEhDSAAKAIAIgcgACgCBCIKIAwgAiADEFENACAHIAQgBSAKKAIMEQgAIQ0LIA0L/QUDBX8CfgN8IwBB8ABrIgYkAAJAAkACQAJAIAIgBEYNAEHXi8AAQSEQba0hC0GAgICAeCEHIAZBGGohBAwBC0EAIQcCQAJAIAINAEIAIQtBgICAgHghCEQAAAAAAAAAACENQQghCUEAIQEMAQsgAkEDdCEKQQAhCCABIQQgAyEJAkACQAJAAkADQCAEKQMAQv///////////wCDQv/////////3/wBVDQEgCSkDAEL///////////8Ag0L/////////9/8AVQ0BIARBCGohBCAJQQhqIQkgAiAIQQFqIghGDQIMAAsLIAggAkkNAQtEAAAAAAAAAAAhDSACQQFGDQEgASACQX9qIgRBA3RqKwMAIAErAwChIAS4oyENDAELQaSLwABBMxBtrSELQYCAgIB4IQcgBkEYaiEEDAILQQAhBEEAIQkCQANAAkAgCiAERw0AQYCAgIB4IQgMAgsgASAEaiEIIAm4IQ4gBEEIaiEEIAlBAWohCSAIKwMAIg8gDSAOoiABKwMAoCIOoZkgD5kgDpkQaUQAAAAAAADwPxBpRAAAAAAAACA9omUNAAsQigEgCkEIEH0iBEUNAwJAIApFDQAgBCABIAr8CgAACyACrUIghiAErYQhDCACIQgLEIoBIApBCBB9IglFDQMCQCAKRQ0AIAkgAyAK/AoAAAsgASkDACELIAIhAQsgBkEANgIYIAZBEGohBAsgBCAHNgIAAkACQCAGKAIYIgRBgICAgHhHDQAgC6chBEEBIQkMAQsgBiAGKAIQNgJoIAZBBDYCZCAGIAQ2AmAgBkEANgJcIAZC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Cw8AQZqUwABB8wAgABBOAAsSAEHTlMAAQZkBQaCVwAAQTgALCQAgACABEGgPCwkAIAAgARBKDwsJACABIAAQYgALDAAgACABKQIANwMACwkAIAEgABB/AAsNACABQdCVwABBGBAQCw0AIAFBsJXAAEEgEBALBwAgABBlAAsHACAAED0ACwsAQQBBAToA+JlACwkAIABBADYCAAsGABCLAQALBwBB6JXAAAsDAA8LAwAACwuiFgIAQYCAwAAL6BUWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc2hhcmVkL3NtYWxsc29ydC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL3NvcnQvc3RhYmxlL3F1aWNrc29ydC5ycwAvcnVzdGMvNTk4MDc2MTZlMWZhMjU0MDcyNGJmYmFjMTRkNzk3NmQ3ZTRhMzg2MC9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTE4L3NyYy9leHRlcm5yZWYucnMAL3J1c3RjLzU5ODA3NjE2ZTFmYTI1NDA3MjRiZmJhYzE0ZDc5NzZkN2U0YTM4NjAvbGli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MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlhdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm91c2VyLXByb3ZpZGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBhIHRvdGFsIG9yZGVyABoBEABfAAAAXAMAAAUAAABSZWZDZWxsIGFscmVhZHkgbXV0YWJseSBib3Jyb3dlZFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB6JXAAAsoAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAADURARuYW1lABwbd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbS53YXNtAe1DiwEBGFJlZihTdHJpbmcpIC0+IEV4dGVybnJlZgJhPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpkbG1hbGxvYzo6RGxtYWxsb2M8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OnN5czo6U3lzdGVtPj46Om1hbGxvYwNId2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6U3RvcmVkRGF0YXNldDo6c2FtcGxlX2luZGV4ZXM6Omg2MWUzZjgxMTcwZDM3MDY3BDl3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpzb3VyY2VfaW5kZXhlczo6aDQ2ZjNjMTMyODIyNWU2NzIFS3dhdmVmb3JtX3NhbXBsaW5nX3dhc206OlN0b3JlZERhdGFzZXQ6OnNhbXBsZV9hZ2dyZWdhdGVzOjpoOThiYzBkMGNkZWQ4MmY2ZQY5Y29yZTo6c2xpY2U6OnNvcnQ6OnN0YWJsZTo6ZHJpZnQ6OnNvcnQ6OmhiMGYzYWUzMDFkNTZkNDVhB0Jjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpxdWlja3NvcnQ6OnF1aWNrc29ydDo6aDQyMGFkOTE2NGI2NDVlM2IIWGNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c21hbGxfc29ydF9nZW5lcmFsX3dpdGhfc2NyYXRjaDo6aGNmYzk3ZmQzMzIxNzQ2MWYJMmNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnN0cjo6Y291bnQ6OmRvX2NvdW50X2NoYXJzCihfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3JkbF9yZWFsbG9jCzR3YXZlZm9ybV9zYW1wbGluZ193YXNtOjphZ2dyZWdhdGU6OmhkY2UwYWY2ODJjNjRkZjNhDF88ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6ZnJlZQ02PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6Rm9ybWF0dGVyPjo6cGFkX2ludGVncmFsDjt3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpyZWdpc3Rlcl9kYXRhc2V0OjpoM2YzMzNhZDk0ZDVkYTI0MA9Cd2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6cmVnaXN0ZXJfc2FtcGxlX2RhdGFzZXQ6OmhhYzNjYTBmNWUyMzNlNzhiEC08Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpGb3JtYXR0ZXI+OjpwYWQROndhdmVmb3JtX3NhbXBsaW5nX3dhc206OmNhbGN1bGF0ZV9yYW5nZTo6aGI4ZjY0N2JhZGEyYWYwOWMSImNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6d3JpdGUTO3dhdmVmb3JtX3NhbXBsaW5nX3dhc206OnZhbGlkYXRlZF9wb2ludHM6Omg5YTcxMGE2MTYxZjE1NjY3FGg8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6ZGlzcG9zZV9jaHVuaxU7d2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6ZW5kcG9pbnRzX29yX2FsbDo6aGZmNmE2YTc2YjM0YmZiYTQWPXdhdmVmb3JtX3NhbXBsaW5nX3dhc206OmZpbmRfdmlzaWJsZV9yYW5nZTo6aDVhYzhjM2I0MTU5NDIxNzIXRWNvcmU6OnNsaWNlOjpzb3J0OjpzaGFyZWQ6OnNtYWxsc29ydDo6c29ydDRfc3RhYmxlOjpoZTAzMTE1NjhkZDE5NTM4OBhSY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHdhdmVmb3JtX3NhbXBsaW5nX3dhc206OlN0b3JlZERhdGFzZXQ+OjpoNzUwMjgxMjc0Y2ExNmZjNhk0YWxsb2M6OnZlYzo6VmVjPFQsQT46OnJlc2l6ZV93aXRoOjpoNTY4NjEzOTQ2NGQyNzM2ZhpjPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpkbG1hbGxvYzo6RGxtYWxsb2M8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OnN5czo6U3lzdGVtPj46Om1lbWFsaWduGzRhbGxvYzo6dmVjOjpWZWM8VCxBPjo6cmVzaXplX3dpdGg6Omg0Yzc1ODgxZTExZWY5YzI0HGc8ZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OmRsbWFsbG9jOjpEbG1hbGxvYzxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0+Pjo6dW5saW5rX2NodW5rHQ5zYW1wbGVfaW5kZXhlcx4XX19leHRlcm5yZWZfdGFibGVfYWxsb2MfbTxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6ZGxtYWxsb2M6OkRsbWFsbG9jPGRsbWFsbG9jW2UyNGEyNzcwMDYzNGQ2MDldOjpzeXM6OlN5c3RlbT4+OjppbnNlcnRfbGFyZ2VfY2h1bmsgaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OmZvbGQ6OmgyYTk3YjkwYmNjNDI0NGMyIVJjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpzbWFsbHNvcnQ6Omluc2VydGlvbl9zb3J0X3NoaWZ0X2xlZnQ6OmhlOGU1ODA1Y2UxZGZmNjY1IjZjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpzbGljZTo6aW5kZXg6OnNsaWNlX2luZGV4X2ZhaWwjMjx1MzIgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpEaXNwbGF5Pjo6Zm10JFs8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyJRlzYW1wbGVfZGF0YXNldF9hZ2dyZWdhdGVzJhZzYW1wbGVfZGF0YXNldF9pbmRleGVzJxJmaW5kX3Zpc2libGVfcmFuZ2UoEXNhbXBsZV9hZ2dyZWdhdGVzKQ9jYWxjdWxhdGVfcmFuZ2UqOHN0ZDo6dGhyZWFkOjpsb2NhbDo6TG9jYWxLZXk8VD46OndpdGg6OmhlOTVjZWY1NTk3NjZjZTAwK0Bjb3JlOjpzbGljZTo6c29ydDo6c2hhcmVkOjpwaXZvdDo6bWVkaWFuM19yZWM6OmhlMDkzZWQ3OTU3Mjg1MmE2LDhzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoNzlkNTExMzk4ZjU0Y2Y4OS04c3RkOjp0aHJlYWQ6OmxvY2FsOjpMb2NhbEtleTxUPjo6d2l0aDo6aDk4YzlkZTAxMDhhMzhlZGEufzxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pYzo6UGFuaWNQYXlsb2FkPjo6dGFrZV9ib3gvPHdhdmVmb3JtX3NhbXBsaW5nX3dhc206OnNhbXBsZV9hZ2dyZWdhdGVzOjpoMzljYTc4ODA2NWVhZjVkNDBwPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcl9uZXN0ZWQ6OlNwZWNGcm9tSXRlck5lc3RlZDxULEk+Pjo6ZnJvbV9pdGVyOjpoMGU0M2ZjZmRkNGE3OWFhZTFRYWxsb2M6OnJhd192ZWM6OlJhd1ZlY0lubmVyPEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhlMjEyNzkzYmI0NzAxOGYyMjFzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfd2l0aF9ob29rMzxjb3JlOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdHNvcnRfbWFpbjo6aDQ1ZDRhMWQxNmJmNTAwY2I0PmFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6ZmluaXNoX2dyb3c6Omg5YzE4MjU2ODMzNmY0ZjQ4NT5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjSW5uZXI8QT46OmZpbmlzaF9ncm93OjpoNGFlNGZmNmI4ODM1YjQzOTY8PGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpSYXdWZWNJbm5lcj46OmZpbmlzaF9ncm93N3w8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnJhd192ZWM6OlJhd1ZlY0lubmVyPF8+Pjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OmFsbG9jOjpHbG9iYWw+OA9kaXNwb3NlX2RhdGFzZXQ5QWFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6Z3Jvd19hbW9ydGl6ZWQ6OmhjMWFmNGJmN2VkNTQ0ZmYzOhdyZWdpc3Rlcl9zYW1wbGVfZGF0YXNldDsQcmVnaXN0ZXJfZGF0YXNldDx6PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ9PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjp7Y2xvc3VyZSMwfT4/d2F2ZWZvcm1fc2FtcGxpbmdfd2FzbTo6ZGlzcG9zZV9hbGxfZGF0YXNldHM6OmgyNjcyMWYwZTFmNDY2Yjc0PxlfX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jQDhhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46Omdyb3dfb25lOjpoMjM5YThkZWQ5ZDQ4OWIwMUE4YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+Ojpncm93X29uZTo6aDdmODZlZjE3MDY2NWUwMmZCOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6Omg4ZDcwOTIyOTI4ZWJhYTUzQzw8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpidWlsZGVyczo6RGVidWdTdHJ1Y3Q+OjpmaW5pc2hEWTxkbG1hbGxvY1tlMjRhMjc3MDA2MzRkNjA5XTo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2NbZTI0YTI3NzAwNjM0ZDYwOV06OkFsbG9jYXRvcj46OmFsbG9jRT53YXZlZm9ybV9zYW1wbGluZ193YXNtOjpkYXRhc2V0X2luZGV4X2J5dGVzOjpoMTIxODQzZmRiMDg2ODQyNkYoX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19yZGxfZGVhbGxvY0daPGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RySDZ3YXZlZm9ybV9zYW1wbGluZ193YXNtOjpwdXNoX3VuaXF1ZTo6aDc0NTI5MTExNmFiMzA0MjNJNWNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmlja2luZzo6cGFuaWNfYm91bmRzX2NoZWNrSi1fX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3JkbF9hbGxvY196ZXJvZWRLN3N0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19jb3VudDo6aW5jcmVhc2VMOGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6Z3Jvd19vbmU6OmhjODgyMzc4NDk0ZDRhYmJlTXw8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OlN0YXRpY1N0clBheWxvYWQgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94Tixjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pY2tpbmc6OnBhbmljX2ZtdE8RX193YmluZGdlbl9tYWxsb2NQczxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6Rm9ybWF0U3RyaW5nUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXRRRDxjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkZvcm1hdHRlcj46OnBhZF9pbnRlZ3JhbDo6d3JpdGVfcHJlZml4UiFzYW1wbGVfYWdncmVnYXRlcyBtdWx0aXZhbHVlIHNoaW1TImZpbmRfdmlzaWJsZV9yYW5nZSBtdWx0aXZhbHVlIHNoaW1UHnNhbXBsZV9pbmRleGVzIG11bHRpdmFsdWUgc2hpbVUmc2FtcGxlX2RhdGFzZXRfaW5kZXhlcyBtdWx0aXZhbHVlIHNoaW1WJ3JlZ2lzdGVyX3NhbXBsZV9kYXRhc2V0IG11bHRpdmFsdWUgc2hpbVcpc2FtcGxlX2RhdGFzZXRfYWdncmVnYXRlcyBtdWx0aXZhbHVlIHNoaW1YGl9fd2JpbmRnZW5fZGVzdHJveV9jbG9zdXJlWR9jYWxjdWxhdGVfcmFuZ2UgbXVsdGl2YWx1ZSBzaGltWl48c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjp0aHJlYWQ6OmxvY2FsOjpBY2Nlc3NFcnJvciBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRlYnVnPjo6Zm10Wz9jb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpzbGljZTo6c29ydDo6c3RhYmxlOjpkcmlmdDo6c3FydF9hcHByb3hcIHJlZ2lzdGVyX2RhdGFzZXQgbXVsdGl2YWx1ZSBzaGltXThzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnRocmVhZDo6bG9jYWw6OnBhbmljX2FjY2Vzc19lcnJvcl40Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9ib3Jyb3dlZF88Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9tdXRhYmx5X2JvcnJvd2VkYCxfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpydXN0X2JlZ2luX3Vud2luZGE2PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6Rm9ybWF0dGVyPjo6ZGVidWdfc3RydWN0YiZzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbWMuYWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OmJveGVkOjpib3hfbmV3X3VuaW5pdGRyY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cHRyOjpkcm9wX2luX3BsYWNlOjo8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OkZvcm1hdFN0cmluZ1BheWxvYWQ+ZTNzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbTo6e2Nsb3N1cmUjMH1me2NvcmVbYzU5MzBjODVhMTJkZTgyMl06OnB0cjo6ZHJvcF9pbl9wbGFjZTo6PGNvcmVbYzU5MzBjODVhMTJkZTgyMl06Om9wdGlvbjo6T3B0aW9uPGFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjp2ZWM6OlZlYzx1OD4+PmdVY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cHRyOjpkcm9wX2luX3BsYWNlOjo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nPmgmX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19yZGxfYWxsb2NpBGZtYXhqBGZtaW5rLmFsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpoYW5kbGVfZXJyb3JsKGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmlja2luZzo6cGFuaWNtJ1JlZihTdHJpbmcpIC0+IEV4dGVybnJlZiBleHRlcm5yZWYgc2hpbW4PX193YmluZGdlbl9mcmVlb1Y8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmFueTo6QW55Pjo6dHlwZV9pZHAzPCZzdHIgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6YW55OjpBbnk+Ojp0eXBlX2lkcTM8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpGb3JtYXR0ZXI+Ojp3cml0ZV9zdHJyKV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9yZWFsbG9jcxRfX3diaW5kZ2VuX2V4bl9zdG9yZXR3PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXR1cDxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6cGFuaWNfaGFuZGxlcjo6U3RhdGljU3RyUGF5bG9hZCBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXR2KV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9kZWFsbG9jdyVfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpydXN0X3BhbmljeFo8YWxsb2NbM2NhNTAxZWRmZjNmMGM3Y106OnN0cmluZzo6U3RyaW5nIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXR5M2FsbG9jWzNjYTUwMWVkZmYzZjBjN2NdOjpyYXdfdmVjOjpjYXBhY2l0eV9vdmVyZmxvd3otY29yZVtjNTkzMGM4NWExMmRlODIyXTo6b3B0aW9uOjp1bndyYXBfZmFpbGVke0djb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpwYW5pY2tpbmc6OnBhbmljX2NvbnN0OjpwYW5pY19jb25zdF9yZW1fYnlfemVyb3xOY29yZVtjNTkzMGM4NWExMmRlODIyXTo6c2xpY2U6OnNvcnQ6OnNoYXJlZDo6c21hbGxzb3J0OjpwYW5pY19vbl9vcmRfdmlvbGF0aW9ufSdfX3J1c3RjW2I3OTc0ZTg2OTA0MzBkZDldOjpfX3J1c3RfYWxsb2N+Ll9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9hbGxvY196ZXJvZWR/NV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9hbGxvY19lcnJvcl9oYW5kbGVygAF6PHN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6cGFuaWNraW5nOjpwYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmVbYzU5MzBjODVhMTJkZTgyMl06OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojphc19zdHKBATJhbGxvY1szY2E1MDFlZGZmM2YwYzdjXTo6YWxsb2M6OmhhbmRsZV9hbGxvY19lcnJvcoIBWzxjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpjZWxsOjpCb3Jyb3dNdXRFcnJvciBhcyBjb3JlW2M1OTMwYzg1YTEyZGU4MjJdOjpmbXQ6OkRpc3BsYXk+OjpmbXSDAVg8Y29yZVtjNTkzMGM4NWExMmRlODIyXTo6Y2VsbDo6Qm9ycm93RXJyb3IgYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6Zm10OjpEaXNwbGF5Pjo6Zm10hAF7c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpzeXM6OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6OjxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OmFsbG9jOjpydXN0X29vbTo6e2Nsb3N1cmUjMH0sICE+hQGEAXN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6c3lzOjpiYWNrdHJhY2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjo8c3RkW2E1NDM5OTZlNmU3ZGJmMWVdOjpwYW5pY2tpbmc6OnBhbmljX2hhbmRsZXI6OntjbG9zdXJlIzB9LCAhPoYBNnN0ZFthNTQzOTk2ZTZlN2RiZjFlXTo6YWxsb2M6OmRlZmF1bHRfYWxsb2NfZXJyb3JfaG9va4cBdTxzdGRbYTU0Mzk5NmU2ZTdkYmYxZV06OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6OlBheWxvYWQ8JnN0cj4gYXMgY29yZVtjNTkzMGM4NWExMmRlODIyXTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OmFzX3N0cogBLV9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9zdGFydF9wYW5pY4kBOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoNzhhOGY4NDc3NzM3N2ZmMIoBPl9fcnVzdGNbYjc5NzRlODY5MDQzMGRkOV06Ol9fcnVzdF9ub19hbGxvY19zaGltX2lzX3Vuc3RhYmxlX3YyiwEnX19ydXN0Y1tiNzk3NGU4NjkwNDMwZGQ5XTo6X19ydXN0X2Fib3J0BRgBARVfX3diaW5kZ2VuX2V4dGVybnJlZnMHEgEAD19fc3RhY2tfcG9pbnRlcgkRAgAHLnJvZGF0YQEFLmRhdGEAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuOTUuMCAoNTk4MDc2MTZlIDIwMjYtMDQtMTQpBndhbHJ1cwYwLjI2LjEMd2FzbS1iaW5kZ2VuEzAuMi4xMTggKDc1M2JiN2ZmNCkAlAEPdGFyZ2V0X2ZlYXR1cmVzCCsLYnVsay1tZW1vcnkrD2J1bGstbWVtb3J5LW9wdCsWY2FsbC1pbmRpcmVjdC1vdmVybG9uZysKbXVsdGl2YWx1ZSsPbXV0YWJsZS1nbG9iYWxzKxNub250cmFwcGluZy1mcHRvaW50Kw9yZWZlcmVuY2UtdHlwZXMrCHNpZ24tZXh0", "" + self.location.href));
2303
+ const g = {
2304
+ __proto__: null,
2305
+ "./waveform_sampling_wasm_bg.js": {
2306
+ __proto__: null,
2307
+ __wbindgen_cast_0000000000000001: function(A, g) {
2308
+ return I = A, function(A, g) {
2309
+ return r += g, r >= 2146435072 && (s = new TextDecoder("utf-8", {
2310
+ ignoreBOM: !0,
2311
+ fatal: !0
2312
+ }), s.decode(), r = g), s.decode((null !== e && 0 !== e.byteLength || (e = new Uint8Array(o.memory.buffer)), e).subarray(A, A + g));
2313
+ }(I >>>= 0, g);
2314
+ var I;
2315
+ },
2316
+ __wbindgen_init_externref_table: function() {
2317
+ const A = o.__wbindgen_externrefs, g = A.grow(4);
2318
+ A.set(0, void 0), A.set(g + 0, void 0), A.set(g + 1, null), A.set(g + 2, !0), A.set(g + 3, !1);
2319
+ }
2320
+ }
2321
+ };
2322
+ ("string" == typeof A || "function" == typeof Request && A instanceof Request || "function" == typeof URL && A instanceof URL) && (A = fetch(A));
2323
+ const { instance: I, module: Q } = await async function(A, g) {
2324
+ if ("function" == typeof Response && A instanceof Response) {
2325
+ if ("function" == typeof WebAssembly.instantiateStreaming) try {
2326
+ return await WebAssembly.instantiateStreaming(A, g);
2327
+ } catch (I) {
2328
+ if (!A.ok || !function(A) {
2329
+ switch (A) {
2330
+ case "basic":
2331
+ case "cors":
2332
+ case "default": return !0;
2333
+ }
2334
+ return !1;
2335
+ }(A.type) || "application/wasm" === A.headers.get("Content-Type")) throw I;
2336
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", I);
2337
+ }
2338
+ const Q = await A.arrayBuffer();
2339
+ return await WebAssembly.instantiate(Q, g);
2340
+ }
2341
+ {
2342
+ const I = await WebAssembly.instantiate(A, g);
2343
+ return I instanceof WebAssembly.Instance ? {
2344
+ instance: I,
2345
+ module: A
2346
+ } : I;
2347
+ }
2348
+ }(await A, g);
2349
+ return function(A) {
2350
+ return o = A.exports, t = null, B = null, e = null, o.__wbindgen_start(), o;
2351
+ }(I);
2352
+ }(void 0)).then(() => {}), c).then(() => {
2353
+ QQ.setWasmBackend(function() {
2354
+ const Q = (A) => {
2355
+ const g = new Float64Array(A.length / 2), I = new Float64Array(A.length / 2);
2356
+ for (let Q = 0; Q < g.length; Q += 1) g[Q] = A[2 * Q], I[Q] = A[2 * Q + 1];
2357
+ return {
2358
+ kind: "aggregates",
2359
+ x: g,
2360
+ y: I
2361
+ };
2362
+ };
2363
+ return {
2364
+ kind: "wasm",
2365
+ sample({ x: A, y: t, strategy: C, targetPointCount: B }) {
2366
+ const i = {
2367
+ x: A,
2368
+ y: t,
2369
+ strategy: C,
2370
+ targetPointCount: B
2371
+ };
2372
+ l(i);
2373
+ const e = (s = i.targetPointCount, 0 === (r = i.x.length) ? 0 : Number.isFinite(s) ? Math.min(r, Math.max(1, Math.floor(s))) : r);
2374
+ var s, r;
2375
+ if ("average" !== i.strategy && "sum" !== i.strategy) return {
2376
+ kind: "source-indexes",
2377
+ sourceIndexes: g(i.x, i.y, h[i.strategy], e)
2378
+ };
2379
+ const c = function(A, g, Q, t) {
2380
+ const C = n(A, o.__wbindgen_malloc), B = a, i = n(g, o.__wbindgen_malloc), e = a, s = o.sample_aggregates(C, B, i, e, Q, t);
2381
+ if (s[3]) throw E(s[2]);
2382
+ var r = I(s[0], s[1]).slice();
2383
+ return o.__wbindgen_free(s[0], 8 * s[1], 8), r;
2384
+ }(i.x, i.y, h[i.strategy], e);
2385
+ return Q(c);
2386
+ },
2387
+ registerDataset: (A, g, I) => (l({
2388
+ x: A,
2389
+ y: g,
2390
+ strategy: "peak",
2391
+ targetPointCount: A.length
2392
+ }), function(A, g, I) {
2393
+ const Q = n(A, o.__wbindgen_malloc), t = a, C = n(g, o.__wbindgen_malloc), B = a, i = o.register_dataset(Q, t, C, B, I);
2394
+ if (i[2]) throw E(i[1]);
2395
+ return i[0] >>> 0;
2396
+ }(A, g, Math.max(0, Math.min(4294967295, Math.floor(I ?? 8388608))))),
2397
+ registerSamples: (A, g, I, Q, t) => function(A, g, I, Q, t) {
2398
+ const C = n(A, o.__wbindgen_malloc), B = a, e = function(A, g) {
2399
+ const I = g(4 * A.length, 4) >>> 0;
2400
+ return i().set(A, I / 4), a = A.length, I;
2401
+ }(g, o.__wbindgen_malloc), s = a, r = o.register_sample_dataset(C, B, e, s, I, Q, t);
2402
+ if (r[2]) throw E(r[1]);
2403
+ return r[0] >>> 0;
2404
+ }(A, g ?? /* @__PURE__ */ new Uint32Array(), I, Q, Math.max(0, Math.min(4294967295, Math.floor(t ?? 8388608)))),
2405
+ disposeDataset(A) {
2406
+ (function(A) {
2407
+ o.dispose_dataset(A);
2408
+ })(A);
2409
+ },
2410
+ disposeAllDatasets() {
2411
+ o.dispose_all_datasets();
2412
+ },
2413
+ datasetIndexBytes: (A) => function(A) {
2414
+ return o.dataset_index_bytes(A) >>> 0;
2415
+ }(A),
2416
+ sampleDataset(g, t, C, B, i) {
2417
+ const e = Math.max(0, Math.floor(i));
2418
+ return "average" === B || "sum" === B ? Q(function(A, g, Q, t, C) {
2419
+ const B = o.sample_dataset_aggregates(A, g, Q, t, C);
2420
+ if (B[3]) throw E(B[2]);
2421
+ var i = I(B[0], B[1]).slice();
2422
+ return o.__wbindgen_free(B[0], 8 * B[1], 8), i;
2423
+ }(g, t, C, h[B], e)) : {
2424
+ kind: "source-indexes",
2425
+ sourceIndexes: A(g, t, C, h[B], e)
2426
+ };
2427
+ }
2428
+ };
2429
+ }());
2430
+ }).catch((A) => {
2431
+ CQ = A instanceof Error ? A.message : String(A);
2432
+ }), await tQ);
2433
+ }(), BQ.postMessage("sample-viewport-response" === (C = QQ.handle(Q.data)).type && CQ ? {
2434
+ ...C,
2435
+ workerError: CQ
2436
+ } : C);
2437
+ } catch (D) {
2438
+ BQ.postMessage({
2439
+ type: "request-error",
2440
+ requestId: Q.data.requestId,
2441
+ message: D instanceof Error ? D.message : String(D)
2442
+ });
2443
+ }
2444
+ var C, u;
2445
+ };
2446
+ })();