@eodash/eodash 5.0.0-alpha.1.8 → 5.0.0-alpha.2

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 (80) hide show
  1. package/README.md +1 -1
  2. package/bin/app.js +1 -4
  3. package/bin/cli.js +26 -29
  4. package/bin/main.js +9 -0
  5. package/bin/serverConfig.js +65 -35
  6. package/bin/types.d.ts +52 -0
  7. package/bin/utils.js +91 -21
  8. package/core/App.vue +10 -12
  9. package/core/SuspensedDashboard.ce.vue +59 -0
  10. package/core/asWebComponent.d.ts +18 -0
  11. package/core/asWebComponent.js +12 -0
  12. package/core/components/DashboardLayout.vue +23 -27
  13. package/core/components/DynamicWebComponent.vue +6 -6
  14. package/core/components/Footer.vue +11 -12
  15. package/core/components/Header.vue +5 -29
  16. package/core/components/Loading.vue +27 -0
  17. package/core/components/MobileLayout.vue +34 -63
  18. package/core/composables/DefineEodash.js +57 -0
  19. package/core/composables/DefineWidgets.js +26 -15
  20. package/core/composables/index.js +139 -67
  21. package/core/eodash.js +100 -0
  22. package/core/main.js +2 -4
  23. package/core/plugins/index.js +3 -12
  24. package/core/plugins/vuetify.js +5 -2
  25. package/core/store/Actions.js +0 -28
  26. package/core/store/States.js +12 -3
  27. package/core/store/stac.js +7 -5
  28. package/core/types.d.ts +148 -124
  29. package/core/utils/eodashSTAC.js +164 -0
  30. package/core/utils/helpers.js +40 -0
  31. package/core/utils/index.js +28 -0
  32. package/core/utils/keys.js +6 -0
  33. package/core/views/Dashboard.vue +33 -23
  34. package/core/vite-env.d.ts +16 -2
  35. package/dist/.gitkeep +0 -0
  36. package/dist/DashboardLayout-YLfAa8wH.js +168 -0
  37. package/dist/DynamicWebComponent-BDOQsEcj.js +57 -0
  38. package/dist/EodashDatePicker-DlehqSgz.js +1645 -0
  39. package/dist/EodashItemFilter-TSp7XRGy.js +51 -0
  40. package/dist/EodashMap-DInb9cfS.js +53405 -0
  41. package/dist/Footer-CIzHgJbK.js +118 -0
  42. package/dist/Header-C5PSB8Uc.js +609 -0
  43. package/dist/IframeWrapper-DYHQQRUh.js +19 -0
  44. package/dist/MobileLayout-DZmqrpub.js +523 -0
  45. package/dist/VBtn-CFPhsIX8.js +1106 -0
  46. package/dist/VMain-deI9jyIf.js +35 -0
  47. package/dist/WidgetsContainer-D_PLP1qf.js +122 -0
  48. package/dist/_commonjsHelpers-DaMA6jEr.js +8 -0
  49. package/dist/asWebComponent-BKe6Spni.js +11323 -0
  50. package/dist/basedecoder-Qm25PwVp-CHo5Pomv.js +89 -0
  51. package/dist/color-D72nEBIR.js +115 -0
  52. package/dist/decoder-kAoyGIq9-HAkjSTCt.js +10 -0
  53. package/dist/deflate-Be2Arps5-hDqMz3RA.js +10 -0
  54. package/dist/dimensions-BZkmIizV.js +53 -0
  55. package/dist/eo-dash.js +6 -0
  56. package/dist/eox-itemfilter-DcQkRD2l.js +7537 -0
  57. package/dist/eox-map-BJ9SIixs.js +36205 -0
  58. package/dist/eox-stacinfo-B-YrT7Ug.js +13698 -0
  59. package/dist/forwardRefs-Bxeu9Obx.js +142 -0
  60. package/dist/index-8ch8xKfa.js +152 -0
  61. package/dist/index-DIt8GjSR.js +65 -0
  62. package/dist/jpeg-DNfUpLwy-Fjan-04T.js +515 -0
  63. package/dist/lerc-C9VL9kri-DyVxBvsf.js +1029 -0
  64. package/dist/lzw-BOMhmEDy-Dboc93VO.js +84 -0
  65. package/dist/packbits-DaUD6MLm-Bu1PoTGa.js +24 -0
  66. package/dist/pako.esm-C3kYPGGQ-BMki8cQY.js +1087 -0
  67. package/dist/raw-CcGKjn8q-DFOt-i8n.js +9 -0
  68. package/dist/ssrBoot-Cm5pWM14.js +17 -0
  69. package/dist/style.css +5 -0
  70. package/dist/webfontloader-CyOFAuFB.js +471 -0
  71. package/dist/webimage-D2c098k3-DLj1LQxB.js +19 -0
  72. package/package.json +41 -12
  73. package/widgets/EodashDatePicker.vue +56 -0
  74. package/widgets/EodashItemFilter.vue +60 -0
  75. package/widgets/EodashMap.vue +82 -0
  76. package/widgets/WidgetsContainer.vue +1 -1
  77. package/core/composables/DefineConfig.js +0 -45
  78. package/core/eodashConfig.js +0 -136
  79. package/core/plugins/router.js +0 -20
  80. package/core/store/Keys.js +0 -6
@@ -0,0 +1,1029 @@
1
+ import { b as tA } from "./pako.esm-C3kYPGGQ-BMki8cQY.js";
2
+ import { D as sA, G as gA, V as rA } from "./EodashMap-DInb9cfS.js";
3
+ import { g as DA } from "./basedecoder-Qm25PwVp-CHo5Pomv.js";
4
+ var iA = { exports: {} };
5
+ (function(W) {
6
+ /* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
7
+ (function() {
8
+ var u = function() {
9
+ var N = {};
10
+ N.defaultNoDataValue = -34027999387901484e22, N.decode = function(I, a) {
11
+ a = a || {};
12
+ var Q = a.encodedMaskData || a.encodedMaskData === null, g = E(I, a.inputOffset || 0, Q), r = a.noDataValue !== null ? a.noDataValue : N.defaultNoDataValue, B = d(
13
+ g,
14
+ a.pixelType || Float32Array,
15
+ a.encodedMaskData,
16
+ r,
17
+ a.returnMask
18
+ ), C = {
19
+ width: g.width,
20
+ height: g.height,
21
+ pixelData: B.resultPixels,
22
+ minValue: B.minValue,
23
+ maxValue: g.pixels.maxValue,
24
+ noDataValue: r
25
+ };
26
+ return B.resultMask && (C.maskData = B.resultMask), a.returnEncodedMask && g.mask && (C.encodedMaskData = g.mask.bitset ? g.mask.bitset : null), a.returnFileInfo && (C.fileInfo = m(g), a.computeUsedBitDepths && (C.fileInfo.bitDepths = z(g))), C;
27
+ };
28
+ var d = function(I, a, Q, g, r) {
29
+ var B = 0, C = I.pixels.numBlocksX, t = I.pixels.numBlocksY, o = Math.floor(I.width / C), s = Math.floor(I.height / t), n = 2 * I.maxZError, e = Number.MAX_VALUE, i;
30
+ Q = Q || (I.mask ? I.mask.bitset : null);
31
+ var h, y;
32
+ h = new a(I.width * I.height), r && Q && (y = new Uint8Array(I.width * I.height));
33
+ for (var S = new Float32Array(o * s), f, c, G = 0; G <= t; G++) {
34
+ var M = G !== t ? s : I.height % t;
35
+ if (M !== 0)
36
+ for (var w = 0; w <= C; w++) {
37
+ var D = w !== C ? o : I.width % C;
38
+ if (D !== 0) {
39
+ var l = G * I.width * s + w * o, F = I.width - D, k = I.pixels.blocks[B], R, U, L;
40
+ k.encoding < 2 ? (k.encoding === 0 ? R = k.rawData : (A(k.stuffedData, k.bitsPerPixel, k.numValidPixels, k.offset, n, S, I.pixels.maxValue), R = S), U = 0) : k.encoding === 2 ? L = 0 : L = k.offset;
41
+ var J;
42
+ if (Q)
43
+ for (c = 0; c < M; c++) {
44
+ for (l & 7 && (J = Q[l >> 3], J <<= l & 7), f = 0; f < D; f++)
45
+ l & 7 || (J = Q[l >> 3]), J & 128 ? (y && (y[l] = 1), i = k.encoding < 2 ? R[U++] : L, e = e > i ? i : e, h[l++] = i) : (y && (y[l] = 0), h[l++] = g), J <<= 1;
46
+ l += F;
47
+ }
48
+ else if (k.encoding < 2)
49
+ for (c = 0; c < M; c++) {
50
+ for (f = 0; f < D; f++)
51
+ i = R[U++], e = e > i ? i : e, h[l++] = i;
52
+ l += F;
53
+ }
54
+ else
55
+ for (e = e > L ? L : e, c = 0; c < M; c++) {
56
+ for (f = 0; f < D; f++)
57
+ h[l++] = L;
58
+ l += F;
59
+ }
60
+ if (k.encoding === 1 && U !== k.numValidPixels)
61
+ throw "Block and Mask do not match";
62
+ B++;
63
+ }
64
+ }
65
+ }
66
+ return {
67
+ resultPixels: h,
68
+ resultMask: y,
69
+ minValue: e
70
+ };
71
+ }, m = function(I) {
72
+ return {
73
+ fileIdentifierString: I.fileIdentifierString,
74
+ fileVersion: I.fileVersion,
75
+ imageType: I.imageType,
76
+ height: I.height,
77
+ width: I.width,
78
+ maxZError: I.maxZError,
79
+ eofOffset: I.eofOffset,
80
+ mask: I.mask ? {
81
+ numBlocksX: I.mask.numBlocksX,
82
+ numBlocksY: I.mask.numBlocksY,
83
+ numBytes: I.mask.numBytes,
84
+ maxValue: I.mask.maxValue
85
+ } : null,
86
+ pixels: {
87
+ numBlocksX: I.pixels.numBlocksX,
88
+ numBlocksY: I.pixels.numBlocksY,
89
+ numBytes: I.pixels.numBytes,
90
+ maxValue: I.pixels.maxValue,
91
+ noDataValue: I.noDataValue
92
+ }
93
+ };
94
+ }, z = function(I) {
95
+ for (var a = I.pixels.numBlocksX * I.pixels.numBlocksY, Q = {}, g = 0; g < a; g++) {
96
+ var r = I.pixels.blocks[g];
97
+ r.encoding === 0 ? Q.float32 = !0 : r.encoding === 1 ? Q[r.bitsPerPixel] = !0 : Q[0] = !0;
98
+ }
99
+ return Object.keys(Q);
100
+ }, E = function(I, a, Q) {
101
+ var g = {}, r = new Uint8Array(I, a, 10);
102
+ if (g.fileIdentifierString = String.fromCharCode.apply(null, r), g.fileIdentifierString.trim() !== "CntZImage")
103
+ throw "Unexpected file identifier string: " + g.fileIdentifierString;
104
+ a += 10;
105
+ var B = new DataView(I, a, 24);
106
+ if (g.fileVersion = B.getInt32(0, !0), g.imageType = B.getInt32(4, !0), g.height = B.getUint32(8, !0), g.width = B.getUint32(12, !0), g.maxZError = B.getFloat64(16, !0), a += 24, !Q)
107
+ if (B = new DataView(I, a, 16), g.mask = {}, g.mask.numBlocksY = B.getUint32(0, !0), g.mask.numBlocksX = B.getUint32(4, !0), g.mask.numBytes = B.getUint32(8, !0), g.mask.maxValue = B.getFloat32(12, !0), a += 16, g.mask.numBytes > 0) {
108
+ var C = new Uint8Array(Math.ceil(g.width * g.height / 8));
109
+ B = new DataView(I, a, g.mask.numBytes);
110
+ var t = B.getInt16(0, !0), o = 2, s = 0;
111
+ do {
112
+ if (t > 0)
113
+ for (; t--; )
114
+ C[s++] = B.getUint8(o++);
115
+ else {
116
+ var n = B.getUint8(o++);
117
+ for (t = -t; t--; )
118
+ C[s++] = n;
119
+ }
120
+ t = B.getInt16(o, !0), o += 2;
121
+ } while (o < g.mask.numBytes);
122
+ if (t !== -32768 || s < C.length)
123
+ throw "Unexpected end of mask RLE encoding";
124
+ g.mask.bitset = C, a += g.mask.numBytes;
125
+ } else
126
+ g.mask.numBytes | g.mask.numBlocksY | g.mask.maxValue || (g.mask.bitset = new Uint8Array(Math.ceil(g.width * g.height / 8)));
127
+ B = new DataView(I, a, 16), g.pixels = {}, g.pixels.numBlocksY = B.getUint32(0, !0), g.pixels.numBlocksX = B.getUint32(4, !0), g.pixels.numBytes = B.getUint32(8, !0), g.pixels.maxValue = B.getFloat32(12, !0), a += 16;
128
+ var e = g.pixels.numBlocksX, i = g.pixels.numBlocksY, h = e + (g.width % e > 0 ? 1 : 0), y = i + (g.height % i > 0 ? 1 : 0);
129
+ g.pixels.blocks = new Array(h * y);
130
+ for (var S = 0, f = 0; f < y; f++)
131
+ for (var c = 0; c < h; c++) {
132
+ var G = 0, M = I.byteLength - a;
133
+ B = new DataView(I, a, Math.min(10, M));
134
+ var w = {};
135
+ g.pixels.blocks[S++] = w;
136
+ var D = B.getUint8(0);
137
+ if (G++, w.encoding = D & 63, w.encoding > 3)
138
+ throw "Invalid block encoding (" + w.encoding + ")";
139
+ if (w.encoding === 2) {
140
+ a++;
141
+ continue;
142
+ }
143
+ if (D !== 0 && D !== 2) {
144
+ if (D >>= 6, w.offsetType = D, D === 2)
145
+ w.offset = B.getInt8(1), G++;
146
+ else if (D === 1)
147
+ w.offset = B.getInt16(1, !0), G += 2;
148
+ else if (D === 0)
149
+ w.offset = B.getFloat32(1, !0), G += 4;
150
+ else
151
+ throw "Invalid block offset type";
152
+ if (w.encoding === 1)
153
+ if (D = B.getUint8(G), G++, w.bitsPerPixel = D & 63, D >>= 6, w.numValidPixelsType = D, D === 2)
154
+ w.numValidPixels = B.getUint8(G), G++;
155
+ else if (D === 1)
156
+ w.numValidPixels = B.getUint16(G, !0), G += 2;
157
+ else if (D === 0)
158
+ w.numValidPixels = B.getUint32(G, !0), G += 4;
159
+ else
160
+ throw "Invalid valid pixel count type";
161
+ }
162
+ if (a += G, w.encoding !== 3) {
163
+ var l, F;
164
+ if (w.encoding === 0) {
165
+ var k = (g.pixels.numBytes - 1) / 4;
166
+ if (k !== Math.floor(k))
167
+ throw "uncompressed block has invalid length";
168
+ l = new ArrayBuffer(k * 4), F = new Uint8Array(l), F.set(new Uint8Array(I, a, k * 4));
169
+ var R = new Float32Array(l);
170
+ w.rawData = R, a += k * 4;
171
+ } else if (w.encoding === 1) {
172
+ var U = Math.ceil(w.numValidPixels * w.bitsPerPixel / 8), L = Math.ceil(U / 4);
173
+ l = new ArrayBuffer(L * 4), F = new Uint8Array(l), F.set(new Uint8Array(I, a, U)), w.stuffedData = new Uint32Array(l), a += U;
174
+ }
175
+ }
176
+ }
177
+ return g.eofOffset = a, g;
178
+ }, A = function(I, a, Q, g, r, B, C) {
179
+ var t = (1 << a) - 1, o = 0, s, n = 0, e, i, h = Math.ceil((C - g) / r), y = I.length * 4 - Math.ceil(a * Q / 8);
180
+ for (I[I.length - 1] <<= 8 * y, s = 0; s < Q; s++) {
181
+ if (n === 0 && (i = I[o++], n = 32), n >= a)
182
+ e = i >>> n - a & t, n -= a;
183
+ else {
184
+ var S = a - n;
185
+ e = (i & t) << S & t, i = I[o++], n = 32 - S, e += i >>> n;
186
+ }
187
+ B[s] = e < h ? g + e * r : C;
188
+ }
189
+ return B;
190
+ };
191
+ return N;
192
+ }(), P = /* @__PURE__ */ function() {
193
+ var N = {
194
+ //methods ending with 2 are for the new byte order used by Lerc2.3 and above.
195
+ //originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.
196
+ unstuff: function(E, A, I, a, Q, g, r, B) {
197
+ var C = (1 << I) - 1, t = 0, o, s = 0, n, e, i, h, y = E.length * 4 - Math.ceil(I * a / 8);
198
+ if (E[E.length - 1] <<= 8 * y, Q)
199
+ for (o = 0; o < a; o++)
200
+ s === 0 && (e = E[t++], s = 32), s >= I ? (n = e >>> s - I & C, s -= I) : (i = I - s, n = (e & C) << i & C, e = E[t++], s = 32 - i, n += e >>> s), A[o] = Q[n];
201
+ else
202
+ for (h = Math.ceil((B - g) / r), o = 0; o < a; o++)
203
+ s === 0 && (e = E[t++], s = 32), s >= I ? (n = e >>> s - I & C, s -= I) : (i = I - s, n = (e & C) << i & C, e = E[t++], s = 32 - i, n += e >>> s), A[o] = n < h ? g + n * r : B;
204
+ },
205
+ unstuffLUT: function(E, A, I, a, Q, g) {
206
+ var r = (1 << A) - 1, B = 0, C = 0, t = 0, o = 0, s = 0, n, e = [], i = E.length * 4 - Math.ceil(A * I / 8);
207
+ E[E.length - 1] <<= 8 * i;
208
+ var h = Math.ceil((g - a) / Q);
209
+ for (C = 0; C < I; C++)
210
+ o === 0 && (n = E[B++], o = 32), o >= A ? (s = n >>> o - A & r, o -= A) : (t = A - o, s = (n & r) << t & r, n = E[B++], o = 32 - t, s += n >>> o), e[C] = s < h ? a + s * Q : g;
211
+ return e.unshift(a), e;
212
+ },
213
+ unstuff2: function(E, A, I, a, Q, g, r, B) {
214
+ var C = (1 << I) - 1, t = 0, o, s = 0, n = 0, e, i, h;
215
+ if (Q)
216
+ for (o = 0; o < a; o++)
217
+ s === 0 && (i = E[t++], s = 32, n = 0), s >= I ? (e = i >>> n & C, s -= I, n += I) : (h = I - s, e = i >>> n & C, i = E[t++], s = 32 - h, e |= (i & (1 << h) - 1) << I - h, n = h), A[o] = Q[e];
218
+ else {
219
+ var y = Math.ceil((B - g) / r);
220
+ for (o = 0; o < a; o++)
221
+ s === 0 && (i = E[t++], s = 32, n = 0), s >= I ? (e = i >>> n & C, s -= I, n += I) : (h = I - s, e = i >>> n & C, i = E[t++], s = 32 - h, e |= (i & (1 << h) - 1) << I - h, n = h), A[o] = e < y ? g + e * r : B;
222
+ }
223
+ return A;
224
+ },
225
+ unstuffLUT2: function(E, A, I, a, Q, g) {
226
+ var r = (1 << A) - 1, B = 0, C = 0, t = 0, o = 0, s = 0, n = 0, e, i = [], h = Math.ceil((g - a) / Q);
227
+ for (C = 0; C < I; C++)
228
+ o === 0 && (e = E[B++], o = 32, n = 0), o >= A ? (s = e >>> n & r, o -= A, n += A) : (t = A - o, s = e >>> n & r, e = E[B++], o = 32 - t, s |= (e & (1 << t) - 1) << A - t, n = t), i[C] = s < h ? a + s * Q : g;
229
+ return i.unshift(a), i;
230
+ },
231
+ originalUnstuff: function(E, A, I, a) {
232
+ var Q = (1 << I) - 1, g = 0, r, B = 0, C, t, o, s = E.length * 4 - Math.ceil(I * a / 8);
233
+ for (E[E.length - 1] <<= 8 * s, r = 0; r < a; r++)
234
+ B === 0 && (t = E[g++], B = 32), B >= I ? (C = t >>> B - I & Q, B -= I) : (o = I - B, C = (t & Q) << o & Q, t = E[g++], B = 32 - o, C += t >>> B), A[r] = C;
235
+ return A;
236
+ },
237
+ originalUnstuff2: function(E, A, I, a) {
238
+ var Q = (1 << I) - 1, g = 0, r, B = 0, C = 0, t, o, s;
239
+ for (r = 0; r < a; r++)
240
+ B === 0 && (o = E[g++], B = 32, C = 0), B >= I ? (t = o >>> C & Q, B -= I, C += I) : (s = I - B, t = o >>> C & Q, o = E[g++], B = 32 - s, t |= (o & (1 << s) - 1) << I - s, C = s), A[r] = t;
241
+ return A;
242
+ }
243
+ }, d = {
244
+ HUFFMAN_LUT_BITS_MAX: 12,
245
+ //use 2^12 lut, treat it like constant
246
+ computeChecksumFletcher32: function(E) {
247
+ for (var A = 65535, I = 65535, a = E.length, Q = Math.floor(a / 2), g = 0; Q; ) {
248
+ var r = Q >= 359 ? 359 : Q;
249
+ Q -= r;
250
+ do
251
+ A += E[g++] << 8, I += A += E[g++];
252
+ while (--r);
253
+ A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16);
254
+ }
255
+ return a & 1 && (I += A += E[g] << 8), A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16), (I << 16 | A) >>> 0;
256
+ },
257
+ readHeaderInfo: function(E, A) {
258
+ var I = A.ptr, a = new Uint8Array(E, I, 6), Q = {};
259
+ if (Q.fileIdentifierString = String.fromCharCode.apply(null, a), Q.fileIdentifierString.lastIndexOf("Lerc2", 0) !== 0)
260
+ throw "Unexpected file identifier string (expect Lerc2 ): " + Q.fileIdentifierString;
261
+ I += 6;
262
+ var g = new DataView(E, I, 8), r = g.getInt32(0, !0);
263
+ Q.fileVersion = r, I += 4, r >= 3 && (Q.checksum = g.getUint32(4, !0), I += 4), g = new DataView(E, I, 12), Q.height = g.getUint32(0, !0), Q.width = g.getUint32(4, !0), I += 8, r >= 4 ? (Q.numDims = g.getUint32(8, !0), I += 4) : Q.numDims = 1, g = new DataView(E, I, 40), Q.numValidPixel = g.getUint32(0, !0), Q.microBlockSize = g.getInt32(4, !0), Q.blobSize = g.getInt32(8, !0), Q.imageType = g.getInt32(12, !0), Q.maxZError = g.getFloat64(16, !0), Q.zMin = g.getFloat64(24, !0), Q.zMax = g.getFloat64(32, !0), I += 40, A.headerInfo = Q, A.ptr = I;
264
+ var B, C;
265
+ if (r >= 3 && (C = r >= 4 ? 52 : 48, B = this.computeChecksumFletcher32(new Uint8Array(E, I - C, Q.blobSize - 14)), B !== Q.checksum))
266
+ throw "Checksum failed.";
267
+ return !0;
268
+ },
269
+ checkMinMaxRanges: function(E, A) {
270
+ var I = A.headerInfo, a = this.getDataTypeArray(I.imageType), Q = I.numDims * this.getDataTypeSize(I.imageType), g = this.readSubArray(E, A.ptr, a, Q), r = this.readSubArray(E, A.ptr + Q, a, Q);
271
+ A.ptr += 2 * Q;
272
+ var B, C = !0;
273
+ for (B = 0; B < I.numDims; B++)
274
+ if (g[B] !== r[B]) {
275
+ C = !1;
276
+ break;
277
+ }
278
+ return I.minValues = g, I.maxValues = r, C;
279
+ },
280
+ readSubArray: function(E, A, I, a) {
281
+ var Q;
282
+ if (I === Uint8Array)
283
+ Q = new Uint8Array(E, A, a);
284
+ else {
285
+ var g = new ArrayBuffer(a), r = new Uint8Array(g);
286
+ r.set(new Uint8Array(E, A, a)), Q = new I(g);
287
+ }
288
+ return Q;
289
+ },
290
+ readMask: function(E, A) {
291
+ var I = A.ptr, a = A.headerInfo, Q = a.width * a.height, g = a.numValidPixel, r = new DataView(E, I, 4), B = {};
292
+ if (B.numBytes = r.getUint32(0, !0), I += 4, (g === 0 || Q === g) && B.numBytes !== 0)
293
+ throw "invalid mask";
294
+ var C, t;
295
+ if (g === 0)
296
+ C = new Uint8Array(Math.ceil(Q / 8)), B.bitset = C, t = new Uint8Array(Q), A.pixels.resultMask = t, I += B.numBytes;
297
+ else if (B.numBytes > 0) {
298
+ C = new Uint8Array(Math.ceil(Q / 8)), r = new DataView(E, I, B.numBytes);
299
+ var o = r.getInt16(0, !0), s = 2, n = 0, e = 0;
300
+ do {
301
+ if (o > 0)
302
+ for (; o--; )
303
+ C[n++] = r.getUint8(s++);
304
+ else
305
+ for (e = r.getUint8(s++), o = -o; o--; )
306
+ C[n++] = e;
307
+ o = r.getInt16(s, !0), s += 2;
308
+ } while (s < B.numBytes);
309
+ if (o !== -32768 || n < C.length)
310
+ throw "Unexpected end of mask RLE encoding";
311
+ t = new Uint8Array(Q);
312
+ var i = 0, h = 0;
313
+ for (h = 0; h < Q; h++)
314
+ h & 7 ? (i = C[h >> 3], i <<= h & 7) : i = C[h >> 3], i & 128 && (t[h] = 1);
315
+ A.pixels.resultMask = t, B.bitset = C, I += B.numBytes;
316
+ }
317
+ return A.ptr = I, A.mask = B, !0;
318
+ },
319
+ readDataOneSweep: function(E, A, I, a) {
320
+ var Q = A.ptr, g = A.headerInfo, r = g.numDims, B = g.width * g.height, C = g.imageType, t = g.numValidPixel * d.getDataTypeSize(C) * r, o, s = A.pixels.resultMask;
321
+ if (I === Uint8Array)
322
+ o = new Uint8Array(E, Q, t);
323
+ else {
324
+ var n = new ArrayBuffer(t), e = new Uint8Array(n);
325
+ e.set(new Uint8Array(E, Q, t)), o = new I(n);
326
+ }
327
+ if (o.length === B * r)
328
+ a ? A.pixels.resultPixels = d.swapDimensionOrder(o, B, r, I, !0) : A.pixels.resultPixels = o;
329
+ else {
330
+ A.pixels.resultPixels = new I(B * r);
331
+ var i = 0, h = 0, y = 0, S = 0;
332
+ if (r > 1) {
333
+ if (a) {
334
+ for (h = 0; h < B; h++)
335
+ if (s[h])
336
+ for (S = h, y = 0; y < r; y++, S += B)
337
+ A.pixels.resultPixels[S] = o[i++];
338
+ } else
339
+ for (h = 0; h < B; h++)
340
+ if (s[h])
341
+ for (S = h * r, y = 0; y < r; y++)
342
+ A.pixels.resultPixels[S + y] = o[i++];
343
+ } else
344
+ for (h = 0; h < B; h++)
345
+ s[h] && (A.pixels.resultPixels[h] = o[i++]);
346
+ }
347
+ return Q += t, A.ptr = Q, !0;
348
+ },
349
+ readHuffmanTree: function(E, A) {
350
+ var I = this.HUFFMAN_LUT_BITS_MAX, a = new DataView(E, A.ptr, 16);
351
+ A.ptr += 16;
352
+ var Q = a.getInt32(0, !0);
353
+ if (Q < 2)
354
+ throw "unsupported Huffman version";
355
+ var g = a.getInt32(4, !0), r = a.getInt32(8, !0), B = a.getInt32(12, !0);
356
+ if (r >= B)
357
+ return !1;
358
+ var C = new Uint32Array(B - r);
359
+ d.decodeBits(E, A, C);
360
+ var t = [], o, s, n, e;
361
+ for (o = r; o < B; o++)
362
+ s = o - (o < g ? 0 : g), t[s] = { first: C[o - r], second: null };
363
+ var i = E.byteLength - A.ptr, h = Math.ceil(i / 4), y = new ArrayBuffer(h * 4), S = new Uint8Array(y);
364
+ S.set(new Uint8Array(E, A.ptr, i));
365
+ var f = new Uint32Array(y), c = 0, G, M = 0;
366
+ for (G = f[0], o = r; o < B; o++)
367
+ s = o - (o < g ? 0 : g), e = t[s].first, e > 0 && (t[s].second = G << c >>> 32 - e, 32 - c >= e ? (c += e, c === 32 && (c = 0, M++, G = f[M])) : (c += e - 32, M++, G = f[M], t[s].second |= G >>> 32 - c));
368
+ var w = 0, D = 0, l = new m();
369
+ for (o = 0; o < t.length; o++)
370
+ t[o] !== void 0 && (w = Math.max(w, t[o].first));
371
+ w >= I ? D = I : D = w;
372
+ var F = [], k, R, U, L, J, q;
373
+ for (o = r; o < B; o++)
374
+ if (s = o - (o < g ? 0 : g), e = t[s].first, e > 0)
375
+ if (k = [e, s], e <= D)
376
+ for (R = t[s].second << D - e, U = 1 << D - e, n = 0; n < U; n++)
377
+ F[R | n] = k;
378
+ else
379
+ for (R = t[s].second, q = l, L = e - 1; L >= 0; L--)
380
+ J = R >>> L & 1, J ? (q.right || (q.right = new m()), q = q.right) : (q.left || (q.left = new m()), q = q.left), L === 0 && !q.val && (q.val = k[1]);
381
+ return {
382
+ decodeLut: F,
383
+ numBitsLUTQick: D,
384
+ numBitsLUT: w,
385
+ tree: l,
386
+ stuffedData: f,
387
+ srcPtr: M,
388
+ bitPos: c
389
+ };
390
+ },
391
+ readHuffman: function(E, A, I, a) {
392
+ var Q = A.headerInfo, g = Q.numDims, r = A.headerInfo.height, B = A.headerInfo.width, C = B * r, t = this.readHuffmanTree(E, A), o = t.decodeLut, s = t.tree, n = t.stuffedData, e = t.srcPtr, i = t.bitPos, h = t.numBitsLUTQick, y = t.numBitsLUT, S = A.headerInfo.imageType === 0 ? 128 : 0, f, c, G, M = A.pixels.resultMask, w, D, l, F, k, R, U, L = 0;
393
+ i > 0 && (e++, i = 0);
394
+ var J = n[e], q = A.encodeMode === 1, O = new I(C * g), p = O, Y;
395
+ if (g < 2 || q) {
396
+ for (Y = 0; Y < g; Y++)
397
+ if (g > 1 && (p = new I(O.buffer, C * Y, C), L = 0), A.headerInfo.numValidPixel === B * r)
398
+ for (R = 0, F = 0; F < r; F++)
399
+ for (k = 0; k < B; k++, R++) {
400
+ if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
401
+ c = o[D][1], i += o[D][0];
402
+ else
403
+ for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
404
+ if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
405
+ c = f.val, i = i + U + 1;
406
+ break;
407
+ }
408
+ i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, q ? (k > 0 ? G += L : F > 0 ? G += p[R - B] : G += L, G &= 255, p[R] = G, L = G) : p[R] = G;
409
+ }
410
+ else
411
+ for (R = 0, F = 0; F < r; F++)
412
+ for (k = 0; k < B; k++, R++)
413
+ if (M[R]) {
414
+ if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
415
+ c = o[D][1], i += o[D][0];
416
+ else
417
+ for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
418
+ if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
419
+ c = f.val, i = i + U + 1;
420
+ break;
421
+ }
422
+ i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, q ? (k > 0 && M[R - 1] ? G += L : F > 0 && M[R - B] ? G += p[R - B] : G += L, G &= 255, p[R] = G, L = G) : p[R] = G;
423
+ }
424
+ } else
425
+ for (R = 0, F = 0; F < r; F++)
426
+ for (k = 0; k < B; k++)
427
+ if (R = F * B + k, !M || M[R])
428
+ for (Y = 0; Y < g; Y++, R += C) {
429
+ if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
430
+ c = o[D][1], i += o[D][0];
431
+ else
432
+ for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
433
+ if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
434
+ c = f.val, i = i + U + 1;
435
+ break;
436
+ }
437
+ i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, p[R] = G;
438
+ }
439
+ A.ptr = A.ptr + (e + 1) * 4 + (i > 0 ? 4 : 0), A.pixels.resultPixels = O, g > 1 && !a && (A.pixels.resultPixels = d.swapDimensionOrder(O, C, g, I));
440
+ },
441
+ decodeBits: function(E, A, I, a, Q) {
442
+ {
443
+ var g = A.headerInfo, r = g.fileVersion, B = 0, C = E.byteLength - A.ptr >= 5 ? 5 : E.byteLength - A.ptr, t = new DataView(E, A.ptr, C), o = t.getUint8(0);
444
+ B++;
445
+ var s = o >> 6, n = s === 0 ? 4 : 3 - s, e = (o & 32) > 0, i = o & 31, h = 0;
446
+ if (n === 1)
447
+ h = t.getUint8(B), B++;
448
+ else if (n === 2)
449
+ h = t.getUint16(B, !0), B += 2;
450
+ else if (n === 4)
451
+ h = t.getUint32(B, !0), B += 4;
452
+ else
453
+ throw "Invalid valid pixel count type";
454
+ var y = 2 * g.maxZError, S, f, c, G, M, w, D, l, F, k = g.numDims > 1 ? g.maxValues[Q] : g.zMax;
455
+ if (e) {
456
+ for (A.counter.lut++, l = t.getUint8(B), B++, G = Math.ceil((l - 1) * i / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), A.ptr += B, c.set(new Uint8Array(E, A.ptr, G)), D = new Uint32Array(f), A.ptr += G, F = 0; l - 1 >>> F; )
457
+ F++;
458
+ G = Math.ceil(h * F / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), c.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(f), A.ptr += G, r >= 3 ? w = N.unstuffLUT2(D, i, l - 1, a, y, k) : w = N.unstuffLUT(D, i, l - 1, a, y, k), r >= 3 ? N.unstuff2(S, I, F, h, w) : N.unstuff(S, I, F, h, w);
459
+ } else
460
+ A.counter.bitstuffer++, F = i, A.ptr += B, F > 0 && (G = Math.ceil(h * F / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), c.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(f), A.ptr += G, r >= 3 ? a == null ? N.originalUnstuff2(S, I, F, h) : N.unstuff2(S, I, F, h, !1, a, y, k) : a == null ? N.originalUnstuff(S, I, F, h) : N.unstuff(S, I, F, h, !1, a, y, k));
461
+ }
462
+ },
463
+ readTiles: function(E, A, I, a) {
464
+ var Q = A.headerInfo, g = Q.width, r = Q.height, B = g * r, C = Q.microBlockSize, t = Q.imageType, o = d.getDataTypeSize(t), s = Math.ceil(g / C), n = Math.ceil(r / C);
465
+ A.pixels.numBlocksY = n, A.pixels.numBlocksX = s, A.pixels.ptr = 0;
466
+ var e = 0, i = 0, h = 0, y = 0, S = 0, f = 0, c = 0, G = 0, M = 0, w = 0, D = 0, l = 0, F = 0, k = 0, R = 0, U = 0, L, J, q, O, p, Y, j = new I(C * C), eA = r % C || C, aA = g % C || C, AA, T, _ = Q.numDims, X, H = A.pixels.resultMask, x = A.pixels.resultPixels, oA = Q.fileVersion, CA = oA >= 5 ? 14 : 15, V, IA = Q.zMax, b;
467
+ for (h = 0; h < n; h++)
468
+ for (S = h !== n - 1 ? C : eA, y = 0; y < s; y++)
469
+ for (f = y !== s - 1 ? C : aA, D = h * g * C + y * C, l = g - f, X = 0; X < _; X++) {
470
+ if (_ > 1 ? (b = x, D = h * g * C + y * C, x = new I(A.pixels.resultPixels.buffer, B * X * o, B), IA = Q.maxValues[X]) : b = null, c = E.byteLength - A.ptr, L = new DataView(E, A.ptr, Math.min(10, c)), J = {}, U = 0, G = L.getUint8(0), U++, V = Q.fileVersion >= 5 ? G & 4 : 0, M = G >> 6 & 255, w = G >> 2 & CA, w !== (y * C >> 3 & CA) || V && X === 0)
471
+ throw "integrity issue";
472
+ if (Y = G & 3, Y > 3)
473
+ throw A.ptr += U, "Invalid block encoding (" + Y + ")";
474
+ if (Y === 2) {
475
+ if (V)
476
+ if (H)
477
+ for (e = 0; e < S; e++)
478
+ for (i = 0; i < f; i++)
479
+ H[D] && (x[D] = b[D]), D++;
480
+ else
481
+ for (e = 0; e < S; e++)
482
+ for (i = 0; i < f; i++)
483
+ x[D] = b[D], D++;
484
+ A.counter.constant++, A.ptr += U;
485
+ continue;
486
+ } else if (Y === 0) {
487
+ if (V)
488
+ throw "integrity issue";
489
+ if (A.counter.uncompressed++, A.ptr += U, F = S * f * o, k = E.byteLength - A.ptr, F = F < k ? F : k, q = new ArrayBuffer(F % o === 0 ? F : F + o - F % o), O = new Uint8Array(q), O.set(new Uint8Array(E, A.ptr, F)), p = new I(q), R = 0, H)
490
+ for (e = 0; e < S; e++) {
491
+ for (i = 0; i < f; i++)
492
+ H[D] && (x[D] = p[R++]), D++;
493
+ D += l;
494
+ }
495
+ else
496
+ for (e = 0; e < S; e++) {
497
+ for (i = 0; i < f; i++)
498
+ x[D++] = p[R++];
499
+ D += l;
500
+ }
501
+ A.ptr += R * o;
502
+ } else if (AA = d.getDataTypeUsed(V && t < 6 ? 4 : t, M), T = d.getOnePixel(J, U, AA, L), U += d.getDataTypeSize(AA), Y === 3)
503
+ if (A.ptr += U, A.counter.constantoffset++, H)
504
+ for (e = 0; e < S; e++) {
505
+ for (i = 0; i < f; i++)
506
+ H[D] && (x[D] = V ? Math.min(IA, b[D] + T) : T), D++;
507
+ D += l;
508
+ }
509
+ else
510
+ for (e = 0; e < S; e++) {
511
+ for (i = 0; i < f; i++)
512
+ x[D] = V ? Math.min(IA, b[D] + T) : T, D++;
513
+ D += l;
514
+ }
515
+ else if (A.ptr += U, d.decodeBits(E, A, j, T, X), U = 0, V)
516
+ if (H)
517
+ for (e = 0; e < S; e++) {
518
+ for (i = 0; i < f; i++)
519
+ H[D] && (x[D] = j[U++] + b[D]), D++;
520
+ D += l;
521
+ }
522
+ else
523
+ for (e = 0; e < S; e++) {
524
+ for (i = 0; i < f; i++)
525
+ x[D] = j[U++] + b[D], D++;
526
+ D += l;
527
+ }
528
+ else if (H)
529
+ for (e = 0; e < S; e++) {
530
+ for (i = 0; i < f; i++)
531
+ H[D] && (x[D] = j[U++]), D++;
532
+ D += l;
533
+ }
534
+ else
535
+ for (e = 0; e < S; e++) {
536
+ for (i = 0; i < f; i++)
537
+ x[D++] = j[U++];
538
+ D += l;
539
+ }
540
+ }
541
+ _ > 1 && !a && (A.pixels.resultPixels = d.swapDimensionOrder(A.pixels.resultPixels, B, _, I));
542
+ },
543
+ /*****************
544
+ * private methods (helper methods)
545
+ *****************/
546
+ formatFileInfo: function(E) {
547
+ return {
548
+ fileIdentifierString: E.headerInfo.fileIdentifierString,
549
+ fileVersion: E.headerInfo.fileVersion,
550
+ imageType: E.headerInfo.imageType,
551
+ height: E.headerInfo.height,
552
+ width: E.headerInfo.width,
553
+ numValidPixel: E.headerInfo.numValidPixel,
554
+ microBlockSize: E.headerInfo.microBlockSize,
555
+ blobSize: E.headerInfo.blobSize,
556
+ maxZError: E.headerInfo.maxZError,
557
+ pixelType: d.getPixelType(E.headerInfo.imageType),
558
+ eofOffset: E.eofOffset,
559
+ mask: E.mask ? {
560
+ numBytes: E.mask.numBytes
561
+ } : null,
562
+ pixels: {
563
+ numBlocksX: E.pixels.numBlocksX,
564
+ numBlocksY: E.pixels.numBlocksY,
565
+ //"numBytes": data.pixels.numBytes,
566
+ maxValue: E.headerInfo.zMax,
567
+ minValue: E.headerInfo.zMin,
568
+ noDataValue: E.noDataValue
569
+ }
570
+ };
571
+ },
572
+ constructConstantSurface: function(E, A) {
573
+ var I = E.headerInfo.zMax, a = E.headerInfo.zMin, Q = E.headerInfo.maxValues, g = E.headerInfo.numDims, r = E.headerInfo.height * E.headerInfo.width, B = 0, C = 0, t = 0, o = E.pixels.resultMask, s = E.pixels.resultPixels;
574
+ if (o)
575
+ if (g > 1) {
576
+ if (A)
577
+ for (B = 0; B < g; B++)
578
+ for (t = B * r, I = Q[B], C = 0; C < r; C++)
579
+ o[C] && (s[t + C] = I);
580
+ else
581
+ for (C = 0; C < r; C++)
582
+ if (o[C])
583
+ for (t = C * g, B = 0; B < g; B++)
584
+ s[t + g] = Q[B];
585
+ } else
586
+ for (C = 0; C < r; C++)
587
+ o[C] && (s[C] = I);
588
+ else if (g > 1 && a !== I)
589
+ if (A)
590
+ for (B = 0; B < g; B++)
591
+ for (t = B * r, I = Q[B], C = 0; C < r; C++)
592
+ s[t + C] = I;
593
+ else
594
+ for (C = 0; C < r; C++)
595
+ for (t = C * g, B = 0; B < g; B++)
596
+ s[t + B] = Q[B];
597
+ else
598
+ for (C = 0; C < r * g; C++)
599
+ s[C] = I;
600
+ },
601
+ getDataTypeArray: function(E) {
602
+ var A;
603
+ switch (E) {
604
+ case 0:
605
+ A = Int8Array;
606
+ break;
607
+ case 1:
608
+ A = Uint8Array;
609
+ break;
610
+ case 2:
611
+ A = Int16Array;
612
+ break;
613
+ case 3:
614
+ A = Uint16Array;
615
+ break;
616
+ case 4:
617
+ A = Int32Array;
618
+ break;
619
+ case 5:
620
+ A = Uint32Array;
621
+ break;
622
+ case 6:
623
+ A = Float32Array;
624
+ break;
625
+ case 7:
626
+ A = Float64Array;
627
+ break;
628
+ default:
629
+ A = Float32Array;
630
+ }
631
+ return A;
632
+ },
633
+ getPixelType: function(E) {
634
+ var A;
635
+ switch (E) {
636
+ case 0:
637
+ A = "S8";
638
+ break;
639
+ case 1:
640
+ A = "U8";
641
+ break;
642
+ case 2:
643
+ A = "S16";
644
+ break;
645
+ case 3:
646
+ A = "U16";
647
+ break;
648
+ case 4:
649
+ A = "S32";
650
+ break;
651
+ case 5:
652
+ A = "U32";
653
+ break;
654
+ case 6:
655
+ A = "F32";
656
+ break;
657
+ case 7:
658
+ A = "F64";
659
+ break;
660
+ default:
661
+ A = "F32";
662
+ }
663
+ return A;
664
+ },
665
+ isValidPixelValue: function(E, A) {
666
+ if (A == null)
667
+ return !1;
668
+ var I;
669
+ switch (E) {
670
+ case 0:
671
+ I = A >= -128 && A <= 127;
672
+ break;
673
+ case 1:
674
+ I = A >= 0 && A <= 255;
675
+ break;
676
+ case 2:
677
+ I = A >= -32768 && A <= 32767;
678
+ break;
679
+ case 3:
680
+ I = A >= 0 && A <= 65536;
681
+ break;
682
+ case 4:
683
+ I = A >= -2147483648 && A <= 2147483647;
684
+ break;
685
+ case 5:
686
+ I = A >= 0 && A <= 4294967296;
687
+ break;
688
+ case 6:
689
+ I = A >= -34027999387901484e22 && A <= 34027999387901484e22;
690
+ break;
691
+ case 7:
692
+ I = A >= -17976931348623157e292 && A <= 17976931348623157e292;
693
+ break;
694
+ default:
695
+ I = !1;
696
+ }
697
+ return I;
698
+ },
699
+ getDataTypeSize: function(E) {
700
+ var A = 0;
701
+ switch (E) {
702
+ case 0:
703
+ case 1:
704
+ A = 1;
705
+ break;
706
+ case 2:
707
+ case 3:
708
+ A = 2;
709
+ break;
710
+ case 4:
711
+ case 5:
712
+ case 6:
713
+ A = 4;
714
+ break;
715
+ case 7:
716
+ A = 8;
717
+ break;
718
+ default:
719
+ A = E;
720
+ }
721
+ return A;
722
+ },
723
+ getDataTypeUsed: function(E, A) {
724
+ var I = E;
725
+ switch (E) {
726
+ case 2:
727
+ case 4:
728
+ I = E - A;
729
+ break;
730
+ case 3:
731
+ case 5:
732
+ I = E - 2 * A;
733
+ break;
734
+ case 6:
735
+ A === 0 ? I = E : A === 1 ? I = 2 : I = 1;
736
+ break;
737
+ case 7:
738
+ A === 0 ? I = E : I = E - 2 * A + 1;
739
+ break;
740
+ default:
741
+ I = E;
742
+ break;
743
+ }
744
+ return I;
745
+ },
746
+ getOnePixel: function(E, A, I, a) {
747
+ var Q = 0;
748
+ switch (I) {
749
+ case 0:
750
+ Q = a.getInt8(A);
751
+ break;
752
+ case 1:
753
+ Q = a.getUint8(A);
754
+ break;
755
+ case 2:
756
+ Q = a.getInt16(A, !0);
757
+ break;
758
+ case 3:
759
+ Q = a.getUint16(A, !0);
760
+ break;
761
+ case 4:
762
+ Q = a.getInt32(A, !0);
763
+ break;
764
+ case 5:
765
+ Q = a.getUInt32(A, !0);
766
+ break;
767
+ case 6:
768
+ Q = a.getFloat32(A, !0);
769
+ break;
770
+ case 7:
771
+ Q = a.getFloat64(A, !0);
772
+ break;
773
+ default:
774
+ throw "the decoder does not understand this pixel type";
775
+ }
776
+ return Q;
777
+ },
778
+ swapDimensionOrder: function(E, A, I, a, Q) {
779
+ var g = 0, r = 0, B = 0, C = 0, t = E;
780
+ if (I > 1)
781
+ if (t = new a(A * I), Q)
782
+ for (g = 0; g < A; g++)
783
+ for (C = g, B = 0; B < I; B++, C += A)
784
+ t[C] = E[r++];
785
+ else
786
+ for (g = 0; g < A; g++)
787
+ for (C = g, B = 0; B < I; B++, C += A)
788
+ t[r++] = E[C];
789
+ return t;
790
+ }
791
+ }, m = function(E, A, I) {
792
+ this.val = E, this.left = A, this.right = I;
793
+ }, z = {
794
+ /*
795
+ * ********removed options compared to LERC1. We can bring some of them back if needed.
796
+ * removed pixel type. LERC2 is typed and doesn't require user to give pixel type
797
+ * changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.
798
+ * removed returnMask. mask is used by LERC2 internally and is cost free. In case of user input mask, it's returned as well and has neglible cost.
799
+ * removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,
800
+ * user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.
801
+ * We can add it back later if their's a clear requirement.
802
+ * removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)
803
+ * removed computeUsedBitDepths.
804
+ *
805
+ *
806
+ * response changes compared to LERC1
807
+ * 1. encodedMaskData is not available
808
+ * 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)
809
+ * 3. maskData is always available
810
+ */
811
+ /*****************
812
+ * public properties
813
+ ******************/
814
+ //HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable
815
+ /*****************
816
+ * public methods
817
+ *****************/
818
+ /**
819
+ * Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.
820
+ *
821
+ * @param {ArrayBuffer} input The LERC input byte stream
822
+ * @param {object} [options] options Decoding options
823
+ * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position
824
+ * @param {boolean} [options.returnFileInfo] If true, the return value will have a fileInfo property that contains metadata obtained from the LERC headers and the decoding process
825
+ * @param {boolean} [options.returnPixelInterleavedDims] If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
826
+ */
827
+ decode: function(E, A) {
828
+ A = A || {};
829
+ var I = A.noDataValue, a = 0, Q = {};
830
+ if (Q.ptr = A.inputOffset || 0, Q.pixels = {}, !!d.readHeaderInfo(E, Q)) {
831
+ var g = Q.headerInfo, r = g.fileVersion, B = d.getDataTypeArray(g.imageType);
832
+ if (r > 5)
833
+ throw "unsupported lerc version 2." + r;
834
+ d.readMask(E, Q), g.numValidPixel !== g.width * g.height && !Q.pixels.resultMask && (Q.pixels.resultMask = A.maskData);
835
+ var C = g.width * g.height;
836
+ Q.pixels.resultPixels = new B(C * g.numDims), Q.counter = {
837
+ onesweep: 0,
838
+ uncompressed: 0,
839
+ lut: 0,
840
+ bitstuffer: 0,
841
+ constant: 0,
842
+ constantoffset: 0
843
+ };
844
+ var t = !A.returnPixelInterleavedDims;
845
+ if (g.numValidPixel !== 0)
846
+ if (g.zMax === g.zMin)
847
+ d.constructConstantSurface(Q, t);
848
+ else if (r >= 4 && d.checkMinMaxRanges(E, Q))
849
+ d.constructConstantSurface(Q, t);
850
+ else {
851
+ var o = new DataView(E, Q.ptr, 2), s = o.getUint8(0);
852
+ if (Q.ptr++, s)
853
+ d.readDataOneSweep(E, Q, B, t);
854
+ else if (r > 1 && g.imageType <= 1 && Math.abs(g.maxZError - 0.5) < 1e-5) {
855
+ var n = o.getUint8(1);
856
+ if (Q.ptr++, Q.encodeMode = n, n > 2 || r < 4 && n > 1)
857
+ throw "Invalid Huffman flag " + n;
858
+ n ? d.readHuffman(E, Q, B, t) : d.readTiles(E, Q, B, t);
859
+ } else
860
+ d.readTiles(E, Q, B, t);
861
+ }
862
+ Q.eofOffset = Q.ptr;
863
+ var e;
864
+ A.inputOffset ? (e = Q.headerInfo.blobSize + A.inputOffset - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = A.inputOffset + Q.headerInfo.blobSize)) : (e = Q.headerInfo.blobSize - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = Q.headerInfo.blobSize));
865
+ var i = {
866
+ width: g.width,
867
+ height: g.height,
868
+ pixelData: Q.pixels.resultPixels,
869
+ minValue: g.zMin,
870
+ maxValue: g.zMax,
871
+ validPixelCount: g.numValidPixel,
872
+ dimCount: g.numDims,
873
+ dimStats: {
874
+ minValues: g.minValues,
875
+ maxValues: g.maxValues
876
+ },
877
+ maskData: Q.pixels.resultMask
878
+ //noDataValue: noDataValue
879
+ };
880
+ if (Q.pixels.resultMask && d.isValidPixelValue(g.imageType, I)) {
881
+ var h = Q.pixels.resultMask;
882
+ for (a = 0; a < C; a++)
883
+ h[a] || (i.pixelData[a] = I);
884
+ i.noDataValue = I;
885
+ }
886
+ return Q.noDataValue = I, A.returnFileInfo && (i.fileInfo = d.formatFileInfo(Q)), i;
887
+ }
888
+ },
889
+ getBandCount: function(E) {
890
+ var A = 0, I = 0, a = {};
891
+ for (a.ptr = 0, a.pixels = {}; I < E.byteLength - 58; )
892
+ d.readHeaderInfo(E, a), I += a.headerInfo.blobSize, A++, a.ptr = I;
893
+ return A;
894
+ }
895
+ };
896
+ return z;
897
+ }(), Z = function() {
898
+ var N = new ArrayBuffer(4), d = new Uint8Array(N), m = new Uint32Array(N);
899
+ return m[0] = 1, d[0] === 1;
900
+ }(), v = {
901
+ /************wrapper**********************************************/
902
+ /**
903
+ * A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.
904
+ *
905
+ * @alias module:Lerc
906
+ * @param {ArrayBuffer} input The LERC input byte stream
907
+ * @param {object} [options] The decoding options below are optional.
908
+ * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.
909
+ * @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.
910
+ * @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.
911
+ * @param {boolean} [options.returnPixelInterleavedDims] (nDim LERC2 only) If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
912
+ * @returns {{width, height, pixels, pixelType, mask, statistics}}
913
+ * @property {number} width Width of decoded image.
914
+ * @property {number} height Height of decoded image.
915
+ * @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.
916
+ * @property {string} pixelType The type of pixels represented in the output.
917
+ * @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.
918
+ * @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values
919
+ **/
920
+ decode: function(N, d) {
921
+ if (!Z)
922
+ throw "Big endian system is not supported.";
923
+ d = d || {};
924
+ var m = d.inputOffset || 0, z = new Uint8Array(N, m, 10), E = String.fromCharCode.apply(null, z), A, I;
925
+ if (E.trim() === "CntZImage")
926
+ A = u, I = 1;
927
+ else if (E.substring(0, 5) === "Lerc2")
928
+ A = P, I = 2;
929
+ else
930
+ throw "Unexpected file identifier string: " + E;
931
+ for (var a = 0, Q = N.byteLength - 10, g, r = [], B, C, t = {
932
+ width: 0,
933
+ height: 0,
934
+ pixels: [],
935
+ pixelType: d.pixelType,
936
+ mask: null,
937
+ statistics: []
938
+ }, o = 0; m < Q; ) {
939
+ var s = A.decode(N, {
940
+ inputOffset: m,
941
+ //for both lerc1 and lerc2
942
+ encodedMaskData: g,
943
+ //lerc1 only
944
+ maskData: C,
945
+ //lerc2 only
946
+ returnMask: a === 0,
947
+ //lerc1 only
948
+ returnEncodedMask: a === 0,
949
+ //lerc1 only
950
+ returnFileInfo: !0,
951
+ //for both lerc1 and lerc2
952
+ returnPixelInterleavedDims: d.returnPixelInterleavedDims,
953
+ //for ndim lerc2 only
954
+ pixelType: d.pixelType || null,
955
+ //lerc1 only
956
+ noDataValue: d.noDataValue || null
957
+ //lerc1 only
958
+ });
959
+ m = s.fileInfo.eofOffset, C = s.maskData, a === 0 && (g = s.encodedMaskData, t.width = s.width, t.height = s.height, t.dimCount = s.dimCount || 1, t.pixelType = s.pixelType || s.fileInfo.pixelType, t.mask = C), I > 1 && (C && r.push(C), s.fileInfo.mask && s.fileInfo.mask.numBytes > 0 && o++), a++, t.pixels.push(s.pixelData), t.statistics.push({
960
+ minValue: s.minValue,
961
+ maxValue: s.maxValue,
962
+ noDataValue: s.noDataValue,
963
+ dimStats: s.dimStats
964
+ });
965
+ }
966
+ var n, e, i;
967
+ if (I > 1 && o > 1) {
968
+ for (i = t.width * t.height, t.bandMasks = r, C = new Uint8Array(i), C.set(r[0]), n = 1; n < r.length; n++)
969
+ for (B = r[n], e = 0; e < i; e++)
970
+ C[e] = C[e] & B[e];
971
+ t.maskData = C;
972
+ }
973
+ return t;
974
+ }
975
+ };
976
+ W.exports ? W.exports = v : this.Lerc = v;
977
+ })();
978
+ })(iA);
979
+ var nA = iA.exports;
980
+ const hA = /* @__PURE__ */ rA(nA);
981
+ let $, K, QA;
982
+ const BA = {
983
+ env: {
984
+ emscripten_notify_memory_growth: function(W) {
985
+ QA = new Uint8Array(K.exports.memory.buffer);
986
+ }
987
+ }
988
+ };
989
+ class wA {
990
+ init() {
991
+ return $ || (typeof fetch < "u" ? $ = fetch("data:application/wasm;base64," + EA).then((u) => u.arrayBuffer()).then((u) => WebAssembly.instantiate(u, BA)).then(this._init) : $ = WebAssembly.instantiate(Buffer.from(EA, "base64"), BA).then(this._init), $);
992
+ }
993
+ _init(u) {
994
+ K = u.instance, BA.env.emscripten_notify_memory_growth(0);
995
+ }
996
+ decode(u, P = 0) {
997
+ if (!K)
998
+ throw new Error("ZSTDDecoder: Await .init() before decoding.");
999
+ const Z = u.byteLength, v = K.exports.malloc(Z);
1000
+ QA.set(u, v), P = P || Number(K.exports.ZSTD_findDecompressedSize(v, Z));
1001
+ const N = K.exports.malloc(P), d = K.exports.ZSTD_decompress(N, P, v, Z), m = QA.slice(N, N + d);
1002
+ return K.exports.free(v), K.exports.free(N), m;
1003
+ }
1004
+ }
1005
+ const EA = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", fA = new wA();
1006
+ class lA extends DA {
1007
+ constructor(u) {
1008
+ super(), this.planarConfiguration = typeof u.PlanarConfiguration < "u" ? u.PlanarConfiguration : 1, this.samplesPerPixel = typeof u.SamplesPerPixel < "u" ? u.SamplesPerPixel : 1, this.addCompression = u.LercParameters[sA.AddCompression];
1009
+ }
1010
+ decodeBlock(u) {
1011
+ switch (this.addCompression) {
1012
+ case gA.None:
1013
+ break;
1014
+ case gA.Deflate:
1015
+ u = tA(new Uint8Array(u)).buffer;
1016
+ break;
1017
+ case gA.Zstandard:
1018
+ u = fA.decode(new Uint8Array(u)).buffer;
1019
+ break;
1020
+ default:
1021
+ throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
1022
+ }
1023
+ return hA.decode(u, { returnPixelInterleavedDims: this.planarConfiguration === 1 }).pixels[0].buffer;
1024
+ }
1025
+ }
1026
+ export {
1027
+ lA as default,
1028
+ fA as zstd
1029
+ };