@developmentseed/geotiff 0.3.0-beta.3

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 (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +125 -0
  3. package/dist/api.d.ts +34 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +84 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/array.d.ts +75 -0
  8. package/dist/array.d.ts.map +1 -0
  9. package/dist/array.js +141 -0
  10. package/dist/array.js.map +1 -0
  11. package/dist/codecs/canvas.d.ts +3 -0
  12. package/dist/codecs/canvas.d.ts.map +1 -0
  13. package/dist/codecs/canvas.js +32 -0
  14. package/dist/codecs/canvas.js.map +1 -0
  15. package/dist/codecs/decompression-stream.d.ts +6 -0
  16. package/dist/codecs/decompression-stream.d.ts.map +1 -0
  17. package/dist/codecs/decompression-stream.js +19 -0
  18. package/dist/codecs/decompression-stream.js.map +1 -0
  19. package/dist/codecs/deflate.d.ts +2 -0
  20. package/dist/codecs/deflate.d.ts.map +1 -0
  21. package/dist/codecs/deflate.js +5 -0
  22. package/dist/codecs/deflate.js.map +1 -0
  23. package/dist/codecs/lerc.d.ts +3 -0
  24. package/dist/codecs/lerc.d.ts.map +1 -0
  25. package/dist/codecs/lerc.js +16 -0
  26. package/dist/codecs/lerc.js.map +1 -0
  27. package/dist/codecs/lzw.d.ts +3 -0
  28. package/dist/codecs/lzw.d.ts.map +1 -0
  29. package/dist/codecs/lzw.js +8 -0
  30. package/dist/codecs/lzw.js.map +1 -0
  31. package/dist/codecs/predictor.d.ts +15 -0
  32. package/dist/codecs/predictor.d.ts.map +1 -0
  33. package/dist/codecs/predictor.js +88 -0
  34. package/dist/codecs/predictor.js.map +1 -0
  35. package/dist/colormap.d.ts +10 -0
  36. package/dist/colormap.d.ts.map +1 -0
  37. package/dist/colormap.js +31 -0
  38. package/dist/colormap.js.map +1 -0
  39. package/dist/crs.d.ts +86 -0
  40. package/dist/crs.d.ts.map +1 -0
  41. package/dist/crs.js +462 -0
  42. package/dist/crs.js.map +1 -0
  43. package/dist/decode/api.d.ts +28 -0
  44. package/dist/decode/api.d.ts.map +1 -0
  45. package/dist/decode/api.js +80 -0
  46. package/dist/decode/api.js.map +1 -0
  47. package/dist/decode.d.ts +34 -0
  48. package/dist/decode.d.ts.map +1 -0
  49. package/dist/decode.js +84 -0
  50. package/dist/decode.js.map +1 -0
  51. package/dist/fetch.d.ts +27 -0
  52. package/dist/fetch.d.ts.map +1 -0
  53. package/dist/fetch.js +116 -0
  54. package/dist/fetch.js.map +1 -0
  55. package/dist/geotiff.d.ts +116 -0
  56. package/dist/geotiff.d.ts.map +1 -0
  57. package/dist/geotiff.js +239 -0
  58. package/dist/geotiff.js.map +1 -0
  59. package/dist/ifd.d.ts +84 -0
  60. package/dist/ifd.d.ts.map +1 -0
  61. package/dist/ifd.js +113 -0
  62. package/dist/ifd.js.map +1 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +6 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/overview.d.ts +55 -0
  68. package/dist/overview.d.ts.map +1 -0
  69. package/dist/overview.js +78 -0
  70. package/dist/overview.js.map +1 -0
  71. package/dist/tile-matrix-set.d.ts +36 -0
  72. package/dist/tile-matrix-set.d.ts.map +1 -0
  73. package/dist/tile-matrix-set.js +87 -0
  74. package/dist/tile-matrix-set.js.map +1 -0
  75. package/dist/tile.d.ts +11 -0
  76. package/dist/tile.d.ts.map +1 -0
  77. package/dist/tile.js +2 -0
  78. package/dist/tile.js.map +1 -0
  79. package/dist/transform.d.ts +28 -0
  80. package/dist/transform.d.ts.map +1 -0
  81. package/dist/transform.js +51 -0
  82. package/dist/transform.js.map +1 -0
  83. package/dist/tsconfig.tsbuildinfo +1 -0
  84. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lerc.js","sourceRoot":"","sources":["../../src/codecs/lerc.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,KAAK,UAAU,OAAO;IACpB,6CAA6C;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DecoderMetadata } from "../decode.js";
2
+ export declare function decode(bytes: ArrayBuffer, metadata: DecoderMetadata): Promise<ArrayBuffer>;
3
+ //# sourceMappingURL=lzw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzw.d.ts","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC,CAStB"}
@@ -0,0 +1,8 @@
1
+ import { decompress } from "@developmentseed/lzw-tiff-decoder";
2
+ export async function decode(bytes, metadata) {
3
+ const { width, height, samplesPerPixel, bitsPerSample } = metadata;
4
+ const maxUncompressedSize = width * height * samplesPerPixel * (bitsPerSample / 8);
5
+ const result = decompress(new Uint8Array(bytes), maxUncompressedSize);
6
+ return result.buffer.slice(result.byteOffset, result.byteOffset + result.byteLength);
7
+ }
8
+ //# sourceMappingURL=lzw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lzw.js","sourceRoot":"","sources":["../../src/codecs/lzw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAkB,EAClB,QAAyB;IAEzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IACnE,MAAM,mBAAmB,GACvB,KAAK,GAAG,MAAM,GAAG,eAAe,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CACxB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CACvB,CAAC;AACnB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { PlanarConfiguration } from "@cogeotiff/core";
2
+ import { Predictor } from "../ifd.js";
3
+ /**
4
+ * Apply TIFF predictor decoding to a raw decoded tile buffer in-place.
5
+ *
6
+ * @param block Decoded tile bytes.
7
+ * @param predictor Predictor enum value.
8
+ * @param width Tile width in pixels.
9
+ * @param height Tile height in pixels.
10
+ * @param bitsPerSample Bits per sample (all samples must be equal).
11
+ * @param samplesPerPixel Number of bands.
12
+ * @param planarConfiguration PlanarConfiguration enum value.
13
+ */
14
+ export declare function applyPredictor(block: ArrayBuffer, predictor: Predictor, width: number, height: number, bitsPerSample: number, samplesPerPixel: number, planarConfiguration: PlanarConfiguration): ArrayBuffer;
15
+ //# sourceMappingURL=predictor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictor.d.ts","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAoDtC;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,mBAAmB,GACvC,WAAW,CA6Cb"}
@@ -0,0 +1,88 @@
1
+ import { PlanarConfiguration } from "@cogeotiff/core";
2
+ import { Predictor } from "../ifd.js";
3
+ /**
4
+ * Undo TIFF horizontal differencing (predictor 2) or floating-point
5
+ * prediction (predictor 3) in-place on a decoded tile buffer.
6
+ *
7
+ * Mirrors the applyPredictor logic in geotiff.js.
8
+ */
9
+ /** Undo horizontal differencing for integer samples (predictor 2). */
10
+ function decodeRowAcc(row, stride) {
11
+ const r = row;
12
+ let offset = 0;
13
+ let length = row.length - stride;
14
+ do {
15
+ for (let i = stride; i > 0; i--) {
16
+ r[offset + stride] = (r[offset + stride] ?? 0) + (r[offset] ?? 0);
17
+ offset++;
18
+ }
19
+ length -= stride;
20
+ } while (length > 0);
21
+ }
22
+ /** Undo floating-point horizontal differencing (predictor 3). */
23
+ function decodeRowFloatingPoint(row, stride, bytesPerSample) {
24
+ let index = 0;
25
+ let count = row.length;
26
+ const wc = count / bytesPerSample;
27
+ while (count > stride) {
28
+ for (let i = stride; i > 0; i--) {
29
+ row[index + stride] += row[index];
30
+ index++;
31
+ }
32
+ count -= stride;
33
+ }
34
+ const copy = row.slice();
35
+ for (let i = 0; i < wc; i++) {
36
+ for (let b = 0; b < bytesPerSample; b++) {
37
+ row[bytesPerSample * i + b] = copy[(bytesPerSample - b - 1) * wc + i];
38
+ }
39
+ }
40
+ }
41
+ /**
42
+ * Apply TIFF predictor decoding to a raw decoded tile buffer in-place.
43
+ *
44
+ * @param block Decoded tile bytes.
45
+ * @param predictor Predictor enum value.
46
+ * @param width Tile width in pixels.
47
+ * @param height Tile height in pixels.
48
+ * @param bitsPerSample Bits per sample (all samples must be equal).
49
+ * @param samplesPerPixel Number of bands.
50
+ * @param planarConfiguration PlanarConfiguration enum value.
51
+ */
52
+ export function applyPredictor(block, predictor, width, height, bitsPerSample, samplesPerPixel, planarConfiguration) {
53
+ if (predictor === Predictor.None) {
54
+ return block;
55
+ }
56
+ const bytesPerSample = bitsPerSample / 8;
57
+ const stride = planarConfiguration === PlanarConfiguration.Separate ? 1 : samplesPerPixel;
58
+ for (let i = 0; i < height; i++) {
59
+ const byteOffset = i * stride * width * bytesPerSample;
60
+ if (byteOffset >= block.byteLength) {
61
+ break;
62
+ }
63
+ if (predictor === Predictor.Horizontal) {
64
+ let row;
65
+ const length = stride * width;
66
+ switch (bitsPerSample) {
67
+ case 8:
68
+ row = new Uint8Array(block, byteOffset, length);
69
+ break;
70
+ case 16:
71
+ row = new Uint16Array(block, byteOffset, length);
72
+ break;
73
+ case 32:
74
+ row = new Uint32Array(block, byteOffset, length);
75
+ break;
76
+ default:
77
+ throw new Error(`Predictor 2 not supported for ${bitsPerSample} bits per sample.`);
78
+ }
79
+ decodeRowAcc(row, stride);
80
+ }
81
+ else if (predictor === Predictor.FloatingPoint) {
82
+ const row = new Uint8Array(block, byteOffset, stride * width * bytesPerSample);
83
+ decodeRowFloatingPoint(row, stride, bytesPerSample);
84
+ }
85
+ }
86
+ return block;
87
+ }
88
+ //# sourceMappingURL=predictor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictor.js","sourceRoot":"","sources":["../../src/codecs/predictor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parse the GeoTIFF `ColorMap` tag into an ImageData.
3
+ *
4
+ * @param cmap The colormap array from the GeoTIFF `ColorMap` tag.
5
+ * @param nodata Optional index of the nodata value in the colormap.
6
+ *
7
+ * @return The parsed colormap as an ImageData object.
8
+ */
9
+ export declare function parseColormap(cmap: Uint16Array, nodata?: number): ImageData;
10
+ //# sourceMappingURL=colormap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colormap.d.ts","sourceRoot":"","sources":["../src/colormap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CA0B3E"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Parse the GeoTIFF `ColorMap` tag into an ImageData.
3
+ *
4
+ * @param cmap The colormap array from the GeoTIFF `ColorMap` tag.
5
+ * @param nodata Optional index of the nodata value in the colormap.
6
+ *
7
+ * @return The parsed colormap as an ImageData object.
8
+ */
9
+ export function parseColormap(cmap, nodata) {
10
+ // TODO: test colormap handling on a 16-bit image with 2^16 entries?
11
+ const size = cmap.length / 3;
12
+ const rgba = new Uint8ClampedArray(size * 4);
13
+ const rOffset = 0;
14
+ const gOffset = size;
15
+ const bOffset = size * 2;
16
+ // Note: >> 8 is needed to convert from 16-bit to 8-bit color values
17
+ // It just divides by 256 and floors to nearest integer
18
+ for (let i = 0; i < size; i++) {
19
+ rgba[4 * i + 0] = cmap[rOffset + i] >> 8;
20
+ rgba[4 * i + 1] = cmap[gOffset + i] >> 8;
21
+ rgba[4 * i + 2] = cmap[bOffset + i] >> 8;
22
+ // Full opacity
23
+ rgba[4 * i + 3] = 255;
24
+ }
25
+ if (nodata !== undefined) {
26
+ // Set nodata value to be fully transparent
27
+ rgba[4 * nodata + 3] = 0;
28
+ }
29
+ return new ImageData(rgba, size, 1);
30
+ }
31
+ //# sourceMappingURL=colormap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colormap.js","sourceRoot":"","sources":["../src/colormap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAiB,EAAE,MAAe;IAC9D,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,MAAM,OAAO,GAAG,IAAI,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;IAEzB,oEAAoE;IACpE,uDAAuD;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC;QAE1C,eAAe;QACf,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,2CAA2C;QAC3C,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
package/dist/crs.d.ts ADDED
@@ -0,0 +1,86 @@
1
+ import type { GeoKeyDirectory } from "./ifd.js";
2
+ export interface ProjJsonUnit {
3
+ type: "LinearUnit" | "AngularUnit";
4
+ name: string;
5
+ conversion_factor: number;
6
+ }
7
+ export interface ProjJsonAxis {
8
+ name: string;
9
+ abbreviation: string;
10
+ direction: string;
11
+ unit: string | ProjJsonUnit;
12
+ }
13
+ export interface ProjJsonCoordinateSystem {
14
+ subtype: string;
15
+ axis: ProjJsonAxis[];
16
+ }
17
+ export interface ProjJsonEllipsoid {
18
+ name: string;
19
+ semi_major_axis?: number;
20
+ semi_minor_axis?: number;
21
+ inverse_flattening?: number;
22
+ }
23
+ export interface ProjJsonPrimeMeridian {
24
+ name: string;
25
+ longitude: number;
26
+ }
27
+ export interface ProjJsonDatum {
28
+ type: "GeodeticReferenceFrame";
29
+ name: string;
30
+ ellipsoid?: ProjJsonEllipsoid;
31
+ prime_meridian?: ProjJsonPrimeMeridian;
32
+ }
33
+ export interface ProjJsonParameter {
34
+ name: string;
35
+ value: number;
36
+ unit: string | ProjJsonUnit;
37
+ }
38
+ export interface ProjJsonConversion {
39
+ name: string;
40
+ method: {
41
+ name: string;
42
+ };
43
+ parameters: ProjJsonParameter[];
44
+ }
45
+ export interface ProjJsonDatumEnsemble {
46
+ name: string;
47
+ members: {
48
+ name: string;
49
+ id?: {
50
+ authority: string;
51
+ code: number;
52
+ };
53
+ }[];
54
+ ellipsoid: ProjJsonEllipsoid;
55
+ accuracy?: string;
56
+ id?: {
57
+ authority: string;
58
+ code: number;
59
+ };
60
+ }
61
+ export interface GeographicCRS {
62
+ type: "GeographicCRS";
63
+ $schema?: string;
64
+ name: string;
65
+ datum?: ProjJsonDatum;
66
+ datum_ensemble?: ProjJsonDatumEnsemble;
67
+ coordinate_system: ProjJsonCoordinateSystem;
68
+ }
69
+ export interface ProjectedCRS {
70
+ type: "ProjectedCRS";
71
+ $schema: string;
72
+ name: string;
73
+ base_crs: GeographicCRS;
74
+ conversion: ProjJsonConversion;
75
+ coordinate_system: ProjJsonCoordinateSystem;
76
+ }
77
+ export type ProjJson = GeographicCRS | ProjectedCRS;
78
+ /**
79
+ * Parse a CRS from a GeoKeyDirectory.
80
+ *
81
+ * Returns the EPSG code as a number for EPSG-coded CRSes (letting the caller
82
+ * decide how to resolve it), or a PROJJSON object built from the geo keys for
83
+ * user-defined CRSes.
84
+ */
85
+ export declare function crsFromGeoKeys(gkd: GeoKeyDirectory): number | ProjJson;
86
+ //# sourceMappingURL=crs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crs.d.ts","sourceRoot":"","sources":["../src/crs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAC;IACtE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,iBAAiB,EAAE,wBAAwB,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,EAAE,wBAAwB,CAAC;CAC7C;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC;AA6DpD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,QAAQ,CAYtE"}