neozipkit 1.0.2 → 1.0.5

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 (76) hide show
  1. package/NEOZIP_APPNOTE.md +527 -0
  2. package/README.md +8 -5
  3. package/WHATS_NEW.md +42 -10
  4. package/dist/browser/ZipkitBrowser.d.ts.map +1 -1
  5. package/dist/browser/ZipkitBrowser.js +4 -6
  6. package/dist/browser/ZipkitBrowser.js.map +1 -1
  7. package/dist/browser-esm/index.js +424 -82
  8. package/dist/browser-esm/index.js.map +4 -4
  9. package/dist/browser-umd/index.js +424 -82
  10. package/dist/browser-umd/index.js.map +4 -4
  11. package/dist/browser-umd/index.min.js +3 -3
  12. package/dist/core/ZipCompress.d.ts.map +1 -1
  13. package/dist/core/ZipCompress.js +12 -11
  14. package/dist/core/ZipCompress.js.map +1 -1
  15. package/dist/core/ZipDecompress.d.ts.map +1 -1
  16. package/dist/core/ZipDecompress.js +13 -8
  17. package/dist/core/ZipDecompress.js.map +1 -1
  18. package/dist/core/ZipEntry.d.ts +6 -0
  19. package/dist/core/ZipEntry.d.ts.map +1 -1
  20. package/dist/core/ZipEntry.js +7 -1
  21. package/dist/core/ZipEntry.js.map +1 -1
  22. package/dist/core/Zipkit.d.ts +43 -11
  23. package/dist/core/Zipkit.d.ts.map +1 -1
  24. package/dist/core/Zipkit.js +106 -63
  25. package/dist/core/Zipkit.js.map +1 -1
  26. package/dist/core/components/HashCalculator.d.ts +22 -1
  27. package/dist/core/components/HashCalculator.d.ts.map +1 -1
  28. package/dist/core/components/HashCalculator.js +49 -6
  29. package/dist/core/components/HashCalculator.js.map +1 -1
  30. package/dist/core/components/Util.d.ts +3 -4
  31. package/dist/core/components/Util.d.ts.map +1 -1
  32. package/dist/core/components/Util.js +10 -8
  33. package/dist/core/components/Util.js.map +1 -1
  34. package/dist/core/constants/Headers.d.ts +1 -3
  35. package/dist/core/constants/Headers.d.ts.map +1 -1
  36. package/dist/core/constants/Headers.js +14 -5
  37. package/dist/core/constants/Headers.js.map +1 -1
  38. package/dist/core/constants/MetaPaths.d.ts +38 -0
  39. package/dist/core/constants/MetaPaths.d.ts.map +1 -0
  40. package/dist/core/constants/MetaPaths.js +79 -0
  41. package/dist/core/constants/MetaPaths.js.map +1 -0
  42. package/dist/core/index.d.ts +2 -0
  43. package/dist/core/index.d.ts.map +1 -1
  44. package/dist/core/index.js +14 -1
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/merkle/MerkleRoot.d.ts +109 -0
  47. package/dist/core/merkle/MerkleRoot.d.ts.map +1 -0
  48. package/dist/core/merkle/MerkleRoot.js +275 -0
  49. package/dist/core/merkle/MerkleRoot.js.map +1 -0
  50. package/dist/core/version.js +1 -1
  51. package/dist/node/ZipCompressNode.d.ts.map +1 -1
  52. package/dist/node/ZipCompressNode.js +40 -49
  53. package/dist/node/ZipCompressNode.js.map +1 -1
  54. package/dist/node/ZipDecompressNode.d.ts.map +1 -1
  55. package/dist/node/ZipDecompressNode.js +17 -1
  56. package/dist/node/ZipDecompressNode.js.map +1 -1
  57. package/dist/node/ZipkitNode.d.ts +9 -0
  58. package/dist/node/ZipkitNode.d.ts.map +1 -1
  59. package/dist/node/ZipkitNode.js +67 -4
  60. package/dist/node/ZipkitNode.js.map +1 -1
  61. package/package.json +3 -2
  62. package/src/browser/ZipkitBrowser.ts +4 -6
  63. package/src/core/ZipCompress.ts +14 -13
  64. package/src/core/ZipDecompress.ts +14 -8
  65. package/src/core/ZipEntry.ts +8 -1
  66. package/src/core/Zipkit.ts +149 -76
  67. package/src/core/components/HashCalculator.ts +58 -6
  68. package/src/core/components/Util.ts +16 -7
  69. package/src/core/constants/Headers.ts +14 -4
  70. package/src/core/constants/MetaPaths.ts +86 -0
  71. package/src/core/index.ts +14 -0
  72. package/src/core/merkle/MerkleRoot.ts +312 -0
  73. package/src/core/version.ts +1 -1
  74. package/src/node/ZipCompressNode.ts +40 -49
  75. package/src/node/ZipDecompressNode.ts +13 -1
  76. package/src/node/ZipkitNode.ts +82 -4
@@ -5,16 +5,25 @@
5
5
  // ======================================
6
6
  // Zip File Format Constants
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.DOS_FILE_ATTR = exports.FILE_SYSTEM = exports.HDR_ID = exports.EXTENSIBLE_DATA_FIELDS = exports.GP_FLAG = exports.CMP_METHOD = exports.ZIP64_CENTRAL_END = exports.ZIP64_CENTRAL_DIR = exports.CENTRAL_END = exports.CENTRAL_DIR = exports.DATA_DESC = exports.NEO_CRYPTO_MAGIC_BYTES = exports.NEO_CRYPTO_EXTRA_FIELD_SIZE = exports.NEO_CRYPTO_PAYLOAD_V1 = exports.AES_OVERHEAD = exports.AES_EXTRA_FIELD_SIZE = exports.AES_AUTH_CODE_SIZE = exports.AES256_PWD_VERIFY_SIZE = exports.AES256_KEY_SIZE = exports.AES256_SALT_SIZE = exports.ENCRYPT_HDR_SIZE = exports.LOCAL_HDR = exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.DATA_DESCRIPTOR = exports.ZIP64_CENTRAL_DIRECTORY_END = exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = exports.CENTRAL_DIRECTORY_END = exports.CENTRAL_FILE_HEADER = exports.LOCAL_FILE_HEADER = void 0;
8
+ exports.DOS_FILE_ATTR = exports.FILE_SYSTEM = exports.HDR_ID = exports.EXTENSIBLE_DATA_FIELDS = exports.GP_FLAG = exports.CMP_METHOD = exports.ZIP64_CENTRAL_END = exports.ZIP64_CENTRAL_DIR = exports.CENTRAL_END = exports.CENTRAL_DIR = exports.DATA_DESC = exports.NEO_CRYPTO_MAGIC_BYTES = exports.NEO_CRYPTO_EXTRA_FIELD_SIZE = exports.NEO_CRYPTO_PAYLOAD_V1 = exports.AES_OVERHEAD = exports.AES_EXTRA_FIELD_SIZE = exports.AES_AUTH_CODE_SIZE = exports.AES256_PWD_VERIFY_SIZE = exports.AES256_KEY_SIZE = exports.AES256_SALT_SIZE = exports.ENCRYPT_HDR_SIZE = exports.LOCAL_HDR = exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = exports.DATA_DESCRIPTOR = exports.ZIP64_CENTRAL_DIRECTORY_END = exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = exports.CENTRAL_DIRECTORY_END = exports.CENTRAL_FILE_HEADER = exports.LOCAL_FILE_HEADER = void 0;
9
9
  exports.LOCAL_FILE_HEADER = 'PK\x03\x04';
10
10
  exports.CENTRAL_FILE_HEADER = 'PK\x01\x02';
11
11
  exports.CENTRAL_DIRECTORY_END = 'PK\x05\x06';
12
12
  exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = 'PK\x06\x07';
13
13
  exports.ZIP64_CENTRAL_DIRECTORY_END = 'PK\x06\x06';
14
14
  exports.DATA_DESCRIPTOR = 'PK\x07\x08';
15
- exports.TIMESTAMP_SUBMITTED = 'META-INF/TS-SUBMIT.OTS';
16
- exports.TIMESTAMP_METADATA = 'META-INF/TIMESTAMP.OTS';
17
- exports.TOKENIZED_METADATA = 'META-INF/NZIP.TOKEN';
15
+ // Reserved META-INF paths — see constants/MetaPaths.ts and NEOZIP_APPNOTE.md §2
16
+ var MetaPaths_1 = require("./MetaPaths");
17
+ Object.defineProperty(exports, "META_TOKEN_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP; } });
18
+ Object.defineProperty(exports, "META_TOKEN_NZIP_LEGACY", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP_LEGACY; } });
19
+ Object.defineProperty(exports, "META_TS_SUBMIT_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_NZIP; } });
20
+ Object.defineProperty(exports, "META_TIMESTAMP_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_NZIP; } });
21
+ Object.defineProperty(exports, "META_TS_SUBMIT_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_OTS; } });
22
+ Object.defineProperty(exports, "META_TIMESTAMP_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_OTS; } });
23
+ Object.defineProperty(exports, "META_MANIFEST_JSON", { enumerable: true, get: function () { return MetaPaths_1.META_MANIFEST_JSON; } });
24
+ Object.defineProperty(exports, "TIMESTAMP_SUBMITTED", { enumerable: true, get: function () { return MetaPaths_1.TIMESTAMP_SUBMITTED; } });
25
+ Object.defineProperty(exports, "TIMESTAMP_METADATA", { enumerable: true, get: function () { return MetaPaths_1.TIMESTAMP_METADATA; } });
26
+ Object.defineProperty(exports, "TOKENIZED_METADATA", { enumerable: true, get: function () { return MetaPaths_1.TOKENIZED_METADATA; } });
18
27
  // Local file header
19
28
  exports.LOCAL_HDR = {
20
29
  SIZE: 30, // LOC header size in bytes
@@ -165,7 +174,7 @@ exports.HDR_ID = {
165
174
  x509PKCS7RL: 0x0019, // X.509 Certificate Revocation List (PKCS#7)
166
175
  IBM1: 0x0065, // IBM S/390 (Z390) - Attribute
167
176
  IBM2: 0x0066, // IBM S/390 (Z390) - Attribute
168
- SHA256: 0x014E, // SHA256 "N\01" with 64 bytes (256 bit) of SHA256 hash data
177
+ SHA256: 0x014E, // NeoZip Extra Field: 32-byte SHA-256 of uncompressed payload (APPNOTE §5)
169
178
  NEO_CRYPTO: 0x024E, // NeoEncrypt metadata (see docs/NEO_CRYPTO_FORMAT.md); LE on wire: 4E 02
170
179
  POSZIP: 0x4690, // POSZIP 4690
171
180
  UNV_TIME: 0x5455, // Universal Time (UT) (32-bit) 5 data bytes
@@ -1 +1 @@
1
- {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/core/constants/Headers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../src/core/constants/Headers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * NeoZip reserved META-INF paths and ASCII case-insensitive discovery.
3
+ * Matches NEOZIP_APPNOTE.md §2.3: writers emit canonical spellings; readers fold case.
4
+ */
5
+ /** Canonical writers MUST emit these spellings. */
6
+ export declare const META_TOKEN_NZIP = "META-INF/TOKEN.NZIP";
7
+ export declare const META_TOKEN_NZIP_LEGACY = "META-INF/NZIP.TOKEN";
8
+ export declare const META_TS_SUBMIT_NZIP = "META-INF/TS-SUBMIT.NZIP";
9
+ export declare const META_TIMESTAMP_NZIP = "META-INF/TIMESTAMP.NZIP";
10
+ export declare const META_TS_SUBMIT_OTS = "META-INF/TS-SUBMIT.OTS";
11
+ export declare const META_TIMESTAMP_OTS = "META-INF/TIMESTAMP.OTS";
12
+ export declare const META_MANIFEST_JSON = "META-INF/manifest.json";
13
+ /** @deprecated Prefer META_TS_SUBMIT_OTS — kept for existing imports. */
14
+ export declare const TIMESTAMP_SUBMITTED = "META-INF/TS-SUBMIT.OTS";
15
+ /** @deprecated Prefer META_TIMESTAMP_OTS — kept for existing imports. */
16
+ export declare const TIMESTAMP_METADATA = "META-INF/TIMESTAMP.OTS";
17
+ /** @deprecated Prefer META_TOKEN_NZIP — kept for existing imports (canonical TOKEN.NZIP). */
18
+ export declare const TOKENIZED_METADATA = "META-INF/TOKEN.NZIP";
19
+ export type ZipEntryLikeFilename = {
20
+ filename?: string;
21
+ };
22
+ /** ASCII case-insensitive path compare (APPNOTE §2.3). */
23
+ export declare function asciiPathEqualsIgnoreCase(a: string, b: string): boolean;
24
+ /** True when path is under META-INF/ (ASCII case-insensitive). */
25
+ export declare function isMetaInfPath(filename: string): boolean;
26
+ /** True when filename is a reserved NeoZip meta path (any casing). */
27
+ export declare function isReservedMetaPath(filename: string): boolean;
28
+ /**
29
+ * True for any META-INF/** entry (integrity merkle leaves exclude these per APPNOTE §6.2).
30
+ */
31
+ export declare function isMetadataFile(filename: string): boolean;
32
+ /**
33
+ * Find a reserved meta entry among ZIP directory entries.
34
+ * Prefers an exact canonical match, then ASCII case-insensitive match.
35
+ * When multiple preferred names are given, earlier names win.
36
+ */
37
+ export declare function findReservedMetaEntry<T extends ZipEntryLikeFilename>(entries: T[], preferredCanonicalNames: string | readonly string[]): T | null;
38
+ //# sourceMappingURL=MetaPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaPaths.d.ts","sourceRoot":"","sources":["../../../src/core/constants/MetaPaths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AACtD,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AACrD,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,wBAAkB,CAAC;AAYlD,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,0DAA0D;AAC1D,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,oBAAoB,EAClE,OAAO,EAAE,CAAC,EAAE,EACZ,uBAAuB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAClD,CAAC,GAAG,IAAI,CAkBV"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * NeoZip reserved META-INF paths and ASCII case-insensitive discovery.
4
+ * Matches NEOZIP_APPNOTE.md §2.3: writers emit canonical spellings; readers fold case.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TOKENIZED_METADATA = exports.TIMESTAMP_METADATA = exports.TIMESTAMP_SUBMITTED = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = void 0;
8
+ exports.asciiPathEqualsIgnoreCase = asciiPathEqualsIgnoreCase;
9
+ exports.isMetaInfPath = isMetaInfPath;
10
+ exports.isReservedMetaPath = isReservedMetaPath;
11
+ exports.isMetadataFile = isMetadataFile;
12
+ exports.findReservedMetaEntry = findReservedMetaEntry;
13
+ /** Canonical writers MUST emit these spellings. */
14
+ exports.META_TOKEN_NZIP = 'META-INF/TOKEN.NZIP';
15
+ exports.META_TOKEN_NZIP_LEGACY = 'META-INF/NZIP.TOKEN';
16
+ exports.META_TS_SUBMIT_NZIP = 'META-INF/TS-SUBMIT.NZIP';
17
+ exports.META_TIMESTAMP_NZIP = 'META-INF/TIMESTAMP.NZIP';
18
+ exports.META_TS_SUBMIT_OTS = 'META-INF/TS-SUBMIT.OTS';
19
+ exports.META_TIMESTAMP_OTS = 'META-INF/TIMESTAMP.OTS';
20
+ exports.META_MANIFEST_JSON = 'META-INF/manifest.json';
21
+ /** @deprecated Prefer META_TS_SUBMIT_OTS — kept for existing imports. */
22
+ exports.TIMESTAMP_SUBMITTED = exports.META_TS_SUBMIT_OTS;
23
+ /** @deprecated Prefer META_TIMESTAMP_OTS — kept for existing imports. */
24
+ exports.TIMESTAMP_METADATA = exports.META_TIMESTAMP_OTS;
25
+ /** @deprecated Prefer META_TOKEN_NZIP — kept for existing imports (canonical TOKEN.NZIP). */
26
+ exports.TOKENIZED_METADATA = exports.META_TOKEN_NZIP;
27
+ const RESERVED_CANONICAL = [
28
+ exports.META_TOKEN_NZIP,
29
+ exports.META_TOKEN_NZIP_LEGACY,
30
+ exports.META_TS_SUBMIT_NZIP,
31
+ exports.META_TIMESTAMP_NZIP,
32
+ exports.META_TS_SUBMIT_OTS,
33
+ exports.META_TIMESTAMP_OTS,
34
+ exports.META_MANIFEST_JSON,
35
+ ];
36
+ /** ASCII case-insensitive path compare (APPNOTE §2.3). */
37
+ function asciiPathEqualsIgnoreCase(a, b) {
38
+ if (a.length !== b.length) {
39
+ // Still allow length mismatch only via toLowerCase for UTF-8 safety on ASCII paths
40
+ }
41
+ return a.toLowerCase() === b.toLowerCase();
42
+ }
43
+ /** True when path is under META-INF/ (ASCII case-insensitive). */
44
+ function isMetaInfPath(filename) {
45
+ return filename.toLowerCase().startsWith('meta-inf/');
46
+ }
47
+ /** True when filename is a reserved NeoZip meta path (any casing). */
48
+ function isReservedMetaPath(filename) {
49
+ const lower = filename.toLowerCase();
50
+ return RESERVED_CANONICAL.some((c) => c.toLowerCase() === lower);
51
+ }
52
+ /**
53
+ * True for any META-INF/** entry (integrity merkle leaves exclude these per APPNOTE §6.2).
54
+ */
55
+ function isMetadataFile(filename) {
56
+ return isMetaInfPath(filename);
57
+ }
58
+ /**
59
+ * Find a reserved meta entry among ZIP directory entries.
60
+ * Prefers an exact canonical match, then ASCII case-insensitive match.
61
+ * When multiple preferred names are given, earlier names win.
62
+ */
63
+ function findReservedMetaEntry(entries, preferredCanonicalNames) {
64
+ const preferred = Array.isArray(preferredCanonicalNames)
65
+ ? preferredCanonicalNames
66
+ : [preferredCanonicalNames];
67
+ for (const name of preferred) {
68
+ const exact = entries.find((e) => e.filename === name);
69
+ if (exact)
70
+ return exact;
71
+ }
72
+ for (const name of preferred) {
73
+ const folded = entries.find((e) => typeof e.filename === 'string' && asciiPathEqualsIgnoreCase(e.filename, name));
74
+ if (folded)
75
+ return folded;
76
+ }
77
+ return null;
78
+ }
79
+ //# sourceMappingURL=MetaPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaPaths.js","sourceRoot":"","sources":["../../../src/core/constants/MetaPaths.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+BH,8DAKC;AAGD,sCAEC;AAGD,gDAGC;AAKD,wCAEC;AAOD,sDAqBC;AAhFD,mDAAmD;AACtC,QAAA,eAAe,GAAG,qBAAqB,CAAC;AACxC,QAAA,sBAAsB,GAAG,qBAAqB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,yBAAyB,CAAC;AAChD,QAAA,mBAAmB,GAAG,yBAAyB,CAAC;AAChD,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAC9C,QAAA,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D,yEAAyE;AAC5D,QAAA,mBAAmB,GAAG,0BAAkB,CAAC;AACtD,yEAAyE;AAC5D,QAAA,kBAAkB,GAAG,0BAAkB,CAAC;AACrD,6FAA6F;AAChF,QAAA,kBAAkB,GAAG,uBAAe,CAAC;AAElD,MAAM,kBAAkB,GAAG;IACzB,uBAAe;IACf,8BAAsB;IACtB,2BAAmB;IACnB,2BAAmB;IACnB,0BAAkB;IAClB,0BAAkB;IAClB,0BAAkB;CACV,CAAC;AAIX,0DAA0D;AAC1D,SAAgB,yBAAyB,CAAC,CAAS,EAAE,CAAS;IAC5D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,mFAAmF;IACrF,CAAC;IACD,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED,kEAAkE;AAClE,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,sEAAsE;AACtE,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,QAAgB;IAC7C,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,OAAY,EACZ,uBAAmD;IAEnD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACtD,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,yBAAyB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CACrF,CAAC;QACF,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -15,11 +15,13 @@ export { default as HashCalculator, HashCalculator as HashCalculatorClass } from
15
15
  export * from './components/Util';
16
16
  export * from './components/Support';
17
17
  export { ProgressTracker } from './components/ProgressTracker';
18
+ export * from './merkle/MerkleRoot';
18
19
  export { EncryptionManager } from './encryption/Manager';
19
20
  export { ZipCrypto, crc32, crc32update, sha256 } from './encryption/ZipCrypto';
20
21
  export type { EncryptionMethod, EncryptionOptions, EncryptionResult, DecryptionResult, EncryptionProvider } from './encryption/types';
21
22
  export * from '../types';
22
23
  export * from './constants/Headers';
24
+ export { META_TOKEN_NZIP, META_TOKEN_NZIP_LEGACY, META_TS_SUBMIT_NZIP, META_TIMESTAMP_NZIP, META_TS_SUBMIT_OTS, META_TIMESTAMP_OTS, META_MANIFEST_JSON, asciiPathEqualsIgnoreCase, isMetaInfPath, isReservedMetaPath, findReservedMetaEntry, } from './constants/MetaPaths';
23
25
  export * from './constants/Errors';
24
26
  export * from './version';
25
27
  export { Logger, configureLoggerFromEnvironment } from './components/Logger';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,eAAe,MAAM,CAAC;AAGtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGtI,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EACV,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,eAAe,MAAM,CAAC;AAGtB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,cAAc,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGtI,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -21,7 +21,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
21
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.configureLoggerFromEnvironment = exports.Logger = exports.sha256 = exports.crc32update = exports.crc32 = exports.ZipCrypto = exports.EncryptionManager = exports.ProgressTracker = exports.HashCalculatorClass = exports.HashCalculator = exports.ZipCopy = exports.ZipCompress = void 0;
24
+ exports.configureLoggerFromEnvironment = exports.Logger = exports.findReservedMetaEntry = exports.isReservedMetaPath = exports.isMetaInfPath = exports.asciiPathEqualsIgnoreCase = exports.META_MANIFEST_JSON = exports.META_TIMESTAMP_OTS = exports.META_TS_SUBMIT_OTS = exports.META_TIMESTAMP_NZIP = exports.META_TS_SUBMIT_NZIP = exports.META_TOKEN_NZIP_LEGACY = exports.META_TOKEN_NZIP = exports.sha256 = exports.crc32update = exports.crc32 = exports.ZipCrypto = exports.EncryptionManager = exports.ProgressTracker = exports.HashCalculatorClass = exports.HashCalculator = exports.ZipCopy = exports.ZipCompress = void 0;
25
25
  // Core ZIP classes
26
26
  const Zipkit_1 = __importDefault(require("./Zipkit"));
27
27
  __exportStar(require("./Zipkit"), exports);
@@ -39,6 +39,7 @@ __exportStar(require("./components/Util"), exports);
39
39
  __exportStar(require("./components/Support"), exports);
40
40
  var ProgressTracker_1 = require("./components/ProgressTracker");
41
41
  Object.defineProperty(exports, "ProgressTracker", { enumerable: true, get: function () { return ProgressTracker_1.ProgressTracker; } });
42
+ __exportStar(require("./merkle/MerkleRoot"), exports);
42
43
  // Encryption functionality
43
44
  var Manager_1 = require("./encryption/Manager");
44
45
  Object.defineProperty(exports, "EncryptionManager", { enumerable: true, get: function () { return Manager_1.EncryptionManager; } });
@@ -50,6 +51,18 @@ Object.defineProperty(exports, "sha256", { enumerable: true, get: function () {
50
51
  // Types and constants
51
52
  __exportStar(require("../types"), exports);
52
53
  __exportStar(require("./constants/Headers"), exports);
54
+ var MetaPaths_1 = require("./constants/MetaPaths");
55
+ Object.defineProperty(exports, "META_TOKEN_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP; } });
56
+ Object.defineProperty(exports, "META_TOKEN_NZIP_LEGACY", { enumerable: true, get: function () { return MetaPaths_1.META_TOKEN_NZIP_LEGACY; } });
57
+ Object.defineProperty(exports, "META_TS_SUBMIT_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_NZIP; } });
58
+ Object.defineProperty(exports, "META_TIMESTAMP_NZIP", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_NZIP; } });
59
+ Object.defineProperty(exports, "META_TS_SUBMIT_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TS_SUBMIT_OTS; } });
60
+ Object.defineProperty(exports, "META_TIMESTAMP_OTS", { enumerable: true, get: function () { return MetaPaths_1.META_TIMESTAMP_OTS; } });
61
+ Object.defineProperty(exports, "META_MANIFEST_JSON", { enumerable: true, get: function () { return MetaPaths_1.META_MANIFEST_JSON; } });
62
+ Object.defineProperty(exports, "asciiPathEqualsIgnoreCase", { enumerable: true, get: function () { return MetaPaths_1.asciiPathEqualsIgnoreCase; } });
63
+ Object.defineProperty(exports, "isMetaInfPath", { enumerable: true, get: function () { return MetaPaths_1.isMetaInfPath; } });
64
+ Object.defineProperty(exports, "isReservedMetaPath", { enumerable: true, get: function () { return MetaPaths_1.isReservedMetaPath; } });
65
+ Object.defineProperty(exports, "findReservedMetaEntry", { enumerable: true, get: function () { return MetaPaths_1.findReservedMetaEntry; } });
53
66
  __exportStar(require("./constants/Errors"), exports);
54
67
  __exportStar(require("./version"), exports);
55
68
  // Logger utility
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,sDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAGpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAOhB,kBAAe,gBAAM,CAAC;AAEtB,oBAAoB;AACpB,8DAA+G;AAAtG,iIAAA,OAAO,OAAkB;AAAE,qHAAA,cAAc,OAAuB;AACzE,oDAAkC;AAClC,uDAAqC;AACrC,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;AAExB,2BAA2B;AAC3B,gDAAyD;AAAhD,4GAAA,iBAAiB,OAAA;AAC1B,oDAA+E;AAAtE,sGAAA,SAAS,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,mGAAA,MAAM,OAAA;AAG9C,sBAAsB;AACtB,2CAAyB;AACzB,sDAAoC;AACpC,qDAAmC;AACnC,4CAA0B;AAE1B,iBAAiB;AACjB,8CAA6E;AAApE,gGAAA,MAAM,OAAA;AAAE,wHAAA,8BAA8B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,sDAA8B;AAC9B,2CAAyB;AACzB,6CAA2B;AAC3B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAGpB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAOhB,kBAAe,gBAAM,CAAC;AAEtB,oBAAoB;AACpB,8DAA+G;AAAtG,iIAAA,OAAO,OAAkB;AAAE,qHAAA,cAAc,OAAuB;AACzE,oDAAkC;AAClC,uDAAqC;AACrC,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;AACxB,sDAAoC;AAEpC,2BAA2B;AAC3B,gDAAyD;AAAhD,4GAAA,iBAAiB,OAAA;AAC1B,oDAA+E;AAAtE,sGAAA,SAAS,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,mGAAA,MAAM,OAAA;AAG9C,sBAAsB;AACtB,2CAAyB;AACzB,sDAAoC;AACpC,mDAY+B;AAX7B,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,sHAAA,yBAAyB,OAAA;AACzB,0GAAA,aAAa,OAAA;AACb,+GAAA,kBAAkB,OAAA;AAClB,kHAAA,qBAAqB,OAAA;AAEvB,qDAAmC;AACnC,4CAA0B;AAE1B,iBAAiB;AACjB,8CAA6E;AAApE,gGAAA,MAAM,OAAA;AAAE,wHAAA,8BAA8B,OAAA"}
@@ -0,0 +1,109 @@
1
+ /** Merkle algorithms defined in NEOZIP_APPNOTE.md §6. */
2
+ export type MerkleAlgorithm = 'v0' | 'v1';
3
+ export interface MerkleContentEntry {
4
+ /** Central-directory path (UTF-8 string as stored or as known to the writer). */
5
+ path: string;
6
+ /**
7
+ * Uncompressed payload bytes (same bytes hashed into Extra Field 0x014E).
8
+ * Required for **v1** leaves when `merkleLeafV1` is absent. Optional for **v0** when `contentSha256` is set.
9
+ */
10
+ content?: Buffer | Uint8Array;
11
+ /**
12
+ * Bare SHA-256 of uncompressed payload (= Extra Field 0x014E), hex or 32-byte Buffer.
13
+ * Used as v0 leaf; for v1 this alone is **not** a leaf (see APPNOTE §6.3).
14
+ */
15
+ contentSha256?: string | Buffer;
16
+ /**
17
+ * Precomputed APPNOTE §6.3 v1 leaf: SHA-256(0x00 ‖ uncompressed_bytes), hex or 32-byte Buffer.
18
+ * Produced in the same streaming pass as `contentSha256` (create/extract via HashCalculator).
19
+ * Preferred for v1 when present — no second content read.
20
+ */
21
+ merkleLeafV1?: string | Buffer;
22
+ }
23
+ /**
24
+ * Normalize a ZIP entry path for v1 leaf ordering (APPNOTE §6.3):
25
+ * POSIX separators, strip leading `./` and `/`, Unicode NFC, UTF-8 byte order when compared.
26
+ */
27
+ export declare function normalizeMerklePath(path: string): string;
28
+ /** Bare content digest (= 0x014E value). */
29
+ export declare function contentDigest(content: Buffer | Uint8Array): Buffer;
30
+ /**
31
+ * v0 leaf: SHA-256(uncompressed bytes) — same as Extra Field 0x014E.
32
+ */
33
+ export declare function leafHashV0(contentOrDigest: Buffer | Uint8Array, isDigest?: boolean): Buffer;
34
+ /**
35
+ * v1 leaf: SHA-256(0x00 ‖ uncompressed_bytes).
36
+ * Must not be confused with the bare 0x014E digest (APPNOTE §6.3).
37
+ */
38
+ export declare function leafHashV1(content: Buffer | Uint8Array): Buffer;
39
+ /**
40
+ * Parent node hashes.
41
+ * v0: SHA-256(H_left ‖ H_right) — order preserved, no pair sorting.
42
+ * v1: SHA-256(0x01 ‖ H_left ‖ H_right).
43
+ */
44
+ export declare function parentHash(left: Buffer, right: Buffer, algorithm: MerkleAlgorithm): Buffer;
45
+ /**
46
+ * Fold an ordered list of leaf hashes into a single root (hex lowercase).
47
+ * Odd-count rule:
48
+ * - v0: duplicate last leaf (Bitcoin-style)
49
+ * - v1: promote last node unhashed (RFC 6962–style)
50
+ */
51
+ export declare function merkleRootFromLeaves(leaves: Buffer[], algorithm: MerkleAlgorithm): string | null;
52
+ /**
53
+ * Compute archive Merkle root per APPNOTE §6 from content entries
54
+ * (caller already excluded META-INF/** if desired).
55
+ *
56
+ * @returns lowercase hex root, or null if no usable leaves
57
+ */
58
+ export declare function computeArchiveMerkleRoot(entries: MerkleContentEntry[], algorithm?: MerkleAlgorithm): string | null;
59
+ /**
60
+ * Build v0 root from path + bare content digests only (0x014E extras).
61
+ * Path order: central-directory bytes as stored (no NFC / strip).
62
+ */
63
+ export declare function computeMerkleRootV0FromDigests(entries: Array<{
64
+ path: string;
65
+ sha256: string | Buffer;
66
+ }>): string | null;
67
+ /**
68
+ * Build v1 root from path + uncompressed payloads (APPNOTE §6.3).
69
+ * Paths are normalized before sorting.
70
+ */
71
+ export declare function computeMerkleRootV1FromContents(entries: Array<{
72
+ path: string;
73
+ content: Buffer | Uint8Array;
74
+ }>): string | null;
75
+ /**
76
+ * Build v1 root from path + precomputed domain-separated leaves (APPNOTE §6.3).
77
+ * Prefer this after create/extract when HashCalculator produced merkleLeafV1 in one stream pass.
78
+ */
79
+ export declare function computeMerkleRootV1FromLeaves(entries: Array<{
80
+ path: string;
81
+ merkleLeafV1: string | Buffer;
82
+ }>): string | null;
83
+ /**
84
+ * Verify a declared root (APPNOTE §6.4): try v1 first (when content or leaves available),
85
+ * then v0 digests. Returns which algorithm matched, or null on failure.
86
+ *
87
+ * When only bare 0x014E digests are available, only v0 can match APPNOTE correctly.
88
+ * Pass `merkleLeafV1` or content for full v1 verification without re-hashing from scratch
89
+ * when leaves were computed in the decompress stream.
90
+ */
91
+ export declare function matchMerkleRoot(entries: MerkleContentEntry[], declaredRoot: string): {
92
+ algorithm: MerkleAlgorithm;
93
+ security: 'high' | 'legacy';
94
+ } | null;
95
+ declare const _default: {
96
+ normalizeMerklePath: typeof normalizeMerklePath;
97
+ contentDigest: typeof contentDigest;
98
+ leafHashV0: typeof leafHashV0;
99
+ leafHashV1: typeof leafHashV1;
100
+ parentHash: typeof parentHash;
101
+ merkleRootFromLeaves: typeof merkleRootFromLeaves;
102
+ computeArchiveMerkleRoot: typeof computeArchiveMerkleRoot;
103
+ computeMerkleRootV0FromDigests: typeof computeMerkleRootV0FromDigests;
104
+ computeMerkleRootV1FromContents: typeof computeMerkleRootV1FromContents;
105
+ computeMerkleRootV1FromLeaves: typeof computeMerkleRootV1FromLeaves;
106
+ matchMerkleRoot: typeof matchMerkleRoot;
107
+ };
108
+ export default _default;
109
+ //# sourceMappingURL=MerkleRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleRoot.d.ts","sourceRoot":"","sources":["../../../src/core/merkle/MerkleRoot.ts"],"names":[],"mappings":"AAQA,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAwBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYxD;AAQD,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CA0BhG;AAsCD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,GAAE,eAAsB,GAChC,MAAM,GAAG,IAAI,CA0Bf;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,GACxD,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,GAC7D,MAAM,GAAG,IAAI,CAKf;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,GAC9D,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,YAAY,EAAE,MAAM,GACnB;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CA6BpE;;;;;;;;;;;;;;AAED,wBAYE"}