quantum-resistant-rustykey 0.13.4 → 0.13.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/quantum-resistant-rustykey)](https://www.npmjs.com/package/quantum-resistant-rustykey)
4
4
  [![docs](https://img.shields.io/badge/docs-GitHub%20Pages-1a5f4a)](https://antonymott.github.io/quantum-resistant-rustykey/)
5
- ![Node v26.5.0](https://img.shields.io/badge/node-v26.5.0-blue.svg)
5
+ ![Node v26.7.0](https://img.shields.io/badge/node-v26.7.0-blue.svg)
6
6
 
7
7
  TypeScript-first **WebAssembly post-quantum** crypto for Node and the browser — SQIsign, ML-DSA, FN-DSA, SLH-DSA, ML-KEM.
8
8
  RustyKey® is a **FIDO Alliance** member.
@@ -11,6 +11,8 @@ RustyKey® is a **FIDO Alliance** member.
11
11
  pnpm i quantum-resistant-rustykey@latest
12
12
  ```
13
13
 
14
+ TypeScript types are included (`dist/index.d.ts`) — no `@types/quantum-resistant-rustykey`.
15
+
14
16
  **Docs:** [antonymott.github.io/quantum-resistant-rustykey](https://antonymott.github.io/quantum-resistant-rustykey/)
15
17
  **Live testbed:** [pqc.rustykey.me](https://pqc.rustykey.me)
16
18
  **License:** ISC
package/dist/index.d.ts CHANGED
@@ -1,27 +1,42 @@
1
1
  //#region src/types.d.ts
2
2
  type MaybePromise<T> = T | Promise<T>;
3
+ /** Hex string, ArrayBuffer, or raw bytes — common input for signature APIs. */
4
+ type BytesLike = Uint8Array | ArrayBuffer | string;
5
+ /**
6
+ * Key material returned by signature schemes (FN-DSA, ML-DSA, SLH-DSA, SQIsign).
7
+ * Prefer awaiting `get(...)` so callers always hold concrete `Uint8Array`s.
8
+ */
3
9
  interface KeyPair {
4
- get(key: "public_key" | "private_key"): MaybePromise<any>;
10
+ get(key: "public_key" | "private_key"): MaybePromise<Uint8Array>;
11
+ }
12
+ /**
13
+ * ML-KEM keys are Web Crypto `CryptoKey` handles (raw export via `buffer_to_string`).
14
+ */
15
+ interface MlKemKeyPair {
16
+ get(key: "public_key" | "private_key"): MaybePromise<CryptoKey>;
5
17
  }
6
18
  interface EncryptResult {
7
- get(key: "cyphertext" | "secret"): MaybePromise<any>;
19
+ get(key: "cyphertext" | "secret"): MaybePromise<ArrayBuffer>;
8
20
  }
21
+ /** Shared secret material for AES-GCM helpers (KEM secret or hex). */
22
+ type SecretLike = BytesLike | ArrayBufferView;
9
23
  interface IMlKem {
10
- keypair(): KeyPair;
11
- encrypt(public_key: any): EncryptResult;
12
- decrypt(cyphertext: any, private_key: any): Promise<any>;
13
- buffer_to_string(buffer: any): MaybePromise<string>;
14
- encryptMessage(message: string, secret: any): Promise<Uint8Array>;
15
- decryptMessage(encryptedMessage: Uint8Array, secret: any): Promise<string>;
24
+ keypair(): MlKemKeyPair;
25
+ encrypt(public_key: MaybePromise<CryptoKey>): EncryptResult;
26
+ decrypt(cyphertext: MaybePromise<BufferSource>, private_key: MaybePromise<CryptoKey>): Promise<ArrayBuffer>;
27
+ buffer_to_string(buffer: MaybePromise<CryptoKey | BufferSource | string>): MaybePromise<string>;
28
+ encryptMessage(message: string, secret: MaybePromise<SecretLike>): Promise<Uint8Array>;
29
+ decryptMessage(encryptedMessage: Uint8Array, secret: MaybePromise<SecretLike>): Promise<string>;
16
30
  delete(): void;
17
31
  }
18
32
  type SqisignVariant = "lvl1" | "lvl3" | "lvl5";
19
33
  interface IFnDsa {
20
34
  keypair(): KeyPair;
21
- sign(message: Uint8Array | ArrayBuffer | string, private_key: unknown): Promise<Uint8Array>;
22
- verify(signature: Uint8Array | ArrayBuffer | string, message: Uint8Array | ArrayBuffer | string, public_key: unknown): Promise<boolean>;
23
- buffer_to_string(value: Uint8Array | ArrayBuffer | string): string;
35
+ sign(message: BytesLike, private_key: BytesLike): Promise<Uint8Array>;
36
+ verify(signature: BytesLike, message: BytesLike, public_key: BytesLike): Promise<boolean>;
37
+ buffer_to_string(value: BytesLike): string;
24
38
  }
39
+ type IMlDsa = IFnDsa;
25
40
  //#endregion
26
41
  //#region src/fndsa.d.ts
27
42
  declare function loadFnDsa512(): Promise<IFnDsa>;
@@ -31,11 +46,44 @@ declare function loadFnDsa1024(): Promise<IFnDsa>;
31
46
  declare function loadMlDsa3(): Promise<IFnDsa>;
32
47
  declare function loadMlDsa5(): Promise<IFnDsa>;
33
48
  //#endregion
49
+ //#region src/mldsa-kat.d.ts
50
+ /**
51
+ * NIST FIPS 204 ML-DSA known-answer vectors. Source: NIST ACVP-Server
52
+ * ML-DSA-sigVer-FIPS204, internal interface (externalMu=false). Verify-only.
53
+ */
54
+ /** ML-DSA-65 (loadMlDsa3), ACVP tgId 10, tcId 143. */
55
+ declare const MLDSA65_KAT_PK_HEX = "7fea36137fe011ec6bb71a1a9bb0f3a2ae2aa414133053f76c777e359d0911c1c4ef431d15a57e919ee6f13cfa579e3cf1044fa6fdc2c6b539ef9daf6ddd922349a275979912dbd2e09ea2df4c217feadf39f3e5f1fd52d97de2984af6cec388148c6eed765bdd846d2da4344f923b542005d386063d4c0f9d7f1855cadde685d701204e3ba899918fafd322a8e7840a48c7f7dcca1bfcaa19600c3d11d56451aa1e63abd9e6ae7d495243744d68e6bf24d42d9b47bef7662da9fa1681f19562f9f12e0529902502f74b44846b7ba5e261c6ea4bd97292e30a531f55de4605769124cdf8a91a47bac7f5067eefa4baa44dd1ac7526089dc1f43d5f2cf7d1a79699d2dbf40ed93f2641492c1d901bc4f40abfdad4407b7e8c8523397994dc7ab3b580256665859e523ff64143157754ebfa0c82b8f4344c5e3126d322a6ae0b6b44928de4a190b8e8087b989ea2c7f7e55f78737e22dab30fe3663ddad27ab9c611b5e5a40262418ee174a5d6fe078aa0cbae0e29c176b221302d294faa4750df45ed0c87405bdd085b36e65738099e0f4555bd1e7bd935eeebb2a5d9f0ceae357423e12ed2b2ef78c3432c04dbc0893132566e636fec6567a4910338fdc9a158dc2284233e8a90421baa2d472baa8b9d50bf0102cb7d8fd3c857b8496083cdac40b5c90a2adf637f3cd7c1959fcdb2e5305500cb7c0216b7439de009713af39b36bf1cd1bbb24c07e577b589a08b602717a5ddc456960c3b4d3e79a9a48bb8f7cbc69c0a0d2f4a728213566283f4da8d57e1d60ad64d434fb671966049fb5fe56bf087b40b9cb6857a7cdca52f8afbdf15ef7ac8e7f51b5586f7bbbfede8ba97ee68cf5943c177709d2ec308d882eee5aa0c883002e2a6923740b125c3332329c720ba06bcec3f42d5631851ea687ffd120d7446033a702a1fa9f205d7efc6a058a50afd207933ec4cfbc114942ebce5b8a5e6b6793487a0890fe56b4050711b0fa222f9d77239ad2c2a9a6546a8ce2c01b226a7ca24f1af9787a2a922d2203cc397c65a087fc835e1adce525eca8734073440a91184b9e79f5252894b5c1945ac25d56a034148bcfb27fbfd5affbc7ccd13eee2aafd1a409a376b8316cf45e4c75962d5673975202a2ad53640d3f8d7233fb6ab35cad418c962cd155895613a0be541168e2597a6033c0b95310a47ca7ca84719557ea9512c2681e796efaf228b867f444e09a6a95b2031cd1ade9bea1b161419fdfe93b5e448595853b493927acc7125d6d628a3d5b235f55a19faf38fcd45b401bbec9efd4feb08a8060dd19ff8ada993bc74d4e454a698a9ef5fd55506526bd29edd5bcdfb6c3b45f53b7606ec8562310039ef0cbcbfbe9babd1bcbe70b553aa12bcbd3e645975d7acbb6acb8b79462bac694186f017ea92f3f9076b36ef2bbecc01ef42c26336ddf48efce6e5df2def30cf8aafe62546257bf0ae65efcccd063d5992fe69f256ff615d9f19ebe667bcda1d0d13b52eb4a0f59273abc70a9c0b3d63a8eed3bcc53c1df7d522777e432c7da727461e3a58cac496bada599c41261f7f96523534530a33c40c6633ed4d9b01255bcaa6bcbe2eb94444ff092e3f91a65d2bd034beebe09480742cbd4adfd935781e76c98c3b2f57521c8ca16a0e8f060378a4a4e09b65e6d211a4646c80e0f9deffa6ce4f7baac44bc0210573a5f0b9fc33d0aeea8018b79e3b2ee69cfabc24737a62886c26e93a0ec7b8700af1057681517ce40f0e260b4874419584f5d186ab54ba61378b4caebde6bbfc05b2e0c26e735067979782ef9d229e96260d474093da512c2883f824915192b00ee7750bab99fdce3b4acd8bb0164f6df8d96a4ad16ee661e5a79a3af7cf529549c1f8fbff487d37972f8f5beb1646fc05795bccbe88cbfd1aa20f1b00bf52902c087ea0717a8b41720ccab213c673e6c0397b5f1f415c63a044e4f44511e2395efd3bbe170c82e9941502dd29c43d0ca1d7b23280a065d68e0be0c9f847530854216fd31d55c41d8aa82d74f5ab24d602f37a3f8debd91089073e8aef6d724e55bdcca2b495cd3e3c0dbeefd4d9683493e3fb226a7382653bffce3141681ffef4da7a887e9e7424dbcd99e9e3d9ee26e287827c91c71be229829df663c09401a8b7a55a532a587b0b738addf65d8ad257d0a59cfeec908a772492dcb479850f8cb46e310e2ef2e726b322d4c03e31c83e1090040e9a2cafb82ebea1ff78f847d86e5e3c57d9f51c767cba91daef335fa718f1e0684d20b62a9b47eb0ea50118fba7e266549a08a20e6f8b8a2faa8786bfa49669afe91d12001dd7137f77ec19a12574ddda4e416cd08a42f8dcf77a1ea2155148b5336594258b7ea8555c1a1fbd2cdf2d84fe73968b48528d352080bd031c01a61512802abfcb7332f445da5e84d4890d3235d8aed85a2511742ccf482661ac4ad5ac8956d96784bca2752ebe255dd7f9b16765638dde36bd2948d21dc228d8c668897d68a097e83eccaaa7eebf4ed9262d151e2e374f5edb0e540a27582a9a84a891c641679a74558b405cdb3c525462f0946b2f35f09d49329a34860a7299e278506f8602bf2711845b7f4094dd99fb92abb123682331c3bae71c65b47631740b786ef1a67e8cdb85b62fc548d27ddd9bd3468436700d2cbaa68c52ff0d9e762082e9fca851924ed19deae071938fcd3da6b7746f2f803450100de667225d3ddcc3730ea5e129e9e2cea81373d5ae89b1e3800507765af8061e";
56
+ declare const MLDSA65_KAT_MSG_HEX = "561e787bb0fe38247f609db3e95c4310f03335d31425461fe153c262a758df48e43709b848310e04ba2d184ed795048447326d2a430fa560d7c1adbf03f35297af7448ede08b425e5d78e2b9861ee08f12c556f9ef8fbd2d25ea448b906c7c9de79e6db72417499e2b5db9003ccb4b1c4d3d2b7f913a361d2c6d042a296ebb17791f84d13a2ecc3e45e73326acea9b2a156efa4b83f5bd6c70a8e6f1558f865f8365ead7f5608a4789ae754ea6a6c5125f5ab9afce3f7c63f77932c47656ecbb36dacc71fcfa84ce1ec88bff59b4e6a26c5c47424abc3950d7e7d1792fa81015aecf028d49326fa69c036c0890534ac9f2616d866b9b8a396716a36ca020d28ad01c53a47dd903dae3b2ddd4f5a1677a5372990132e131027380664d0c52597ad861aaf7ce9e3c8c629f689d9dfdb9ce63afbefa9aaaec7a142242b96666794b4f7bd2af70ca2a126c34ab1e5c4624b63accb3859da9f5aa111ac2f9b0a8c10ebec4e3c1b4f49b16355ca39055fd95d61bf3622775380f333d86a30ce1606e10c5011cf11c3fa99df428beaddc3331b426a3591eb8860fdbb500015e918f3ff3097fc386b2bc7a74121bad8413c5333ee4349c205477908887cead97b4bcb8a1add1720f7115e9c2c4ae96480f97a96397b51a4931ecc57c8f349b9b7f3f22a964bc1cbd28cbf3ff7ecd0d19f31fbd236a2cd6d7651c5ec98e9bdb64146890d2c78a68cdba14906e8c80668fb654176b99b0040f11ea33cc8ad6d1b8397f7fe55cc36e0b8a57d46e3be7c199e9e8a0605414e4944ded953696f3248f83cc564e194f7756b56b7f7d4551fca621cac0ae65558490cd9834d41a23770ad519c0388ee363a99706b5d9a4b12d82c1b0590dfefaa84404e5317df90f5d6b44242f72d4be577ad7bea80e998975fe162ee3778ebb2f048b94f6e65d3a6840144f621ab043b0a528e8c82dfe33d9fbcb8fb7614f71baa63fe0b584647f63a0eca7417284408dce9032e948626ee440195a65c0da55e756c2e65b3e1140d811312b9ce374f256315092b736c87c8d9a1ec6c53d9194cb898bb665da72dd614769b1c5f0090307df98f755a6de730c27c1cd1c728842c3f61ba6e77bd1ee28a53995aad5a34e683a394e7f548be72f723236c89a839add1486693e713d402d184be08e0ee63f5e89689f0d655649605a1725bcff067385c8a4901401d8d1d946b3d69deb424798ee35ce0e086281a49b6b17421786e1eee9cbd0557e2e935877a770e7fbe4cb725a3c43e0f55c5198f90e4295314881b69bd282b6b4a1d43216c46b59fb7bb3dd01488b993d7cc16c8285f75360aa1ce3016b62aec2ccbae5d6805cb6c8d31df161a33f4d2b8322fd8045836e87abb3727a342d196c15814096b61c5f7a41b105f47efe131c97172f84cec3430d509cf2e0d6f87ad9117060b65ce543b2a6cc448990bf239d934972af062bdc75389d7bf9ce0646863b96b3a29ba76609c635b0ab387babcc95c0e61d7eb570c512fb5ec3ef09e857787d053c8bb95e7a66f06477f0ef7196616a03b65dbe0340d33f5cfa21cdfa2baca09baa120c36997744db82f643046ff57f90e93595f713271748c253d5be42725bbaf55e6616f254384b55d12b571b01afcfe0106d866795f91128fe8ad2c399adad4e5f061ec560a157bbfc8d0c383f474d259858f020a919fb7c2c7693abf447e3de6397634fd46838008e308091763d9e9236c60a7c8c11e6c255f22e98a1e5ec7d1f8376ded983eba3d47c318fdb516f5b0f3590e0c40262da763cd3c00c0d7dbfbf5ce3e699aec7c7a7cf7feeeb5dff28b33ba61fa5abd9026a0f8da14b9373546b1decdb7a2397b554368c9e05ccea03dd1e538061e8ddac375d0930631cfd336e84bad561dd4707bb08088258115f7340f0bd48c7e2d826f34db8c12a52bd5cb8e4b064402af49b671a623a0ed0faf01e33832179b6181ee9fa005578ae211d42175352017ea7c31136ffdf01c121f4a3316f4b7000740c36b2e3e7ee06d266f963fc30c49d218e7ff321edc34ed1cce2ef5b4b151b813e4718ef230c27b73224c22dd28e03e3ff7c8567f23ebb2425d5ef0ea639f62927358a33a89c9d13e7e560a8e774a6bcf09595413e43b7c97ac08bc01f0e9d93cdaaa2794af47894bec3aba90835e5b1960f1d43ccc3d4c9afd52820305bd7928f68decd263ccb0ed86105130d669fa2e0bc1cf7a12dfcab77c8b5160251f5c3d7b810a8d8c66eb206be70c86f4b9264ec2a71251fae4a9f11b79395eed2cc4929755fa0cb8ccd52e23ba5ebcc0d620b5ea4e9ce9a1e383658db34a51851edacaa3dd5d257f009d5f90c4458e4a37b465dace6dc7e7687ff47b691d561c65f2793898f4853bfb744816745211d80ece9b1966c78788135398629910e358a3d3e2e62d8d08d2ddcc9245e5db4af0d28d8c4c6609e048d896b5a1c752f89dba3de1bf42f4658b1af1135710502ed9056fc591aead86959335da831813d3e113a2a614a44060981f3af9ec9f838ea329ddc59b441c306042960fb38c74c604edb2da9f0348a6cb0b09adef0dd92b92e95707de28b193ee41a95d4b1b6b91bd29f7b5cb16680a21abee5cd7fa7209afe11b1f2e31f00ca37de0f71d6a42b957e1986117790cbdf88539de256501df38c6c79dc4c373559b1f3ed7d4509f5b7a03c1e9c9bad0677edfd2a1878b1bd245b557acc5ccbd29cb622be7d08b9ddb26c1593147579490638d6a71ed4ec7b6f70f53623bb61cd34509415e4b43f4e951cfe04f3202e1a9278352e2aff2230cc0672bc564efab07108b342900bc13c6700a74105b882e22d4c851d6cd2d6e7922420a6f0a64e3d5d03bd75025b671796a20100e7b555edad6363a58c58b42e7eb69df82258df68008ff65ba52f4590f211752101549e301c43fecf0e4fcd545f63a548eb59280cc3025586e57230ac3371f559ac139123fe89524a64a26b5615dccdd6db7801e76b223593789db96e8d63727aa5e2312d3980c1ed41932ef896cd239fe1be0fa5eb9a3cdd41cba4bf7693de929a0123397baf95ea1eed82a700765f1c5d30026cf60c7bc91cacdcce6bdfdbc33b2e6ef5ea80cfe42b05b26764588a1d9a0f9f515719c109f70eb94b93c0f0d155e6ff8a93f92cfc825a85b71572d8d5f7708f5bb030aa3ab902ef167d513eb0bcc8da3c2e828e296a508202547a0be625379cd271ac992f232e0d2223964d045cda322159fd0d944200074a60cd68c62413adcb569a8beee9333a3b17d129729be3cfbd412ff9d202f26cfc9b83635d6924f34d08e8e82c97735052d01087affca3cec42bd2eb1760b5b43ec622623a860a4c9e80261669a7fa8f2d465a88b631331efebdea67b6c274731e528f2727a197ad58c7b8e31aa28bae9289ae8bd4d406cded4904d1336313566440b8f5558d18dcd22e5dbdfe2167028f1ecac919d8b4d747e5b4407d6adcb684b70481a51bcc5d52c86488ac4eb3a289813b1019980d68c25d1022eb6ba436b7090bb2c4f184cb2ee4612641763558089fab21a093bf9069c87329e6fa41b4eea5fee1a6bb4235a2dca3d92877313587f61d2c2092dcb6ebb26e062626a7d1bd8a9e73abbc4e25cccbb47d49ab42d7cf994f8eccfe3e8c18aa9ef5e10e01565aec846b4f01cfd785ea2b5f1ff56089a74f15277d02be41f5ed747b93d40ff72bd473aa34e927e4c1cd908b40347a8d2532c9f1062c2bcd97b95576e590a415756b939a8286bb70401c54a8cf55fa4a635a0b38e98463be6ef631f05a6801157660e03b7fdee7316ab2766aeb99c3c8aaafdee6a61a7555a713786ab82623b6863f41931da5fa4241b2525fda0bd1e660e9167e1e8755b8f3fee07a2028e4bd125075bc7f24b1c02efd6efbd26953878d98939ce33507fcfcc1b8cf662940b0ae25c92e935e7ff486fab426845179accd46a361d992e3db7f081bfe1938bbe224f34d4c1521ce30fa6c2ec611870518c0d107210b64a3fb72df50618f7961b5c0c5ad896a3a7dd567afc67c8e55bacf6aab787aed7ba8d17cb78693f636dfc0e8bc1bcb566fc3394bf49cb4361fb3f97246976e394972dc9104f82e73c8c90463fc9b414f2c16021ab2c35f5739d675e5fa5cc03a42bc84fe6bf86d71ddeb0f54f4ee0c9499f3ce07d2b1f6ce71478a716a0b5ed71ef8510830db43fb1dd4cca892d09ec347dff15933df3394c5b4daaef48a46a994a12593b253738b4d02e60646bc824bf57efbb0b5f379448b035ca36790fd03da1264151c9442438fa74cac23bf972258413ef18d21bcf9b64127f496033399af09c5dddedb8d337089d172ec2f86b3f7f3a79a29ad0da0ef43f0a9c7b2cc611939dca9728f15ffdc689f9bc1ab3ca6ebefa663644dd28bb3386df3db699b0f25931d29d571a29e570be8fc38c1d85d36cb1363c1f1f43762b21b152d6c0bc464d75c99087372fe5268555885343dcf4d9b60e62e00e6812c269c4870f507ac646d31769026f897b14163a873215efefa8b0b34196f32964decc0010b243fb611c979e433375b59cf7a556196346eed27a76cb0ac1876dd5265adeb7fc81207a2fadde10e86a5673cb74d8f4d85fbfbd83fc91d2be2b1eeaa886bd99e97111d0aa2e69230472cf1c498925d072166bd3e4c8390e51ca9898c0d293b776affce1554b1b34239485bd0ae3ad56b3efcd4c3e3449e662671bb5529cc78a3fd9ffe6dfe9c03f529a082eae9b756d8ffb25985cc3817696dcdb257a6dde3bc3345870512d51e9781a0fbfaad0b33d8c861330c88abe885a411421d338495259b2ff61d901f3a32bfe130b4bdbc7aafeae5dc3b027fec296218254d07de78b255b9b628bb1ebea49d358c74d44a9dca5e4afbac37eadf5258b13b4fc4d8684b5505ff5b86d9fae6921326e1d144da9d67ea257029ceb754143d01b50451b8c4175db8afe805b483ba257bee3ff38f5a6740a17c9c7fa90eb4e8603a5db50b0e0265d5609e41de0966c1f0d3dd6c3c75775f6a1060ba29ecbe57f1c60e1b45aaf8585b7c6807b9d1500136c66c6765a5af6f55a35f04675de23e6857132f0a9d885d3a4312ebe4cd02ca14c7170b2b26ae04f518b9cd07339c6d684cd4bb9c65c84ed2988e14aaa4870e70673703cb4a8b3c13af94d2ec5af5c857bd906cdb73314ccae256b663c2b48aeba528fcfbf42bf9b9b02fcdb19331284ef1d75f2f73b4996433f7f64344ed427d46661d8343ba2f1dc0df900c957fc2d999fa500532d152c3ab3fb52348b998403b6331560ac24841dc9200c57744a4e91a3efcdd2d7ee178bc28458bfb0bafc0a507513968dd1796d77e8314490eebf0cbb12ef77a3e488d9d9a33225820c05fa749d463356f9a4936761b760b7f12ef4b9dacbb6b560a796b86a903264e0cf3f48f945bfe378d786d994e84b8b314479d5a716414b4ef3ba4d29ac3e808e385fbd42920c7af4abc01c0705a92af4c054a910b0ad407c71eaf5b0b48f38f38ddf4e13305b95ed9a964456cdcd29f97b01b8e5220e5d8672fd9e37ea059ae016e9c43f92a5f68949db2f1e23b36a1012efc64f7f5fed520ee0b936d4dfb8b9b4680a37dd4cd9414128450f506c672c247307a2cf4f582111a17c7be737a18eda8f8a8adf9e832a92958ec780fef38b6c907e866e93393ef2e9c660677bd6cfffc60e43f7c3cc92f97636088e5b0ad801e3e7be079144e8c3825eac218c90d8ae0d228bd6f56f445e7627a37c0cc15185f7ed084474dd1251d54967182b191119b2154fac90dffeec2c32e4b396be1ce966c74a9dba8ab35ccf2ca6f45b70916adb4a3a19aab84d328ab2cf3829e17e7c3db298bc73fc63fc3eea64ee02899efb6b1e95153a4a9bff73ce9a1e86e237340ab97dfa7bfc79705f746446b7c10124d1561a61157925bbad04b8fd6cc360a3212caf03ae7041858fba8e600649043cbc06e1e7856850b9bd1c6acd71f93aedd46a8fcc0dbd2bb34dafd97622e2c817c23af6a7a1451da0e8acc0ca338f255930b152ce50d667b2ae933c931939668de6ae5ca7526b9f3738e092656fca467a42e2bf8970aeb61ed24903308c46917b1230848a09683be03ac37d16f549fba1d3b8e9aab478ce6b28560f8e4bda0ab5f787af6b6c2a332c8d64024f19ee74e1d74f0a870c88f2b1abf0a44c94c9443d1296f56a2bc2f0ee4fe633a73a6a6bdc92945780171d4cfcf1db2e6d087312c11b3ca985bb17862edf21944975f48cda6daccfa78a5f79cc1ca081b1f1d00fd43fa99bc734c979524be1ef80d9699d738d203d0857426ab6f3ee5f2479c210cea26da3136819fa9aa516e9f5067daa6bd4fb74029ea241e2cd03d13f641e7935d6f5fe83c5727f0132dbaaa93537bac52db342e2f7f7b4a0f17885d71b2d665fb02f2cc142d82f17ee7bfa5343436b42eaec6cda7e395503c7315be49a6d7d3d2efdec907aa5b18a9db12c4cfb7be25d6d1044885a954dacbfa776f462bcd90ac8f5df2590c8632f64c76fbbd604ab3e25cea163684622fe237d68edd52651fd7cf251a6aa181c0e83acce8d83711a18854c1ab4ba460d1a9c893dacd6e6dc3344f32cf02d307a40835bb97560bf77612a3fc4a15996f099e27ed724589f5a3d223f4d0ad2445859ed745baaefef9973ad964c3113fe7281fe0f34759a67b4def69954fa3314f77670e8afcc28ee9916e4618c0d7e50c67729701fc9bad9429d30848989068de52993ca81ea759bf21dc8ff4edcf4f55370126b88184e8b3102d325682afc6216334e80f2d1d0e8e2a1886e54fbdc25b2a8af85eb1cc123aa869c62d3584d8a7c2deb2af2b79e03060d78494bf911dd65b67db5b57890016e413890d4d6f66aead45776d941dc305e54fe8b1e2f74e3177139c9b3386ed394b46cdee7fc57f4989668c0dc394e9f8030ee144c24b5cb10108d3cdb8ef1539533a017e15c714c794aafd3fa94f3a4ae0558b48bf40734dc5e2b5948d14f387a5355dfedfca4d8f57a18536992294b79d60e1ac77ba6fb038e14862566c681ae197613e07d8abc10102032ef1ac2f0d450c00f62ed51e067364d68b8b4f925ad076e3c92fdac49e570f8196c1e2150f6dd4b2e9c73990c4619118cb7602d18398c41106bb9de2f8f5c82fbf9a7f978b304d8e5dd32b1fe27d9e6611d2ba6686cf1c16596e455cfc318614e61b0e63c8a2ea85dd89a0a0ae1d804c1799137e0aae4acdfe483a76b62a18fd73da3d62c9b6002550c415d19c1a5e93e4fb86142ffaee247dd71ac8c83b4af25a3dbb0db165479eae4378f9d3c8a4181002b1001c723b2fe7eec71154af68c8bde89941336f9696fca2876a29d61345e86f77310408dbf47eee7c47fb434035ada1cfe60e8d888833b508f766b91e6336c35495e4166a8dcfa8cebbf7ca4c049aed24473a49093d055c476e95aa9c4daa74114848db23d2e90a3017ca8de57b249ea20206c9d7480b9d7107e85397ffbf9949dd4570a23df02a10119115da766430c22da95be6f45157b9eb1813fcf91bc22ca50349ace6cb4c5eedbd289fc4888a1be54db3c1ec3f4c26f1576e894f18cd3a31da63007f160fe16b48254077491059a16314c756f3060904c9c2f6adb7a713fea0e8d5e22c7ffa140ab4f34851efb44e1c40f62bcbdb1aaf452cfe1124ec203c6e9167fe5f76e25a4093320db64f30c7d31b99d7e3818f07e634580ed93aa83cc2aa9782b78869b518daac5be301e49e3bd84bcc29e2e605131e86c82bfa34edef150e9bed6ca01fe7c2bac987a3266dfd84090e279752d14584ee57a85177d2a333ff096ee22244e673637bb32b8a02752e1aa3ccd820ee1e7d7d10b086934b3d6df511a69b9c1727d5e64886714ec2959fde3b9db53f9945a6a50afa4a1accbceaed01ee1fa1546ab7590c716695c487775bca534f352b6fe33147f006cf81e257af1b35d53af069318bd2e0af7d76ed9511c9ccfc246b0522d729100b86f58a3abbeedd8359984027c677bb3b4d460d415376fc59bb9d458c9e8f6e7b1730a9460e2ef68ab8410b0d2287996af7a3b146a4283c2f3c9868b17895c465a563af60e1b2deff8db16a8fa538f1244fbe2162f414dec7918bf9ec2d833b22d0b14514ace9281806a55a83efcdba35859635b3b79416eb785c4a0acbe5a5e734595d606e77bb8472d9f60bff5723dc95c5d1d26a6f7c2d11b38b676e9af2fdb15ada13a950fa56699f2334c1289f04c3b8a4bde256410e6c06b068cd2424950db8339f5be7943a83b428ac7ee934c21c598c9230ffb5e4f935fa3e8b7d0a924ca11df6ebbb5d4f4bd5bd983b3b4467453be6d8b671372aae1f5ab937e00f404c64e8c25079fe03324204672a640353ef311e9abe57f634646d70eabe90924f3ce7fd3e8f339864d6a530aca69c981f091849c92f4c2849a277f6e9ded5a862efaa03c2830c6c39fb4ee7e6a099ac5a574ebf66f381f940a9814bfc6c93b2be8bd04552f6ef6dc87f3d4b298dd2caee73627d9094333335fcfab1f1d5ec76467775b86a8720bdd4de539a26b7f63b5b7221e8e2da2a33443bcd72b4c34b1c1a630220c82d3c105c4557bac7786e036faf753cf206d949973de6a7987c022b991b1394ba65ead0ae13efbc23c2712be265efb7efe4382df8bd85b3feeb244c017b7c39a350695e6664212a34d1061df1e592bcc904a71554b7e523c45135d03e248d2adf62107522b8bb96fa8ce4dde04a0534bc62708ea55c9cb4c68b1622fa1cb719afe767f6194f1e39934c72f16cabaedb7430edf53d3c1147592ac440f24fe36d7d50898f257964a957adcbb7a3f5df8acc0871de89356938778c6f7ef876e75e0416e64b367be3e50e762aa67588d4c9a9bcb7d9ade883649cc00a095f73208254404078be894783e21fc60c9906f88195cef118f83c9f458ea5d47effc605d483c4ad6e0a6a979ad5b0164d2d110a713e0acf6447a34601ae4be256241c33f86cf31ea377378c653339bc3e3e4d9071fcf89a32bf72c8a26724a596cfcad491ee549bbd82066ad93c8fd61045ae2653e2b221f8ad224d07b1a1aae210c8f4094902ec65a172231df148550d7979431206b65fc4d41e93dbb93c30a6245b22929c508989c02d094276f61641fe0744e147ce3d335b9059d38bad92abb49914078a5414be5b8be144e9bb552ef11f894ce8e5403863ace6b00ee515a172f2fdcc24076087532dc78807a1df414168b8a14e049eb266380feadb68eb2214e8e6c8fd9796a9c0d7518798a6717396c218fa08298958bbfa63bbb1215fa4b45f2e781576045a62c0cbd85d5aadc9f4c10b3b0ca0824261fb3e01f1f96a8cb0aee1456f6534a2fd259a8a6ceb53fafc54b41cad105396a49dde49190180fd4b37c4b054a91da9ddb94b603627e03f45580271f6b5c4745e36ee8c0e125c4985d1b14c2a9852fec6abd17185b2cc932aed5c754a06cefc84ef49a7a8e354ae2bd11203ba";
57
+ declare const MLDSA65_KAT_SIG_HEX = "2c4c3c23c89a466392721a4c9bec8ef0b0e4c34c370ff12ab5ca83786b23c9e55daeabb482f5af4f198b3e868d099a62750d58e81490da8a4ba59242fa9050fe5a815c56c79c593bf4ce3365a17c4d54d25984d82027404ed68bb3b549f949f0979a0c0de5b45f2a32403f9e3290fe3abd673fa1ca822a9507d4a902d7318b4080c5f844decf432244369237bdf05131d77b24561043aced81974f78d476773049ac12eed2ad370e27bcf85a64fbb21d532c89ef56fed0c94e96b3b91d55b96c90a000942c685ef3c52eeb4c173824a40f525280c9104b85e5c9639839104516135fedf1604aac1838134d3def8981e71fcd5052b3db407b80f103c824e4493a7f93f62fada397570ecb2b70424bdf1fce57cebdda1fd2b330a242e83993f4ce3b6c9b472a8204dad89ddea318088cf0314cd58fa3bd5bacd69402d70a51b7321d261d922d3065be4469db01676bc5bff6e2f11e3e979e97e0e18457e2310e6b16ebf27fc292f3edfcbb6dd8acfcbad52932b21f0998b72b1688a46c7d4af6d608465dd8015f2f979b55e728b37c8e2a470367d739e6dda609cd8c2f627ce798a3b37f61cc60a095310834aaa8a3d581aa7f7c75b4c7d598fd5240218c2bdfaee9decd64b1eeaed1149c188981f3a016796ba5b22724c996361a647dfb56a2d96d815d4bcef98cfed608c6c4cf411c679c95d1af383bb17e0de7bce5dc411fe7130763585f150e9a298b70996f353aa4330f12349cf31030cd00d2373ad51843ecb9674a4e29fdf70277b5753e99048b0ed85c3acbd2d0c99be2ec28d125d437b2f6055620c676d1dc37525d3545e08508e6cf26886d2a65efac797c2dac5c5567740cfd27f96c896813c40223652c44cabe024e3929b6baa4fddef92e7cb8252ba1720cb908a4df1d8871dd06eeaa4ceed07c3d52355b6ec62f0089ab044c3e4f1b9a75fbd8c715b766e8a7e43d7860663f10cda853d6114d7428d76041e2a685a3350494b35279bf86942cae6610dadb0a0367112fc4e2db9137e22e49024d7590e6c94b79f8daf82ce53222bd32031290d8ac9033dd81ad677711904a0625cd1d0e4aedc86b14e529d375ce0d98440191d83f6e04ada9f7a125cd0f52b0517ba4b0fce4b232895e747cfe5846b9463d7ec38527411271a5bfa0cc5c6b1d318cb5d3f0e9279218e7e9ef885db5238a494c95e851d483cc1fa3e2d75021bc24ef5ccfb6d1d143a16b2589ec002cb69190d255c473155e88d0623965f3b1132a7935dc52d9416d1b9c15d067a7c4b7457f523962c0f6af5dab9f95c23987e5fb41926cfb7aa0fa4fa9fc2e25c5767067f33e7bb6e95b8a2a6d8274767df52306345d1a4878e650fcfb14bb46f12d5ef420d5e4894b3aa1843a5c9d721a2d3139874bf12105a613698cda5f98079fd776f4aa77066917b5b928c23db49a8b9c4e4af5e6f3e43362e6fade02bf2c22fae43d5d8b5a18f455cc06daadd81554d26e53122a1063fa9aef8cc1149a85fbff7a6a2bcd44f0ef594944d845946baeb7e26412976497836d10dff592cc118e3823e49e4ee2e376f6cf12a7c67f4797a377038d6922a0318c17e6f15e9ba93f5c4eb2b987493d8348491a1736f21c32415218dae9e0799263c183933f2260e19eaef7daf32773a4e43c3a25286dd2a8b456923aa5c4f53f2443525949b000c390a3ed290cff2bf511b0b6c6d8a159a6990e808b513cd33a51e3ca75025c98907dc9b512f538572872cc46a1b040ab1669665ea0ef666bebb5d92665ed0b7ab26b4d9b5ccd56a33277069c4897b4e54bc3cf974c084f06c2d736fb046b4bb3a5ec18bd35fbb3a12f55e7c7ffdb73be7a591c41db4006404cfddeaba99d5176a4c6a34f51ebe12d48678546e17f8ad0d39ebbd372eae005b5d7e6a9ebc6618b1cfef187b8fb6e189279bf98d63c3099665f03bacf10f989e8817805a0d46320fbfc05bfa33be25f187ab8d27f1f7f7ac2cbf64f850e14e97ba9a9009e0e6422e140dd18a31c0f151ab2c8c8aa391e3160f2bba2ddd4ddeb6273927d6c5d5e43a7c7210a9acaa6b6c012d764ed04d9d36bc1011e65f7518c797aea6c855d429f25a450f4d0c181df925d5237368b42c4c2d1cfc1f0783be7bd612962d5ee3f66c23bb61198c4c34111de4f4a5a2ff8ba741303a82eedcacbf8a886edd968d895d0fda0011580b41fce877aaf4daae363b3f8e63cc54ec92b5dac530eda259b2d8da1590173f99f36bd285809e87c94faecf7334ba62df348f215fff8d123cbe01cf0105e4e0027b242c2f6712d44bbfa9224d3450fe507de7c976ee1cebebeadced46f62be0f52d5f0062833eae9f27c2b9c9da3c54a772074237499bf80115a91f8a50e3fe7b4839ccced3091675b75b7987b6bfbdc5021c24cc87a0276e594f62fe70607a428965c9c84a9b60c153df1e7e50bdc320c40641af3cbd9496a1d3431928ff3f02a64b3c0ef2ff84d9a6c6eea8561060567ded7582ed34a1a9362cd892bb7ee44d2dd3dbafed26810654327a85687543ff7b6cd7e15f2d5c989cd5db8caa84dd1a6b7ef18c01c2356d5bb16c1836ec5fcdad10042072f20332b771747bfd0ebdb1383a59c86a323e5209d2ad7fb1d962d07f0a81879da3475f6a40a26454520131b71eb7b5ab63e25fbfdaba125cbfdc0b51c0ce5384dcf686499d670cab5e868bdd56232885ff6d37d90b8020f42fbeaf1f8bc0e47f54f5b720524db8acf8331a09d5fa1c4948cd7ef137bc42332be27b2c20a62da377a67af9eaa44c5874a0dc6544d1b1580c6c8bcea70a547cf6ed62b22cb068549c20c47ea6ed0d2361b50698130f56a8a5dd05a48942bf86e9b690e22ffc58c3d56afd5e00f1c3c22ae048cf91a266548f9cf5c4832d00ef68b03ec5218c459461c2035cd96b3eb0f3eb049406f11ca1b91ab3f3c456adccc4c6d26d7665823336d2109fdb21192e5ab8fa67f6cf773f01d645e8d463d9e4f53303ad7faef14b0713da4b61c937f914e5ba936369d040ae0aaae0b5cfdd5b9c222dda0b3d3cad3b9101a561503b806c742b5117b47b9e47d634754d7fd7515a0593167eca617d3a421bec41439813b4cd1c4f4019e300774712dd967df2e43c4ce6ced8e798e3871edc45434e08f6997baa8929c5c8649556fbe010380ad3c2675f65c9d5996b22df1abfdbf943bdd5d47f3c3d21c112003265df3dae4dc5a06d915e1e0216a56aeee123c4991cdbefc3f7e613781f543fcbc21432d671e5ff56d5280549081b2d81dfad817e84a42d0e106eaa14ffea8f553b68f6951c06a251d81c6e78fb2ee73169b89a2bb10ccd197f9ea43fbe02af27fea5c9af9b0669ef0ef8cc53ba0d819d1cea8e4ddb7e5092ef2b23fe1b3560efb2058b67c4fa37d0c2a2d793fb202898605febc0afc769784fcb07d5febdd65f606ce2b2c8f9ac88f097fe390f6f4489a10d69deaccfa27991489f95178b9bd095791b1086316b3c53b7f0bbb33940c7594870e3df157580532bcadfa08132fd195a03ec92b522237703cb80c374ce750c6aa34fba98637905fb3e38fa9bec9d087fcd159ffc9b5625e74c7a0e1f6f88d502967a66981df54aab141ffbdf596c04c303ba5ebe911765d4e18a23da57f05d89fabe73487f63712c36f357759e2637ad3a7715d5174153185bd976712a56026a57a7dad1681219589612294a12849c3714ea03599cdaadda9279f9bb1162b4289087666e53ec6baaa0ac2ec95757a0d6ef8c2c60113a24d687bb8ba01b4b6a414ec9ba77b1c9dcdd07234d75f4085a24f85ca5c7f83000d074dce4237ad78503c2facc936e4cae978ce818e36063cf5b4943055f1f5ecaae9c29db4f3425566d9c08ab18bc4aabbf14e92bfabba92b4cc737ee354c26ecae043933067ad95bcbf638912f0d90a8ea4f1664b4e56a0abbfe0d8be128e31374f9e4d0d40cc41f34b3d75144cd4407cda256f883ba9a0fa3b2da3bca546b3e9f7c9c8d8fc1c5463bd332817cf7b4dfe28e192bb6fbbcb4a1b2ec3dabd7b089c7b13f30a9c89225670e18aa75c6ba6c9092913704ae266feae0f7e11739bbcb8a0ac86da8123244d2bac6a23dd78c15393523a876966ae039a3d778d3ebbb70c6fab611ca3e35a915a6eac65e4101bd465f6b6aa6e93a744722e17ed6401210610fb8004e4c52ab39567cd2c7a484d408c349d16948086d9ef9c0221e34ae8dc1381bcaf735a73637286d1a217a655b38e3a980d7b336190aa5a8bb1f98a9ac77f2a74b1eb64e1b625f75cd50db5b771ae60d36b302cc886ebe0575e5150eb8224d57ae8600710fe387729619d42a90cc5806688b882be90460e81193b14655147b6868eadf16a618961c3f67c24f38d9036c4d295fb5f05521c9b7b41f49f35ea60bb1ece89b26493ddfe0770c7fd041aa0d5af0cc293b010e83b9d0743a77aaeb12b482c6ece91bf2b95d1a8e8cbce5179eef8594ab5565a08a65b1fd9bca739e6f344fe1526411b5471ec070ebddda2e6a131d62ac7c1cabeace3cc9d382b1c657aef5915877647a67392e7f15fd8b9c49b29bd74ee55caf7032a117d1509372d8d26789169d59f0c5af8002f5164a6de6cd10c17235868be3f656b842162d5e227518da4cc0000000000000000000000000000000000000000000000000000000006080e12161b";
58
+ /** ML-DSA-87 (loadMlDsa5), ACVP tgId 12, tcId 168. */
59
+ declare const MLDSA87_KAT_PK_HEX = "6690ec64441501ca68d249f8d9975a99a48d3a01aaa25ab05067eddec67f775335cbabbb50b2df07ac3dcc725eace972add2336a8b51c9d3e32b3d8982dcf18ca3589fe26f77db26adb41b68680302df73e52907759c95736c19024bea27ae40653f8c83e203a2b9c8b986d257b628b04ab416d8495ee51a77a4f466c14fcef55e9587344c650c06a09661fd53a28696ed6fbcb3e057e0e38f615ebfd31effdc5b9710306c6514ef1088601c0f01779437f80254a664042f28b3a50a79b683c2c8bd379b18cd48353ae55525c65b3b929dd8958214cb7246fbd20393a913859e7100a43b2f669717c1eda1806ea7a622ee15f4818e84d07106ed6ad9e28398ca3ee0038e1b63d1add9be898fbba0fc11ab1c733e1e9e9e8c59cb9d035bcd4d3660f2504391d0cb21826d9457da30158e1ed2b18a5b4e722d59031c94f60b4074f1a6dbbf4f35860ebefb8cf6ec7a8d3d525e0a93be401b6ede7137cadb926915030514d549af3d1808332c5f234984160f36d17897401e14b88bc0e2afd4ef2346ccba91bc25eb5c5604961e9bb13f88d1236623d2b30a2b02dea0836b580123dab98561856a1a30784850454bdf49c840f2c0a9b7d3a992320bca7afb30313eaf0359658202d5da1d26f87747749a4c13e287b3e99e192c3de6bd7395971da7ec3c35821d4c0edd415e57dc29a663d3417c31a4a42206798e1bd90411262dfdd2ab6379dcac53b65305ca24c94ce974f926639c81ea918bb6b296e29fe078b2b9f3f668a8a8820152bdb64d0ebc690fdedf159a13a64eacfba532318caf72c27f4c4c2a31f13afe0490e4e0b9a9369e8748cb8e0ba4f45a31010ca455fe8e7ade0f7bbbf8f8af461ffde71be8ad70577907a6a1ce97f0445405fcde191024787bce2607b4990029b739ab1524db9e0c88b395f8b694561444363fd276c11b52521842f035de2bde568a02f3a7139af4ce130f5ace7b489832d6e6dc8a69da9983c82a11ac9e9fe7af243961638bbf474a2b52f72b68343b3060b3286745058049918ec6f32b47fcd84e8ff328b90fa9805bbbe2ff67f5c01d5004768245e8d27d46617d3c37c8957960221cfd242236307fb4095e5528c817396a518e1217e62e9fcdcc04f18fd49ce676817c1d5e58a101ff5dc9bd90fe6420b02d81d35d9ff907bc4df9c07205aa66949bf8a0527637ccc1b6626b2b0d529749d9e53dd11c2711e583d344598e60974035df779893b93d3c032e469058602907fecbd4995ac0d5a46a15502b01fc0a8cc53e75c5bc9d6784dc2795b919867a74ddb1408e7d1ea4e1512fa74fee9e44c107e542f47c402e816bb24680d8f43c2bd1f4414b90e06120b8fc3406a34a97abf47d8fa9b7195b125c301a4522237ba1ec051da843e29953a16f23a2a4579815b0f3767eb0ad80d1500922d635281f3bd57a9655e1bcc72c56621caca75d7c0d61e19b9b25218c9503844382e2a37c18cfe82ec507fd03fafe36b4e0f91445596099e7f766f641830a9341ee39da2716559724fabb143951c7b5025a8fed8c562d1d7fba13059d63695ef860c6ea373d96477c1e874f1e0089e4a5a3aefa3ae8ef0d8f8a27a4e87f836d4a33ba3363c6b69a7ae1beed010c80a678b9bead57614d124d640d0ea630f1ad1d829e02209692505e3717ccaeeef94b2735fc40807c3a3c78bec8a764bafa177000fe832a3586d11481ba2ee6ac164854e14399ce370427c17b1d91acdce89376152c1deffa62abc73f28f7533d02d86c03d8c735f1dca3d6a64cebb991b4a48b97c2512b2798b04722bfc8b416ff25b25abb292d7a5a59393cb8678dafe75a7ed6249ff311dc73e37c92a2780ee06d6ae441a87283452805026c15d04e2d3466b3271e92ee99932d64f9e645bf4a45166060c43448579d13952afab58bd0016c7a6bd05d74f9f86f764a8f888124d1ec3af9915b0fbbc98c1b66832912d463e26214dc355b204403a12dc881f214d05dd261bd6217605723d239a8c84742bf0e285c53e78633024a900af8d37c4c134cff49ff579572f70c4e2628fc6b676f6da0f107246cd25b07d07d187e54e0835722856c7a504b951ddda0b2c997a4ae7291a35831f55c8e24419b773b31e5ceb8b3157f9d837ffcc9cece0fee48021f74ce83bdd9f0d0b524644f4223aa3aba1d0653cbab8d05d760ac1887556b28c297a2e5e46a54e53e9bc826edebbf32cfd0df1aa6cad522bcd7328b5e85f03446e8dc0bd13a994cd35b4a0a250ed92fb14dd3971da6560420c5963393b445c47d9a23b01c4863fd4f6dc15d83afe2b3bbbdaff053b4d64e593d0de1dee79a00a4e671d18585683ccf515bc046fdb02f2dd5726215ce10b21f989cb7d3d54f586c8536b9be1e85f3cd4b99e979b4d30e47f8ea3047c43e9294f2e6aeda83ecd8de200d27fd140159ec1ff28d6624b71a04a38e6c058f48f323850224aa53908f600fac20493692ee68f97c0362830917ff1d3a2623d2f47a48495766c1bf04567efc5ccfee6e3eada0d44ec37a8d73c41831e8e925ddde83f37c8d4c80f2e6f744fea7532a555429aecf7427996a776f232a87c034ee511a3f07baf91b876dfb58cd73df0d2b28f829979501351bce3e3e1f895e9197c7db068d86edd48b2d0af848fba335d3afbbbbd9be6bc86d7be89ea23ed0fda010185a065ee5e4bf77b9c791990b61f7606682bb3b6dfab6c6463f8dee55576197b066bdf0e69dbc0cbf1924a1dddecf06eb176fc48ecdf1b5a3f642815c14fe6d5d714b05a273965cbc39f6763770802e9da3d7040367ab0c9ff82d7f0169afd4f17e0832c9cde7de46267ca9416d6bbc51f36e551a38a743ca95490f0e8c59d5b6948ca7a99d11fc70b7bab0c3d72c1157726b804b8cc2a96f863f9fccc71f83e0d0469d476427e1d8e8251bff9204e5c971948147b7d48a386772ecb82113cbb05530c7ca15ea5fe38481fb4a93e2b8f412d3b598e6e8b05b1949e92d3ddc8657c05dbc53fd67698226ec1e6bf816ae89531040fa52c2788b36e20900c6ef5e4e315f20c4598a334ddd01bae825259efcfdeb670c99e8df3eae5e52a85a826760dc4b86025c48a847f1806884fa7f37ee8bfc105c757159d1d51cad9a14390ecbf07f201f44adf0176dc5e477299f66f10801f23cccd690ff0b9b79f7691da940387414ab50d2d33fa8daa565a3ed464a710bef141cdd52976354de589eda547fbe851f37199e2b738bc70087f5d3eb2772417e47ad1b5332ea62410786d318ad4a5f76aba68c9ea40a3ded3868f477b96b4031013aba4c12365d8171f96fda5c27732c38fe4931fe5e1b37a8144be7827bb66cc097b7c2a952844c5c6a0e9d3491635aa8f330e5ebb3ae6b5a02cb70bbcbb36406c9b953bacdfeee47b3d40340618516dbf83f36503a0fd2a3b21ed96d36809c3c6bff1c09add11928c49f088c8ee8b2edf69d19e4742e766a1c3600407f5b1ec30757d65040499b013f20b5ab45c81d92772a4cc46dde40b6a2b9563b369b5033441dd7f02a0c067bcea188e30bbaf335fe6a7d2b21c80fad7dd3e04848087ae5e6546ff7c74c703adef7f189a54287040eb4b493967b105dd2b75331061e2cc69872b492070bda7b36de1b159271a20a3d87daa51707c60ba8221135c820318d";
60
+ declare const MLDSA87_KAT_MSG_HEX = "fa42ec123aa8d3b231a2811c893254af71bdf4d9a6907ae22ca7a603f83f6a2f0154c003b4cdcdb18d331fd6fb7a66240ee1a52a4dcc36bb46a1e0085961e650797c96f057629116e841a6dd4bc1840cafff64df8fe3ac9844186545e3b5f233116b977f87162472c0350ef9657bd3ace7c4bd4b94f7bc10fc1e067bd5514bf63a0b581f6d6cd16c4bf9d74bf4a8b64b933b972fab2c3f698a04ec5882706c978002a21bc667e77ff36978d4614615e97688eb42e9ccf9dc261f8755ecc4d5c4cd389209912dd47f7d81fba50966891259d81d583439d0130c34489ae76500ee0e823aeb596fc193e1207cbadf06106fb96ebaedb3e4460724ec7853c0b59ffa3bdbab1ad5438114c5d03c7b41f5ff85870950875f3cc9ba9c0f2eda8387641e9cbeafdf8b987809f51a297d9ee31752c6fcda25d33cb8ebbb37b34d4d762fef4ddb5f5947c682622e23c3172884f1505d7b51b276b2f9fb17f7a60dfba72db8325102903375ce17af51d7cd37cfe26145aef57a2f61414f6b93ce15de31b406f1fae70ae636fe52f68014b801658ee60c843fb0ad1fb3195ce8c632c7c498c30ad932c6b5eee6845ea29ae37b9d3832c696d976f4bedf24c19df9ccba5df590648f563997547ce6fb336e8d4374b655b48190bd54fd526013ca1b32d5e1b7cd2fdd5832f3ecb456532e73471ff3eedccfcead722b246ebcc149264babd0156f7a8d803251862462f4bbe1c3b914aa3a16c603ea51325baf0fa9b8184fa81135f12d5bc92d05a3d2b9ffa586d47e667a6275f4bd06079dd657ad37f559de619a42b541208e0caf0a8309f2ee08b25d479f12f6b04254eb334ee9d5dd0f27dcacedae3931c5058c59263711f13aebbf2d8a461c358a4f487be706261a65d64194fa2cdac8dfe78ebb4781008bcfd23974043bb351bcd7d8c777181953c1d4da26c2e0c47360c4683e97d80c6317c0940059e7ee3ffd0475bfa03a8c4826269354e4174b63d3935cf37bb1553196790204603f795428be3e0e439807bcb7e4efed09a2dc19c4f440d33b17fe3b13b957a7f6432c16139df7c13110581466970a79ec68eaed21f9488d568cf21f7f6f1f9cac6d54c15ddc55f490fe130c8296602e377dab325503154b058af2699288bf441ddaaac7c641f7979a40f137444d1749f684a83fb33c7757341a035574f0358235585a9adf56b2dfbd5e6ecc5b4a6508e06759c70bf49c77758a1d7820b4f6090d4d81aa56f7b04f4bb33350b3ece25292240a6bf942cfb602b19290a6fd92f1ae22b83d9cf82cead25309daab9e28071ac376b3a5a52bc58a1ea283e282a3558edfefdcf3fd1608d7b01025085ad5a5347412495320d09dfeac3ab201049be278123580445d7c2d0cc9d476432a72c5d1a4887d651b67c36033396f2a22d2ab26534f7a1fa649bcf27864bbe431d1381b65d5d4b0c236c88c54278d1a6ea57184b8a714638e2aa678383f9ce4f41887c053ded0945763ce68b208494dc1f5321449affcb9928cfa356a2b13909f7b959e744f0fa0b9ba34b460a6ef885f11a34cd03b5f8ab7fc0f637f8a4f8c182f0fa291a95e6541024fa839b3b5a1ef79bfb9b82cc0ae1e2647d3b450a309636e681648df011fca5c7890ea7db0ffd0c4b32293b2fa8046578293c828c1b9933926eab28666a39c536bb2ac0606a0b910fc750a36438a581b9dae839d72350e2596f01e6a0fcc39be59d73c539be30605313b5ed0df292a4454c252a061f52aa80648e90ca5ea4b5a45e9606dceadddef4ee5939dde156e80fdc3555b267fa8b9440b0079d255eac4d83ce54daa2708aa1d791f0aae6fb307c1bc6190af23972b370a95d757fa686eef410c911c303c5f54047fbeabdfc4dae358733bc3d906e5ce027de7865dae9c37cbe97349975f35f82569b509652db4f21b340696a039d8b556287c653584beb98824d894b6f5185e0adcfdb2bb3bf77ee31c0b1b68245ba47d293fafbe40d4231c70445dab980e26506ebbfcde55de95d83ba509a7da2acd81842cc51c68cdc6d8db0799d1cfba8926b2f592f1dd29a9ee5c178c06acfe230a162c652135d94500add907ffcdf2efc7acb6a6fe34e3aeea4dfaf5aece73b1e20767c3bf8135dd58f3c6d58b13f7e952c55a795ee12b71daece757123239c782641af7b644b52226158729a5be9ad2a50c27e795f616fdfe1d0774a35bf2e01d6c9326e69df679adef6f75de298fe2608bb305125633168a0194acbd6211968a665235a0fb5e58113a3ec80ca1fe92cac5d6b5f17d466fa1332144f508b4ebb87c16ddbb59a73741a58258c6d54aac4689b4724dca12a0440e8f48329ffd9492049e574d451c7f372480041e8a7d307c54e4f39c46ef56d46423d7d9df5cc1aaa0e24405c6002b7d51b83d21e60567e668278f61a7347448a31d4d7099d0f062a1eb23f16499a3e3469bd0bb37faf1b29371aacfbe6295c3d4a89e6ae371192273751bd8b7fb5712f74dc43df849f0428831e2b2f264d7bcc4daecbbab9b310ad9c904283d7ae376239c33961f5a9dc0634a05147cf2eb789d59529a717baf2be4e3989609548d8d465fa4dedc751617755e365bc615ee715f0e7cca082ad5c87b100c3571131f9aa5cc2a6b644b861a245bc547442a3bf0190aa928ef335a71ca092963903a723aa67a850206077b09376cfd629ba0d1a4739c6fe44dc5152bcf3072df54bd8622bd60e815cfaf8d88eef7ed045e29a23ce97d20175c309b8e9055b193906a0024705c8c3dddba2293b4cc14e853a68080c4024a54e2f77e499ec5d0f143415403df41abdfaa663f33d1030fdb7a39536146f4d5e56ee0661b3c36a41deef497c3a78e22a608c77599e7b8344813ba7f42e2bfe5da05fc9202e7b3a71f0027ec064b2295f97c36212ccfdae100e24dcee356a444dafae2e53c889fdc29f44474c9b91796e29ed5e6279ae0bceb381ba2c4dc9b6474f0a51de10434cf635dbb0c8bc51a1b8512ab7fba18358018c4ea7158033ae400d039e3d49ca98d1d90ff5d1af881d5aa74a5ffc19c34add47aba8b92516062bad5040d9bc48f2b126d1befc50afad24f7dc2b966f5ba05ddd5a764c7bbfb397fc56714cad1526c2d0cf47ca112827bde82468d8ae02822eacfdeee30bd3706e9bd024885d855960a4d998e17a4d5bcc3d821ffc1e4f6820deced20675dbac69a0b2177cf4654008108728162350fd7ef454ceb83d1120b34d18ed9d9d69e7dcefcc4267cc5020fc3a5d0d4ef2b539cc6c6f605da88c25e329d3cd15517a552dc62acb6d2d59de64b2673463044a871a2e4f17e287bdf7ab296fc1aab4e3636ec0019989cf680b8451f81b90374f42eb8e71f8b4e9152f6fa48ac538ee306cde076bb24736158c27040107b71dac35ee98afdb11b17ada7258df9f5b9f1f8569bf294c6d3deb9b5993ba3fc397883f43d65448639a1c0743d8f022d16f2fd133c4af4f4ce01c42d113653db8cea3628ba10e7b70434a08fe762c7970bcbecec172fe670a13d05251c49bbd931a8d704260ef802df154222bb9532d326e176cd10848363ef5d37b213c6cc47575b251a36ee788298fc709b92d5ced8f018ece990133556c20ef29f9190ff50b0d5f8896e22ec12ca07e045da4672e1fdc84313167c1d50e5933c2300438a79424be104b7cca1332b0365ad631aeaff31f3e21b0a429b91dab055105617162fb54460c445a3d5e0e44d55b20ef7003ba3923a17723fbea31027a88cac868080b574a564568e926c0a555bc8e5abb9823d0296d798cba45aa9b653d80fe0363f153a5ec77a3e3e3a6ad3e31799675a63ffb76ce3c696bb133c1fa294c8fc3fed6cf4303f0eb83aaae65c6d54dfe0794c4b1bd44fcda334457a6d80b4e82496d727c2f713b4a57ed3073a86fadc3580bdd38bb85fd467b06408e4e58d8c41e56c574a89609d4dd7047aa8b67e073c2a5ffa0df6cd91ed22b12395618ca9f97cbdb88e3707957bcaca584a4df618d3f969708f8709ff9dfb8e521fdc6818304ec89fcf5101a59bef8217f66b8c7c74d1fffd79bdf8c11c8d0a8fdda284fee1c0c4d6c96bead3f6e22d8749258da88a6bf4a4da49d8f525910bb924f788c976cb3c831317e86975d94651b21e5327472f87656bfbc91e44d7eeb1d45fac3d34e0a59c4dd5d712d15fa0a3681dcd1343df19d135bca91c678a58eb29b9c8157dae6e7f3296076100bc22141831a89dc2176b9d752aeca35fd8335536d8cff374b8d410ba8f2baf7d8ffb215f08f49bdf8fc3f8ad3dce52bf290f5d4585f0fcde811d0dcc882c861018da447cabcc6e3579da27d4ad7592c6a199e6163cc758d378cd2b772a14b9b698a622cf94f3580f259a0dddc475acad9538e142e21eb73ba9d87004db94d087b7eb4a5a2227fe82dbc834f30301ace8d2070cfb9b71a1e20044f6927633d7598d10df705d7eb4a1337db38300b77fa06be638b3ed5e98965ba7d8d6c931ff8e4c35ab82a217ce0abafa593408fd8ad91bc0c475c2248e389382882c896e9b8cb1bb818a909b61305cfad77c972c18e4d4624565beb049cdc03b1e03482a059277f06020e15e3b602582260cf24f74b185d0578e01127c11dc62e9cbfb86b38206cacc0bde9eb42cf046783ac22630a907198afbad0b5c43fb3ebf958a2ca69dbde83223f87ccb10cb059a5d55784f9bf874f8a223706b38edc488a9ae7f318ba3ceb312c2291effbbae6b18444a0883e86e15bcb74a6b70fbf44c177c87be371ddfa75efc380a0e30afec8fe1662d3adc04316cb74f6b4b2caf4acc374eafa83d4d7e7284e48719dacc0b2396972045c084652b2ffb849c522c428451e4db3bd3822601abeebf412f60683bebbd776e339bb1138a822b644f2a604326b7794208f7e00e0554e17197f0ae5a5fd4c7b26f683ccb27e332b3902c568d605732debbc70fb370e7d67067d8f6bd36bc91a5b7c19a5896350a18aa50f6dcc4484a8eade416f0797f730ac0d20032fbdd0387091ad5abe5e0c3d2b88932e4f29742670bf29a3a439ac08d6c80385907c3a1dd34e87306af5681481f5a8b390ce08af92c08f69dba386f7d2185016729e22c43c33fc47d906e6f01905572b217e1136de7613b3407651cf86504751f57119d910ca31b1f4d725b683cfd02d631d58297a55979c77439e6df5f11efecd6abfe932ba4879a79b8c66028b06dee447b0a55f14ccb56a5c936943d94d714d38418a9eb47523c2a73e370b01e90aacd24743725c370ee54eada7ee0b20d5c28777fb95a3a12b8b23018623b2041804816474af1008b523e73e4fdff056c43d51e90f19ed9c1146e6537b115af6138e7da834df6e37ab9681d931c4f811eeae12e119c59295acb633d2e6cb9f470d18f337e1eef4e72e7bbe91af9a425529dd1f1a58580f16c66f8729b68ca35a283163741a21ef0db87b3918ec58f533effa6f9a25c778609d0d69d0ecad5257949afaa4ce224f896744d1c0c89c24203073d708e437f522d631a669bb56429a4c01b5008925b7b70343d21aea5ea2437715272f379e69599b83da75e952dd495fcc2f7adf9b4567a31ea74d9180a6a0b79fbc889f92566b7c949bde9d5ad5aa9163ab910f59d333adc6c19df9d5ee375267d0bf0d6eacfb6d2ec4b2dee32e64aca1237fb80918885ec9f74c9db38a41576ac1bbcf725bb4e353aa17e221fda5035f51841745a2141390315923805f0736b6e4cc9821c3fe254ac55a2d2c1880132accfccac0f83c3759dd837080ffa8bdc7340ab210cfc04c1c451f71d97df113a1ea23391cde7ab196dd57f2100a7a5a3733ab2d3c31fd4df609993bb9c314b1dfa38afb59eff1625136e41e1dc655a570c944fe3fc0c73cd58d190e30dbf88afb75b875bffb238c21daedf36ed2cb1f17da07a25e002788193af68d7c234d4f3a52e0d8e56d7f887b92fe5758d067dc0a85217e1b32edec4e9dd32f73af2f203236d3d6bed5a4495822d53bec7625fc5a7a3c9b437f760e399fbe89b6c7ab50deeadd8eccc246472074fd9141178c0d2799e72f0ffe1b0fb5a098f51cc4be45b4164368734d8641993c895e7f3baed294db4e750d5f77225350cc5313ef83b9c37cccffea10d8660ef48e77106e6081f3bcd4a07e81b281163d895bb3954627b3a9bcefcda28f797bbd06bfe08d5fecac8fe85a074753805c8a92799a442305b46f04704b1d11ec06ebe7d2120f1ba8b713afd6aafa86c82a07fcdf8e9665539f18cefc3616f05c6683549e0f8d98596a110fffa7b22e835b3a874b69786f6b89e75faa5875c9c7034798c98de202b1436647fdf1ef4aeec32761ffde0393ff5cd280023edbbfa21f01dee290f1aacd3a654f0d77cc4e09f98e861817d8c8e22a39cb38bf3d169263bfca4fe9346d593f89c8a6f5ce29280b3f4f557e1361d941c8270e4aea46f30c44cba0f4594938d4042b89a21aaa51381612f63022d73f50be99327d415d6b037ac1902f613e2e357f785542c287eafa944fa8455a7dcdd4eb0222777eb85c597e4c39f5a4f577be6850bdf0bc2a52d110b1259db6e95fb4b74514d8ec86862d79117d2568fbabc9dd5f2eba32852a0fdb1f0e04d5c56aeb71a2e150cf551d970ae085d62a3df01eb60b5321c4c157a895d42e0a2d810dfef79753590a61d53080f38b9a3dbfd409192b95e3c45282d4fbfbb294859e8a867ab3960e47094a4bff278457a653a44878b3a8a81788b28d95aa6244bdc458054b21edd2085cccc1d3ad6c76e0287f6e406068eda3d5a868959e5b03db1df95b9e647015b1e4b8d1a14c8dbfe1482bf0ae3d62a72ff669cb47afc6b12e6e0e616d4dbf0c192d9bb31788d40da0e0085c5f8971d97f56a94d7099435d97c06a755a2eafe9947b7a2016e20dd933ea548b0d6e8188e358900d375387934da295155217f8056b05bad11265320f63e0a1083c81003cd5cc9d42241aff5f5c9c8548f161c9e4e2910c0d9b674580aac42836b2e42fd2fb86872bfcda967713563857e5dcd38c2753ec6c640bc35ce89a2cca9212b594f46b25c4fde148defd70095eb42e1ac78eba596879143e215b750d35a983e72cb4fc85f0a4523670cc6580922d1ed1e5dfd64e793f6a817a6bda17346205347e12367d9613ea9dcd3388d30a9e99fb72a97f4aedf1f9532282a9eb422f6a099f601f3c28817b651ab44072829d1424471c36ae6b94949d4e5eff017905521da61b601ec2e117a947dadf729f47a2219422e0943d1014ff8ee21d303ac34ffa26dfca24beb84727b063ce7094137f6b8f39c4b8ff88ed70302ec70a08c81d065b73960eb3215b68dbd01d2a90552e45ec25f857c99b6dccee8d561a112307cd9e5ed5b2696b9187819e546d45dbfd9638e82d0095ab552125ff6a54b8dd07303d52f69deb573e19369df32ecc93bc58d21ee71853452084ecb1099774c81574cd20f0f224dfa510008045b63041e23f96ef1cce51c4613e551b6d90773ea97c442370bed34337fedd48ecb47375a05a4180d61e4459a83defd4456cce8258ed44c93bd09c33c06d0d61280a024102aa883c12d02bfe4570041ce293b035500542ff05862028866450f20c99d9bc4ac26805a22e97abec4a5f5bf92298115f19fb01b65d137aa02a5aaa7c083894cc0d3f8ab50f5f5b16f94c18f0c042d11edcfa452ea5b98a5d1d04f179aea52863501c4bf3a6ee596f29a76fd76087b51bc4591130abe4e8492321a368be74be69237988756ea567fe2af1138df2ad7eb07dbfee5d1e4bece891aa990eec84504d356284ef4822cbb2a63f7c88cd89e3cc308fed1ec1e3dba868d0a83a581e2da779e117e679bf406acea040e9f445b949d4f12d0a3bda3e4d58fe9e888d9a62f71970ce86c3c8cd5d9a18e8f03124a7076935c4cb0547284877dbaf371cda73b7a0721e9b4d227f99bc22515422b618f835bb5301421379381c0ba93362798feb6d0ba64a2cdcb2cc4706de7e7f3454211f01b09cb5e0c356cc3b77ffeeb6a08aa0c08876d72809e64818f2056a3573840b97fa030420bbf5827d7226b30ad5491c38b3e2b85fb90914b4cd61e645c43e622afac3ffccc354b340d680311e9b157ae85b2e73d5bef65bf9cfc7856f36590da3455e105021676727c877560502d48c42d12caec1e1b7890b1421242a8c7bb83c8533f327684c04f9f0558d3801601af3f211eafe9582e74875789c2661578d45af67652dd87e54bc1b3454c8fffe73b057858219c167a3fa51cb95cd08203e552e8d3685106279742bbc56398d39041b35a4469fbcabc2e5fc858051e28078717de2020419b9549e253eb5944d908fe21d884d7091ac472081403e7500aea2d15093ca0d2b21937314e83bf3dc54262afa90f09551c90537ff2d35ad2c6986613291f863bb8a831e1daf39a6e4364db6fd6aee970fe57349078597ae3fb1124e8f203a2a0b2385d927f07ad5021ccd86cb756e3eb805816cbc03974163ab0e98744bb3a1cd192c5b99969c81422f4c9ec6fb594e49869a42c1f733378f2f7fc471ccf45ebb847214b3b7c552484363ef3b1670d37f8055689a7f364f2dd0035ee8e4c4b60e77b547dec8ceaeef34b1f8365117928e68b94672f2d660dc40ed7256a4870a3b9a3042a8ff4c38c6d85b70d002900b526a037fef00504eca5e471af185774aa581fac66c69fc91d8a846c331a0cf136bef07ddff2c8c3660acbca59114d11dab9d11af15fbea5a48029c7b46b0eb8703d83fd29322e7b72110c256c4349475238d842d27c2eb9bb1aaf0d6e3bd4732f380ea2589f4ab2fba39620197ac0538d970388de3df07edfdb9d74e5291f0931259f2c97d6de56c1b77fc2fb0e95588e94378d450698ce65a67937f60c6a7b66922eaed34ee8c425498f770c5525591393804fa5859c5fd3727b809b049f512e8c182168a9ec0ee4dc13e2666c41e026153c955d99077fb39657bf5dcda1382bf5e34d364c6e4f28dde9ad0450f62b32d94d3c3cca4612da4f6dd6f915eccd8918325c9773";
61
+ declare const MLDSA87_KAT_SIG_HEX = "85cb1db5334f679d21f457df559241826480bc25668b6e5f1e878344807efd487b87e9857291271ba7271368fe42be6b3c362d4c48956712e38ec470f0e7296b27da3df0734fd506dbf01cb53cfd471448341176006a82d166c324c798bc7a92e2d135f1c9cf63c06964926dc43199bb5ab20705f9cbf0fe28a62b41e51651ba6429ce70a8ece844a3828d160ab90900be47a3756cef50ee6fa32c3d9303cfeb4f4e6c21d28833daf8bce21e018d466a8bc2cefa1d0bb743aef781d082e84c1ca7e7e560fa85999de8bc77433eef62b14675886697aa28cd760ebc434ffe8f717a2d4f395df97a6ced984cf065e9815fe41887a22b346c993ad877f2b601b1c4c65ba40b5dca82fba407d853fd99a0767289a4c192b81beed1685223938bef86b2a37aba62aa95d24b1aa65c539a1694bf6b8957b5ccc4aa3b508278e2a5bc8dedcbdc07b944997d03fcc8bfbeaebcfef14dcaaf064fab84c953f43e3f6263d53cdf448d1602fe2f596fe0f5654c7eba92aaaa4bdaa01f6bdf968b3bbf288156c33701aaf020af7b9dec04018212434c7b3ad425d70fa7d42c0456da45efd45e4b7f9d539ef223c6efcbe830fc15116e45ded86a8ae4d9c685443bbaa3acd5e7a02ce23057a644b09c076e70d84b3a91621fb7e398f572cc4c16a2355397a921591b6e628a212e709c67ab974e5719b6872d71325be3a012497bade25735ffdc81c02210969013dbe567ffe589f8d3ce77d2f7c01d50285ced55c4a8a3123b26813f41c0d7aeb527721590371e2a5bc3fd0773fb32dddb8f5d79a9c104d18539661b23dd4ede4d68034cd3a589659fb99e4d20063e89ca6d6933ad9bb2742956fd7ba3d5cb488b9ab3d8bf5676e01eab97c27f65e73e18142727bc50dd48a67ff0205d78a8b502e63734a7db7600eb15b18c5a8559477a13c34f8f3453ea04da442e23feb0fc0cb22996d6723067c3c18c50927c1c70c6a08624cc5124a2bac4c4a74f05bdfc61cdd3b89b16ba6de963feeb73b0dc50f3831db63d7fb252577f65c4c49d4fc5761ef386e03e0fbcfb7704b418b82b88f52d745b4dad3824c584eabc8c15c0bf415ccbd09eba6e7d8eee0d18d6306fa35652b7e3d7078249e47419be7436bf0b2c020735dcfb836828e054b4058d54f671e1f514193d9ac81a5f9c4955e7db5fd7323abea3bda1beff6e3484c6e64741389101d240b317981a516e9aabd2d8ba9f4df343914236b542f4fda5acce26f455a63dbe8f327f26414206835d6d331a7bfb79a75ac40a7920ceb5e7982117f1d15a1b1d0d61546f4d6c6a010976059627facc17d115ff75de0b28572abfaff3f325d1104cbed0115469d2e1a87093a738797f7ad53badb87e5c72143d69f139758ca17c995e8eac91aca06b72832595109f506714986a624fd1f2779d3716742e402b9d800d6c4e6dc97caee2f5e92094aa2d80e483d1d629058e60e4bfc9ee4056af36598dca2f84cc727157b0649109ba77a32e4dcd2a1092714363833278c96d95248f8567bd2acd0447c93f9dbcd75e06cea722ddc881a1cdf327b33e75718f9c14a6c44d8d69a39f7e2714923d29198db619e907a5a2b36e0bef83824063120f70851ebbd132fc6c8d090f735fa3762f607b96158ce3c70b1e97251f3361e02e0d4f02d4a3762c0b11af01736f9c1c47c88b350e9a6185c737cd8c25391b72c4b6832482341c3442feb55fae56994172ef2630e0efe11f2e2bd718f2c92427be2cd3f0ebabd78b762d39df48c057217ab83c451cb0cc96521eb7ef9d9ae72904b316a79eedd0e255f8f24eb00747f00847a237451d6afbb40e812dbf53524802539f953279f619ba95d27f420893f60b761fcb3dfc6da4dbedfbd9bbfacc70c55ea18ff2ede9bcb862d15c47dbc69af3f9582b7f9c68ad3a686b1ca28fac0e38c203431ebf5aa36d2905d7ecf3d4b7278599c9151f6b6fc7697c2a47fb0ea6b2c080a53beb1d337811dd68f207b14ba2bb3318a1167426f61ec540f16dfe287232ecc2cc721eef09f8e4b7cc654d675353b531ae61eb5db41fa4905ba97b88d263781061d6d5f8ecb67e97d4de4f1027eb6b0282bcc8343e203fe0c498d322995bff395faf70cea62a596cbaa540f421e5f3f97bec687584bd86e0bea5ada6aefcec73dee9258a54de1f6e2eea8b54483142f3d4d5e81db8370eb1fb80fd7aeaf51ebf2b50233b2feb31e1e62b588c25ba5dd71bbf4a503a3a1510340972d92c2273dcfc0539b49b0119e969c5beabf15ef3e5d39eecc0f39158703e7b6a1301069921c2dae9c10ee0ccad51d46251602c120c24fb3e394d7b7c03ee681630a146c8679d82a224a5bae9a648fbc45d0c7278bc1cf0e136fe48f24b8d239531e64706bf96696a4414c4ca4ff17e2746dd86dd1aa443e929e0841d7325b74da6d7c316352b0584a1076829f0cf0b1e0b7a6f8bf64c272896783c7a832fc2200f480bfeabc1c72c532834443157adc292222195ab63e7c5a73d46d93f553d5d1986e54579670dc3c20cdfde434f1567cd500cc00697ee92242d66092c882c337392a3a07ba255bcc31620494b7163429aebf7cff039c7f37c989fd0445ad532fc58fe930d77ce864195aadfda21b8fdc6aa7561b294420f944a5a915212b50a83e8c4505d5056642be5cd83fd5d8a7e69bab2b4c1f2774729beb7092aeafc9d261176186c83e768c2ad834d3aca0396ef66f6f0ae8f87dc3cb1dae8ba48e3e20bc5b5fca2aabe375ea124583e83cd9052d450e3c4020302753169417ab72eab0b5453592ebffb546586d0b69b149df08b9bda9ddb41e030c8dbb5bbe28b802a3c721bbde9653ad9169126b43107bdf873159c4b99b29c182ee71c83a8fb8e4acd6626941751c8357f297fb346f3641926750e93ccb8d9e6190ec737291ea405f35d906fdb688bff43ce91b52fdd687d004753a557dc4077843d9e263bb2b66f41506a0444eb59baa8759b117d4f284b672218c9209b929227aed906543130321d5c461600974f8705b2ddf7ddd8267944a3c21566becef4840f167b6196716089701d913705f3898210eb562ab54de1e49e1854880948ff2eb29e12c8b609153c345d5344ed77d0ee8fc5f2fc43409d5151e8982b9a9530e55bdec846c1504f2ab380a74cfc5117aaa3203f5ff042a1b2078d86a0f55f1f29513a7f2a206e91449204390d0dc708aa48d40031ec82ac501d5d45b2c61b57530c4dc8cbfa09fe6d3a444529742143848b2f62b02a45020faba5b0a18f437559fdfb18dfdaf1cd938e9b93f0b999e056a6e23cb93c08e8241340f75180acecdfc0b3be4275a056228fec4ddd6557e60285248a8ded0407db339dba867823576c5cfd2708e3ea3abdf360cb11f05ae85e288990935d65ad19e9d84d6248ac5fb036db300dbc7e6df91f46bf206693cf5889f508c571d0182b048cfae1a23a6d2a52a8b15f676f9f45d35cdfb72f5ac33961b8347c91d3bfac4631f60077d8cf3b183c68e41846e22099ffc1c13ab44143a7985937e2f470d48243aacc18e931a373b2636d955fe822500a07221d59543149fd6271de5de78b68a14f9428812181c275ca4b9b7943a9256335befa0396991f99887a9d190ea73db8219f30b743909378470684700458326fd40ed08d935d41544f880ef0003acb5c8ae1a20301d5ec255c590850761b10b123b9291f4896c7d4a5abc6f9dd9129f20c9fd125f96ea948698c5b90ee4e8a687e05fb94647677794d70f80f3809dffa1033f6d9703e0bf6c998186eadcbe1b6c4b051eb3f0aa567c08dcbeac93dae446673a65730b9fd3b40d93c3c526e8a74dcebb054e20d73420175795814725692c908caf1a658e4f19f77ba7cd5f4d9d81cb3d96522e0d843627ea19f738f118012d869fe557078a71d9663df761e4b9bc829d38fe0eda8206613d795da3db6eaafbd89071829d7a04402cb13d2e80a0aafb722181feacc6ecdf6847c087743eb1ef135be48c1e7c07402403594d66b75cf72aafdb09f143c19966b171eaccc20fbf1a6a9e36cc0cddb3e4e4caeb720b22fdf73f78bfff687a90124030a9c0b7f03071e959128b4383f03b085025de4ebfc277ce7ebd8040d45f614c2189d1f518a1fa1f780d4ab7b12ca7dd0cbe2d91aa029d75342b81cd09ccc693ccff7ef85b4a2dae13962b20102b5db99f34184ef1575253b400d7b914dbe5ddb91c8b10bd3d320967fb883a67d6641e089dc8dcd67e62d74bd9d90a37e210bce6c96b1fd51319f1626cdfd39a7dfb86fa894ec186c637c4b09714a32f6d3e347e57a537fa06b5c56a85e2783863bf442d963e0719ff75d2689a3cd505add9356680e6d873e9efbceb383cfbf05953fc7b04c5d0c765dc0411719ce7be4bccd5340824044c06b939211d5662ee6840447d10d9280f4e09b505d0d961db95a9ab253ebddb9478532672eff7b198fb4f8a050ce40bac13cfc016d6d1f35a24ab2d3285a4d6d679c295a78ac8fe4343faace82a8067420d62e879226f855c3551c0a1e4bcc686c34339d1a791fadd6688e673bfcc7915b59fafc430ac92f9674ce9309817c283ebe7fb6564f6a599676e8f8c15732772325ddc1f4f94732a9b6e85bb5ff61137bc3c3f51ddfe02192a57d0698bb9dd73bc412e751afa8993e3dda18ac538f4fc78bc73cf515244f5e68dbe0c9ef6a454efe083619b9afcb365abb9ff8059bad5cabaae15771620fe01b566114735bfd7cff8c68899f5c48fff3446b259467b1ec722336fc144d9b104db46070a1f910b925d3d17f4fa9f0ef2ab678457fa89e98e778071391e245437d0f4f367dd4f5a26dcb7bdbbf93c5c05cb80b86c58d96d88f7698d528acb4427c41d7df2032cc0bb68e6dc1df692850f6ac2937eb60463a4fe315a44b7176e85433831309e330a6627ceb481833d8fc31f4f45df20d679d3074de842dbb60c1374e8a800868458af7413302c41da789d2a715d23d7031489051336f8d1f51a500fa9fe1e28e01fa1bbd341c1cba638acf0ed5fd21bcc000c31be4bc7ce3c4ab3fb64f896e4c10dde48bcd651480dd74616d703e7a69a174b4de8b946c37a885a728f9224361dad9679c0711e9f4cd2e9761ac6e4b7df7f6ec23b8174685f8179f830f37e1c2b96e5b4d9b4c7321cbbe89d2523a92fd8427640863398a087988828cebb1f21ffe1170fa9c8062c492a62f65768aa26ddc9497295d08bce336b555dba060cfb6a89975fb92f60e2f67b9dd5e2181322850338ea0aa50bcba96e702000431f09e465f8cb7c192d6e073a4a28785307fa9950d0b331bf3a20cfdbd505ad0d2e8775f30fe04b000e6e6649bfb9a954e07f43f590328b1ef7f7d444b2b2e9d0ff27aa654d9f9c75db0df16e98ce2ab625daba5a12eac54c47530f4aba0f50e73cedde9802bb21091ecde4fcba6589fefa28b6958e2f4924194b16e35bd99b730395f5b70db0b626a8ddd67ba23438385834fdb2c01d02d224c4a0e8c93942806fbe87ed9b5e57fb719f579f056938d5baa70101caf20b9eec186aa63d2bba4bda421c2cf9a9adcf072df8f0f17fceba3b208cff92ca48ed56826be0fa49cfe6493d282b04e37d7ea8434991724699f5f98b7fa03e53ccfb8f38d9f2e4dfb531a2f112fc8ad71b245b517f883d72ca548de9778baa46dcfa15bba379b5fbb56085b0938efaf34a85d6772b55ee1d9b9045a2e80355ac990dc18e6d7b33935a2d8ba4fbd0ac1662a5958a7a12e5b921f915ef229823b9697fb78d2df7a793d251478d0950e640edd231616197b3a54685db5a2d8c5283dc37b18a526a89d7e1263e03eb4ea6837663fefeedb85c4db818db0af1b086bcbabac3a9b0daaf4705a7c6fc4359bbc2da89aa2a9e0e5d7556f9e30ccdc2684ff10c1cee185933f1a2c01eb8f707a3b0afa543fd00799fa768e6d0d0638036b0579e7b2bbd010dade86dce5dcc10415ce70f1357747c396b09496ac4a7c9fce453d7ef09f78f270477a435c090df6ba9db9844ebb6b3b3375ce0850bd64421a574b4d5f69e315ae7c4a87bf63fb729c6f0897bdd28d6c20af1fbf44ffe5653bb635b1b2a16883e61450df07132ba0fa725eb550a2273d047b9bbb97b68838a54f8fc6c16bfbbb1c997fa145bb292b484196d92c234d88b95c173a79ed0bdb2d3e82a7fac53707da89f6cebea1330297b630b5f111022fd6f98a70845aa4c1848689bf376dee546f69361bbca3642d63b8268c2be5fc7376f39438e1c79309f1e90de757f99265e6eed047f0db0cbbf94892aa7b4d1179723370b0c7ca01a6081711098253683383200630a6e604d953035a7ec64d887633af980fb518eac72479504a342a895b25b313979885e0d8468d7f82fb92e328b0a9787042b813ad10f35b8ccd6bcd9527b4f245f07e66a587fa77c8c10d5f69a4acca2f36467c7d9ca1cfdbfc2a546685861688011a22255989979cbc535b73f1f9062131708b97b1c2d354769100000000000000000000000000000000000000000000000000000610151720252e31";
62
+ //#endregion
34
63
  //#region src/slhdsa.d.ts
35
64
  declare function loadSlhDsa128(): Promise<IFnDsa>;
36
65
  declare function loadSlhDsa192(): Promise<IFnDsa>;
37
66
  declare function loadSlhDsa256(): Promise<IFnDsa>;
38
67
  //#endregion
68
+ //#region src/slhdsa-kat.d.ts
69
+ /**
70
+ * NIST FIPS 205 SLH-DSA known-answer vectors. Source: NIST ACVP-Server
71
+ * SLH-DSA-sigGen-FIPS205, pure/external, empty context, deterministic.
72
+ * Public key = last 2n bytes of the ACVP secret key. Verify-only.
73
+ */
74
+ /** SLH-DSA-SHA2-128s (loadSlhDsa128), ACVP tgId 19, tcId 162. */
75
+ declare const SLHDSA128S_KAT_PK_HEX = "0fd12c3f990748cf9b1426413b64128edf9242e50b9e29378bd24cad4d547540";
76
+ declare const SLHDSA128S_KAT_MSG_HEX = "c0666252089b9e469f0ee398b8c1bd89aeb63ebcb794bc68de8738a93804df48e8cf6cf936abe1dddb02178f0064f8e06ea827a79e6ee02c5f98fdea797948b79ee4fdb1a12c31d55edd2b98c11c01dc71b12381bc7d2ce6800d2667813fba079ad9ab01406a91922ae324cb54603a86007f2a3481e3904ae53d1c33bf5bb982a880f8fba2015b9ce6a5644cc712239c41e5c33ac2638893d44e039c0677388f2fecdd78fd7b6bc4b9ec9709766598e8d923abf7ebe86f85f9f6760ec514897eaedbb160fbfdbfecddae2331e981894b5dc9b08ff5e66ae14cd876bd674973dc1e808affb0f5b18ab3a1de55cabb5e6fb3de5739f1a7ff39da6256ac88728dbb04eded47f13c2ab402a237f5204543a285fe2ff50477c90cc87c3cdaaab32cea96fe9a0e5ee36ee2d35cb0bbb4c7b5163d0060b45d23ba9ffb4c2a5f1ffe10b25decbcd65c80a3e6b38d18be16c558f3db5bd9ba6689d652d4f68f02c92170ec1ac7800dba917216bbc73e34768f958a4ef4818fea2b7addf97768ce965eadf2c18f4dac50a7e75debc3e6e067d0c93dc526607614327c6874d1b4a2ee5ddaa1a8a60440cc5bb0af6b95c16794eeafad19562c71005599c6d01a08015652f2ac2b7ace177ee393f19760ccadf84c827cd20bf4e10a051b76bd82235f4d470f3742bab4166a81b90d3837761ccc5749f37a554966893567df90399837f0cc290d7c98044140fcd11b717e1671e4acb056ba142c76558ccf47fcf4133c9d2a8c4fa85bc87cad0308a6cb9ef3597c63d3a47535627d1bd1694514b14548a29dba64d893d5b851258c1c914748bfd2e4f9413cb6d9578f64e27e1419a1392099ed145dc53d75a5105a4f8df1e2fd507d5fb6eb65e28fb2182a15097ac8ab74190d7345983c329ae4a71e468b6fb97aecf8ddc516532e0d32ac9af7d75a4c2fa0dbfdab5cea485b24cc3f93f0c25eb321ed64c7f84b4f16b8d02fe1985666243b0f08ea22db6850bfd510666ae6de618e324e3e7f883ea8c62086c53b08303532a97ace24ede6702be34f36f416363f956ae9c88c98ceb6dd2cd7094b94340f0c057ca12673cc77fbdbd64d3e1cd59e29d2596f173d3aae4aa142f064e14b02318e52c9b45f11eed90105c7471857201d3ceb9796659d5fce30013762a67901a21e66963cf2da1469f0d4b59c09df4bd8a596dee3ee2097248fbc8f747adeaeb7a2d1266430c5b41ace85b7fcc2ee8bbf75b2415530a37444cbc601a7f5e2eea8d1788a959fc18ae6ec0e87626562eb906485566886802f2c66c525bbaca02955e71d5fad7fef45cb1bc8d560d0da0af181ae471f38d5c531260985e48ca6afc16f573d70536c3eaca58e3e4cb15636ebaab2615b6299ad248eb31abe9bea5a5a1587b707c6b4a4e209aab9e5fa54e441c720cee700c549265e0325f84f48565e7439a19697fe0c789a6121abc00b28b4ab6a06f248ce93b61d4e05d32d3e442b557af1220890abce1316b6937b677564d753369373acd8655ca92643cd208f50f49c1236700007e1fe7a9e2134ef604492d3f3bc8f39c768b061220f71aa49b138ea83dcab0837cb0fc5cd3b1589c67fb998ed16d2c73b7879bd3ea7cb16a7cbb6b3aafb6f1adc80eac584cab14126ef09ee261975ff65e2e5f2f68788219193907e7c3b78cf6de0b1631637a9216a6f45c7c95daa374a33ef22cbdcfa8ee400fd2dec1cb06cb6d24bd151bf335404b0cff1156c228ec17c9a2da82ea2b9b203234a8caed239605b34ebeb6cb4e46097516d95ac91074b8adbbe5511c7eabe373d05a494ec561e659ea7746d199d3af03f6f1960f0ef08c8de7804f09efe02a8590509efd59f076bce869c99cf2903e0aff410ca93173c47f57934f3c1eceb3a4144961c7de9e54f3aad782d36fd42126cc5dd8a3943edf02187d9baef411846b3d397123b6fa68c7f4a0e80085dcece332335d9339f0ed856d28b23766499482d808a05cc7535a29f102a481c43c2adaa4f1e898a46c73ed864887112459ca9922ac3ca0a791e52acc020fadee73dde439e69130d2b73f14b957eeac8e263c00b082f5921054b14622cb5fe3812d4574e50537506a8b1c184e5d0568d807e62be580db23e8c2e96146fbbbfedf8d71beb0c6b4644221818ba6de6509c60841eeba2f60f2dbf63ba9798981ec16c2f6a366cb6129f6a05b5683b72a146c52fac8e7d2c1d630e87a21e0bb149d780542d0f2c16cb0c139b18c0591eb56181c548e2709f159a3f974d37c3253b82c50f86f0d4230b0e111c2d92c65cfa5cbf654346330fe7074401323824dc29402ddf1d547a74c7c50b7cf157a6599b72cf7214ec666962e36300659be8178a0274d4ec62cecaced451aaaf95f24b08aa9d1b50aedf9d141a42ec1e4848186fbb11e3a2ae03398d1f21f38a7a83a4cf8249aeb458d39ce61782f09b5ceaefc7dc24333ac1ce51585173234ac5b5970ade48083810f594ee4ca570005c8a01436cb83f118d82188b81bfa9ecc2e88b88834c265d2d5b801c36c1bcda59d317fb60e533503d1a5604a636939111caaf097fcad4748661289f097d2ce487bfc21550bbb771f10b5257c0acbf56fa8a9963a544991ce868b71857245c907217b1668d8e1bab2e554d19e6bddc3d7980c3660d9ffc39254fa36c67e5c73e2539149cea39d7bef0a702a27dbf6b8cd41ffd1e6381c987b49ca0644c0c5230f8cad85249b05d779f27e8d626b0d5c5b4f078ba16bf09fd8b5d4d47b176e5d87e285352841f7c4cd913de6c7f55e401e451da32e5d1594b1d5d72c5fd378b7e93672b0bb2b9178f235d8b6f0b265afd234a7e3cf4793faa33060c9cae9faa6583ea92d952084c638ecfac257b8c5129f92165a79c0e6826407e13fe1da55ecf8206fc5d4f541f89f21b4b5d9f8029470529410d6f2d6c7f47e22d72923e7eda2c4ca5a4d456533b2ed4d5088eb0086ef1a53d9c7f8b1b28aad1b4a38f4d5ec724da0da8ef1aed42c6c1988a561750fc85bcbff006a3b43af494bec29919fcc75f2b20dfad8e2bb096433f34c510bd69934dbd8b14bdf344babb371aca838605f55e9b1380e44a4348d4adfae86ef52baf8845201ff225fa3fa0c3f7d17385443e27a3bb3b6cf2d86edc7d3ab833e57eb2088e50c7c42d9919d78072bcb81fc60f662ecdeda8343dd90de54d8b3fd1c01280aff13a94aa6cf5906370aacbe6532909798af4f8fe62fac8e4723122297d472b3da30b49cf88f122c5eb0a2e06bd7f1670b4bd19ec5023bb3a091d9b8fbb7c6d9eb188666999bd36a3e148221d34d2010dc1dda5ebe6ddc60975e38dbf94040e0e2763d9bf8dd74e5aa8ffca172c301e97dd3094c98a95018a48f341e718dfa3ab604f4d5369df3e55a72f80e8680ffcb6cba59f38b06e5d75b6429ecc2df58929e7322629e6e93c7c694438e70ab8cde7bf6edda1088bdd8678343ca65ba799df178ba035f6bc25a847a7c38ef5d6a9f2e9fa73c6d5a0b488681de60b9283242dd22dbdb3aab6e13334b242bc1346a35f40ce297fd46b0dd43e4becd8f0595b8a64d7d49935e9c1137a4831e275f2d355f6d665ed0d8804a6c6f39d6cca5c7c6695b8afe69b9a36a5bc3708d912d4c8dcb7b6356cc0f14213be6f336b8f7d4b822144b63ecf8a0c2b4326de509cc216fa5f2ce915df9daa4cf67e71a7c579cc9a88a49c28ce2708a0cb14096b3d39923017f8e55b18d327bd6c8566d72bd83f4d921c8a2ff32df2448801e8075b17d15d569d7f05c65eb712d48f55c16c90a2b41b65820f96e8cd96fdabbacfe6fb4dc246d268cd8c5bb2152c2117c0c4f0f042d1ce02a8d91830be6a0c607873e433eb5019b15cd273831e0d5c28c6a638a25d242db41ae79ddcf82f3b411079bf7154e7bef9674e147085e9ea45b5105ff9ac1cd938e5391baa4981007143f96c0952113926a0e4be375d13ed3692e65df9a17e3a7c8212828d0e5fdd26867183731f7d2b12090177e6985c4b67c62a0926a787e3c66c8b867e23422718ca5793a87ab4609c0d04808445a7080891a6d03677a87d1a1afe277f1938168a86bc8da164dc0e976080cf24a1fdc5940b9fb73accadd458f9f884894cc11cdc2821820a3b14a748e09de44c0076129f87734136143fab08c6c8b50c25ef3545cdcf9bb39c4c084cd5cc7978b69b21ae04aa788106eaacc4d51e5643607d155a159ae82225174900f54720c10480271d0c16893b494bdfb5f2c0cbe64cfd94f58d7df8ddb92dc48ee5c1cce69f9e85a005a341f572a3d70e78a150e9a52fc2c22dbf5f89212cc14d0bfcde215a585742aa71150fbfc2b4ed071a0a7b7bd08ac3e3263ef6e130121ab300b72790df29831dcbba30f2a5e86cb540ba3346744ec2236e0083db740e65a108b4a82e6a2dc14e51f0ca93ad32e3a91a6aef95b42267a9e592bea177d40d964dde25899286203050e769dcf8a8b52ca1fab081a4b2802d3e3bb58a5e1235baccc23b635f85a4caec9448344fa5e59a1d1cb3ac8fd9588941840f36510cc5991cb882dd43d24955a73f5bfd3bc1b14d72069723ab52734ea07f35a8db4b09489284f501f357a1b4405fff0228f908772cea825a54571d12ba7535e4878ab4a64284f64439de38f460ec7bc9642dc4d563bd3290f14bcc89c92fdf2b4b01a1bc286330edce6c345f7b73a621e1e74199a080e62846dd097271c5b16d3db367070e5db0a5c765564ae5796dfbbe3e4e7a9c1cdeb309af19d808f75224b71ad8e96e65602f61deb67f34efd85fb6126ac4e96888169cd66c6e8c11837de58a3abdd9240d290337e325337b8a761da6ea8c7537aff1d8b20d7c8e63674403e9fabe65f506a09fdffc985960c8aa52fbd1f4568766e0499fb3dfc5ad0900d03c85fc25dc71ef9a4113dc17f8918c91d2299763378189e5209bd7e5a1e2b3bb1490eaec5a7c7c93352cd7104c00e5779980a760c41461277256a2590525c718242818dd082512798a5c7899a8fb3cc2f4dd0a68fbd7e42d6ef3126df606f0aec5800c89c2d954a4e9a238a942cf1b85c3985ff5d38c9930b2dbb75dcafb1bc206ba68c481005a54d2def5940796082551dc6912c8f6692d448d891d2e2782de363f404af46c612daa28ec3cbadebd3cf9e5844cda520146055d30e32d057dbe1bb073c4d2010bd6294365ca3c6e8a7570b723abe59e8eaa04134c00428b7010f228ab45542df31d916aeb69fd0659525d736e9e166fe7c7f5c8f2c61f9d4115ad62d096c0e7e9de55391bcd658472f6d96b9d83a01e72c3bf6c2d3e0c4856ad3850ee6ffd33bdfaf70fbc8833a7332306fe0f764a79659bd2cdc97ee2e1ee12c24e7498a779f5e8e1e7fd06ba459089ea0f1ffa5b19fbace996e9f21b9fe1f41577cdc4301d3226f96a8f46264f31bbc0e51dc4d603899012a4b6da9fee52712d2356ec00516e07d4f6fee5aa0e519f7088e16e100f186b63ce159e25071cf74f395577efa243a1532dd3ee6fed5f2843dbe1bce5a2aa829b458f44f2c235a8e46dd30937957b5244c711bb92b3b1f21308615baf016423428c0d6af4886865e966a120e07230a53690bd4ac5ed0ea8af83cd5b271e0e868eb37b673ab1e30112d7a8a15b6176e063897abd87f3d6bef3481cd78a7a3c9207fd825753942eb04e453e9cac02f0cc5b57d664b01683110bcffb69623146507455a34c2dd2383aed2bd30b04e28deeb17e09d1cbb0e7ab49af2a8bce1bdb2250437f3af1a24a6528a11498c1cdc0355ac9843d539793f38f94ee783760db01c394d8c518e7b836bc5d685fa3763f372761eca91d9eb729089721a9d806c29100b80e0004e8974673a2dc0ac09c8ab13dc67ffaf2dcbad195ddaeaf2e2bd8996829fb2e277dfea65cde86d7704c06b64650d4b1a02abafce6367e028ff325f9794d57c653d10112771f25add8a00713df3da3532552e6bff04eff299075c5818c5f777860e6f4eaa3fa0386eaab4ae55f0e785575b158f1c5b7ac47bba50d7ba50f5823866722589219047e44ac779c96bbce9df16b91e482fedf823e8703a87847326247e0a12dab6ac00795dbefa53aebcebf4e85c3d771a0042795cec253209a5a3351b188647a1d23b44303858725745001da2443d27b8414d0451b4bcf1e030a1b6315198beda9e391583e5c86704a42e09de1572bb5bd486b3c750e5eae7bf39f89f6d26854ede3324ff990c4ef51455479f94a12a39411357d6e78d0db328ae8034bd7b69fbcd9e7f3fabfc7f3c6dab545ea903964f6ea60ac71242ed5d62c0fc0838ac9068b3f0a33ae088df5bea6a29d4ea708414b6b8d15de41dec70d96fc88b48599687704ecf3d285cf84ff3eee4feb3b6bd2b5c4451df3400b7832ddb87e8c8d34acf68dd9b97abe0691888155e9ba10a4c6148816e93190f650be66b1d81658055528a86090027f5bcbad77ade991c9dee3b6cfd792e35c55561edb39d589b308366ae7b298f45a95eb1afa4587e7142bf73c3b8c1f8f6f3cda4154ea976b76c6f2fe94fdbcc11b1f42ee6601203796ab0872a54c50a607cb68a373b4139c83511c1a7d1d921d9d9c898b32265ad8e04ef568871abc93e1701c271a5a5da4aa7415c0da01868c13908d62e0311624f283fed158bd119811f71c03aaa6ad2bfe69bc484b4c5bde204e2699b3ce8afd73c7cec8855c0d67bc600d35e0a6db3a2940306a2e89ebc04b832e6624cef91f2cfca985e0d76b2fd4ebd1370da7624eb44b67acedb7fa1c4caf9ff18ce1528e971adc42f58f8591ed1e2228a53870eb74bb48775d9139093f9e156568594ef614776f7d92d70afcc2c43d27c039bb6215084adbd8660607986f1aff8c47552b46e362619a85f4bf9620dd6398d278599da1adbe8595d976d80a038797a11d9f27d6fa39935904c2c6cf71b1dcdf119cf6b1a0a9e77d01411cf5ba9e47bb8f08d2ba42aa6e6f0b3e4b943c87d7f66b93a94a4226a9ef596a8069a99e974f56025648a74872bbe639d74a9941e882abc59452ee9ebee6507a02b56555a9e388e4d5240982bcffe597e9000cf9695c1fe5bf528120342c2760ca64485752d039e443029d08686a18157223cae5461ade4b0db826e2c7cce7732c71ecd41557bbb3e5531447a82c9de53549ec1c9f53d2b7385eaf0e841f38584a463506504d5f5f3f6a3918d116a9bcc6aa02002432b961783c2174b7fb1d1f6ce65e52e964903749114e58b54af45ad26609a23ea43ea8981e6ae084a8708ec2ee62c5717c23d04c40a462db5180e21da61d2789e00eceabcfcf0d34dc78ed7329aa362d1100f08e93834c73ea78672c9fbdfd96e3b86d258fd7716db163cf8d174c53b9ac82daa3b40b414e335e83413cbe97ac0505c07d64e3afeba4a499d4d180d16db9a3eb3769039ca435d2083fc216114a38a10de9b90d5d98b944a650af76203b9d45584e09d04e13ee798ac17b682f4bf5484bf2bb6fb212f2f507b8168b1dbf9383a7f26207938393c9596c1f4f8dc0fcbddbcd36b4bf4537ba559d53e2dd48e6a91108292c09d01582a67bb5eacc47925b9af4d30469a58cd11e6bd7a9063a440e57eb961f1b97b1aed19f594b1756252c46591c22573d95a82845c3bb7fe72200c6cc41f174d9b5b7162a41ff4db416e2265790283a0bdb98dd0bf9d14ec8d9139fa6002d394b84d782572d32d673b32116128359fac1a6c6fa7a3df8b0370e445d187200d62df4a9b08be9e1d2d6131b04a9085d0c362b11a7d65a2df534626b380008e98eb7cb1e70908f26d24e9d55a8332d13a24745660101b8a14b653a3fb1bb2f6f2bbb4f31bdaaa5519c2d136077a6932f741427687034a4dee988c915e22c53e5ae15fc3b63a227c9afb59aa6dfa12a147b1c6c05a1de8527f7b2d3e473550737d3f202a2bb0e4ce119c846f55b9c90bc6d3d6be96326d8b0b7b74aaf834192f6abf642705e9752e606d02c7a8f3cdf41625626064cb22d166261390df552b14543d5323bdef2139443b79c913d3b11f1c53f023487d5ccdd312062722b959ea26169b6a02da481648baddc18905f37c5d365a293f512affa7660df5f579f411fcf2cf07401e55668d3f74736cf423d1080ba126db46ecf";
77
+ declare const SLHDSA128S_KAT_SIG_HEX = "1bac90ab7e6d50f9567f015164ef5b141262de517969edc6938943bad9123ba5a31236e9c99e6470cc1bfc44edced879efe625c50f8d2cd117192b84a7fe9a3a5753806774ed59a7c91a63a96888ef5191fac1e293017dcb40be1f48c538efad2c058342505a906e7577227f2b003b597d7deee3bcdea9292550cdcdaddee7c5f38322295fcb0e98daa4bdf4f250b87714108432b2df23f5ef7affbbbd71677f39f8923531bb60332e78da03dcafa85395b82fa4699dc4b1952ec8bf58e6ecf6a40591ab1ca423bdc9c6c63128abc968b61c88590f5fa3bda9654baca75ee1192d9e77649f4ab344d9e1643983a41b751e093a402b23c434b99b1692d8525aa06250f199ce369f3235d5e2521176bda3a3e514af3b69899c7dce41fb6ffb4eccb4335fbc71e1316a1cb9c112ef62a7d261de37ba47115c1b5a9576c33697ee24aa218e113376275de3d87e9107f8e4f10ac21334a03203bf1729944c4f3f22492a3fdbd9620259fc44008af6507ae7516421e228031637c91a1969922a4fea0aa005e08eb26740a3f39778b207a4d0a83abf211d5a311fc3f96529a587a9ee9d2cbd484d210ae9ce401873a4e8ca4f91c006416964138a2fb08a53ad58e1b7a27ee2e0a40f2e5f92f365838e67d2823d3d60957909d78552000e4ac78288e665a3cc97b4c9e7ddf14067e63916d305d8a0ade48e1069fd6523d5d4bdceaf97525dd0169baec2c53bd58c56ccfc7116eb79bd6c420962b2667bdbd4b27857dfb6513145e0336b5a4d4976fac5568a64c12bd2844f7250abef88196b1ff02646b43478a613a58377e835dc19660d7cac97b5b581e1d99414cb2211d2ad205eb40d77ab4ebdb8a8e36af955fc62d6ba5ba3438ac55ed7910abdf45170ada52143a56e2d4199904187c7b51a073a6ac896c0e030a1f0701eb85322ab7152b2b08e9cc39a9c4bf104e86a71e82b487e2ed3bc235c3ea274f4fe4db4e8cc9dbcbd5b8077ea4859d7f81e1b4c4c2539eb5870098197c71de4fa9a92ff54733f4c6bd3835a2922a9858bcbf792d6ed77204b72986983f0f88324ee99d8a3f110bd94d7bfad2f89d8fb192d746df1e4fa1384ed8cb1b2411dfd3fe886fabf3cefde776f0251ac889ac6596f377277c1e74c6939a7a675dab42cb9aef370ce078d19061778d1098d783f6619c4e199128504ba2f02bb142cce9b0797205fed1516882e2f35fc6d4b2875cd5f652b5338620d1356b2588aa9a3a71e4c888174e402b626ea9649734f157a17beee0651694febff3203c37703931304d1f95b4a993adfb332ae34834bf942c03593b54d9bb3bff31c852b5e8f72538e29ee4507ae0f5260494dc53a814b655002a08a5ec8513922dc22de3d85b7e381b79560d806861ddd03924a5c7972add7b12dece20533a77f90c5d2d8fce4ccf833f57509d29850a93db1416a145eaa6c910de596282a7cbeaa911de582078b6bdfda0678c4ad31ed76faf04d770d5a60f730c6b5b27dac7e9939270c239ede4ffc5f21ecad060274af574facf24a951b1e24ab0d60b90ffdb90f95390161287611436e3f73be9f11069c01e67cf8e48b1cd4556aac7ba1cd7e7c038a1dcc7e1c0fb0ac9505998aad9ab74359da64a3a8bcbd229f61aef207a546f1190d798b2af941abd7be06f60f406291f14ad2eb0bddf0c5225ff9dc75d5b2e762a4a7ca07227c0641ab6d2b58759c93838d3ad7e2502db56ce75471caefa43efe435a75056fab3a4107c58c2530d7f78a58eab6af1aeb4622f42dab230c09f31a9ebffd910a75aeae9ca9a6559dc7925666d2c63ef2f20ecacd3ac4745f1c4aa0064e6ee3ac40c8c1b6b98a9980ad9f41abae9f9d7d2d52ba0b39041aa909ae045878738abde787a1630aeaf22d2a73eeda1dd3733356d09d256759b298db98a300e21e8fd13dcb1b81d725e38fc874ebb53d58d7943ac0f20907b4a1603f7ffce22339cecef60accfa91394bcc495a9a2de88f999cbcdf14ee756781c5bf68fca81c28ce968e07ba84c8a615ad310215b4adaefc0706b16a88ec127b9f70f739770d0d53fdeb9d376bfa7cf0f6299800ada7a9c697c4716872c5fca02734e0fa7d8872389a314e1efbf7c449bf37a90ac2a16a6feba60fa21327a1b95c9ea134e38625b9f9a9b7bb60751f79df2c5b4deba4ce74586a4d66782f75dde07c22adc8fb01c3a83b7cfcd53c988ff90c59b3505fa7733dbeebcd72edaf815431d21499d650d9080424cab6c01cfefa1d1754352cec5875f65d80c5eb8f5d47343502824c6cb84f0c50afeea2daf72e16b79146bbcbb3b1511ee327ddedc4ae0e88fa0a184ae23add39cc5014aaef247fb2dc846c088ea44e5c066140ad9bfa32da47e4dc294afe11e9c949dfe29c3672bb8a8c6e37c494747ae3b8d551c602a7c971835fcceb582bf6dee85a998bb1ac08a040d8bf90f7dc4922269dbf44184185111b922f751013ad4a902ee2f853cdf4fe50cae3a742a35e5cd3753aa709d7c7bdd3538f0075d3d18b90919f5e40bdb8020b22a9e32d2e8fb254692db0d1b4d4ba9781c2e50dd9edd75059b203157a938fe233fb967dd6d568efce66ef2dc4b2b3ff0cff6ed5101b146fc828e56980cc2e0eb510f13cfe62dd896aa66c3d7ea34fcc88ded688fd4918e8ea9f4d5eebe22f837164834b5e979fd4d0b2d97aa6101aebe4521b9e3a9200b8231476a37c45d3d4b20edef0cb9e049b671adaa9dba965aa210dc6cdb95ba12cf335ce9619bc90c0e5a9c147dfa8f2bec0dd07a3f0d9d1004ababad4accd9bab1c11c3e474457f258dbd544d9d835ac4ba9fb2a1539c6ea6469f2a8d3821672554188d3652205ebd1eb55e8704380fa78b732aa01b3ab096dcc063df739e67b309f616d570a08b6756f6df7cb09ef95a720c6cdf65e210845d065858b358451554aedcb6d74f5fc441643027dbf90449087a0f61e9aefc09c95bbfe3d16e1a4c8f2d5de2bdd1242854229d0978eaee295504ae72dc310b8e64d8ac0ce91ef46e4050b12f71f5953eaf80a320dea58b99fea38567daefeeef66ac16ba1b3e8f39afea623cb63cc99e9d7adbf575daa61b355bc85104276436c9a7c6b306d1937d34084f0645a2d62c08339773e7cf8da3a8c6f81f93ee0a1dc8b28898ce2a76c10879e03f6ed4712ec812d0605b365397524e957630c0760605ef11eebfb1178c9b295989c379817a92bb869bcf5c61cc3763cf6ce1c3e9322d85e50c8dd117bc1929f3b97893c83b004c5a739b38f478df458b8eb7cad667b76c15013bdc85c19c9ace0d6475e2e03e0a76b4a4dcffe6adfb4ef39c1e13ede2f53eeb0ee6eb58b420ab811ab154a63541e8ebaa57157d97aa2b61d29206c73fb7ab3abac729686494a34898c7f522985b3d25bc56fc1b46b5e0554558eab5e014fbce93c62aee3a73128c3ba387ef33c10eee20fdfe3062c47b3add94c3659c2b7595e4dce9199496dc478098b1d589f9d4ee0305302e212df042b1be5d35659ce575cd894241befde9e2567a6909ccc3d576164704b752d9e71fd283348f272b1fc170c6e588d50be984311b7625ad451c7057663d03c773312081f732fa2a96ea3c6d92cbdb5f6095ed322fbf4b809df811e4be50beccd3f7d675018ab932c23d661f3be515f08679840ff988b98c090cbed33a75ee079d0b06c8b2cefcf4f59b1f028adfcb21a50fad667900538452fab52c63d6c2b633859b2b9426eac4e2563db23c7b92aeeadfc83aa04f9cc812bd5211771c879bb7d44acf00157d6359a7554ca29eaf255678dfe2649f4e3a4a07dac415cb67c1763354d14a75910e688b0c0e75e39696333cc9597764fc190d5e7924a8891cb6ae7b0fed7ff1468eccd3f5a7e4a955c12df22438bf8f1c52cd2411c8ed5e2ebd1887a3b33cc565354cc1a3a30706867393c219bdba6c60bce984a3cd084e51c50a05e006fa26d4e5789dabc9b820e59d9a05cb0c3ae294009059ca1bd10732c4a6ef4a094d6ad3b8ede1c4049fad9dba92075bc2f5491040c7eb8974ab7b5c412abf442b033d4330baf8e523ef07541c62fea80a4bedb99092851b16c36bd7b5fc7d95b39d4d9c720f8d99f025865f49fb2f364eff6d8bb03ece10253e1bab2fd89e0b285d69229fa118561380f7e4fd6322acd10795d46b983d07c61289f98e654f8b962b3f389338835fa240ce686cd7a061dfd914512632c448bb3b8a430ed5137326134305f3292ee7e3eec82e324816863d2f384f0777c3eac0e65e7f5d7f4f6d4605deaded5b069f59ef790996f1d30a9ed2ea121de1ee3cb82a438e5bc81174d8c0adc968f3ef1cf047f36fcb4a488eff4fdfa6e8b7611e57272445b4350470711bd8fe884c664672e295f094477bab5f4e97e14ce5e1b5ccba84bd85cf14b306712eae2eba9372ee44fb524105be864a2105c1ec5df84067ca2517cd6011c65a533bf56cc7db6d3b0f211c8049cd34f692cd4fe189b8daa2b946c00874f6dbe664794d8cc1139f66bab4ebe1572aa6fa2ea699d76765a19778130a2b1b3f6d023fdacdd7fc2026cf14d24db7b3ea061154b5a51a0e7adb1210ccef08a57e67c7964d084efc747764b7c39c8ae52ea437c4399f6abf27e40dc4a908d3c07b4012bec9aaed0700d7d11cafacadd37650a75a513fa52cbfff632aa707948ae7596836ad1e0ee39c069d0df4b25496619a075e12f15a49a65909d9ed702bab5811b4214956e2cfdc5ac634bf06369017095ed29a0918df87ee25ca68aa181a47fa020544ea62f153b4fdd5513f8955fb8df3ab84c0302cf9e48d87e2b7d916223c4469e5b44b6572d2d6565a349427b7d60610bf50313da25da6ae1613a08515768ac2933fab753a1563cd2a5224b7e8988e94e8269380c0256efa7d40921b8a7eaeacd06db1a94d41dffa4ef8fe62481fd2d37827b577e4c9cac4ce740b97971767fba90f2705f491e697e3a315fa92389c6b639da671974f9b2093fd6ba8cd6be452343268b4cf0643afaad3fa20af818b524378512704f2c8bfdabeb444df9e2d3b7f0ba8a7a335b60f91daea15fc50984281172089cc10a25b590034a81d3962154e240e9cde26c89e77e36715d9efaea5e15a3d65ee7505a278d131f753c312d3f7f61faab70c3bed14396c47608aa7781975658294b779ef3ece395ced7cbf3b6d267d9a6640048a6441fafa8e38bcb1401e015ce114a66130f2bc42f0be2ab37fde126d2a59bc39f69490b23275739485b4e408cb64e43543e1030863317a60e6e60d9e144a4754d1fe6da38a0bff9ff8bfa099a25f21a0d4d2e5f97b4778a507e4f2b87cf6d4db2c0dc7e0d306704aad29aaf7a794e0057b9dbad7f13ec8b082c52f97d31c72d5d48d30ccbe0803a633abcf5ca9aebc6123a62c8e18eee0814b2747f969dfbe1d38f504e5b31754a6882f7049268351d93d9cf6ec2e791883a65f1dfb73344fd83fa15dfab488818b2cfbdf321986e512422315c2f1966a08b6d885511e19628c26bcfc9d08bec86c7666edc638d0df720e1b47c3a1e1adabefb13e8cc6cb2fa8101c770e212a5a99d3babcfc24970f7639718132d58cfa859640ba14c13dfbf759fe2c0ee26aad56a1ee4298820d215f6cd969f891d049ada72aed65ea8863bc6cb859c91f5eccb87a21d680137bb7447063908e6a4f8c979c1f7d467b5997503a8e61282f08eb99b8f6ce1f5101e6d8fcb2d790cc9c443b031b7e71cd20b91b849fc3d425d5c4d924611999966fe0f96a90011d53bd0be140d78d6406e01c53b7c86bc796ed0e35eab658178b811fc4d35ebd2b4b8090627092be464247d88bbc202645190aa5ba7feb893ba426d0750f5206204000253c21ab4746e8487c4c8fb8e22a493a54e2645346c07a3325799b2b17535765effc6fa8cb3f7f04ee9658884201933b3bef8f718a07925867ad5fa32a5942df40e122625623e6084acdfdb5def0e8cb4d53786321b6a70c486f3bc6beaf0097209d0a7ee682365ba6078ec295ed3027d19e0db6ab59196eca6e22b845fac233d136e31ff258de58eadfef5fd45783a2ace044c29cb8be57159584f9d7b9571a7e4d3e7d258768bdf310823934ec51932fc4c7ec66aa661138240abf534e63673a2324b439aaabf1b83815d70d1f1dd51cd502a8746f10447c122d82027c6c0283e02e1fd83a9aadce0da8d87fc513db2ef82a721af1991216f3179591d09b41d7803e071f22d28b378e10a69eb72a57d7db60149bedf130b869357ad24fcdc21997dea759c5846e58e28116467c4fee76ca7e57662a378f5a615766c7a6d38c89af8645747555b54d2a790922c2fd8f9f1f3070da84772a5a3dbaf5f54bd4408c8da0e465c44fbec4bd788111529f290928dee69d6bb727613e5c5ef222c41bad1841d8ccf19914c270d37e529ef0bca0cd921312d5ee8371b65b3c83dd6ae0a4f75c4285e81a8c6bc83d935f58aa6581ba061625a81aece4775d5cd5bcd2f0b29bfe351dca928fd90f37e731d5ffa744c028987c97d2d040f0d6f20c6825d16ee79980a8797e3ca924a6f53b48dffce55b8c809d2727638a86149207fe9432eb26053820f8d65c0ececfc9460bb967d27753cf2ad373336c38f4f27527c4d8348523ba56e54961b393277afe7c86acb80ef89b3c62c05c9b930f06c76fcd1fe1ee6f7a6cf97b7a2ec0c1806fd3b616d19ab4c748fc142bcdf6d338cb22c5a5443dee31789f7e5655a02750318a851ef8b3080358e36f72f5371b2e57f90bde3a68bb4c4aa5c9e9737d121f854ebc4466bc683ffaec2df62ace60f188de5a4037e64aec5d59b31e9e75eb0ffeeb9bae281fb790f4ba3cd75815f8f292b37aaf73ab10148408b72c28f0e9cbf910c20ab86764429777196bc0f80147945382028a0d358aa6db3cda35c539994ea3e2ba167131e0802e84146bb75efb55f7f6d6de2be958a4f045bff626281ee0cf015ad7ea26f3bb6b6a0ea53d70b69721ac6bcdd897270938c27e8d37befde444f9ae7fbb8921fadfbdf7f946420fe3223d1d55364d7fbf913c3eb46a5b0c8898150f8aceb0896c804d94ff8194fa3f5d5d625688ccaeb8ddb9c4cdb33ae4530e3ab22adada5cc9d6bfc8371350107cc142f801391e6f375f80f45e6adb59e4288a210e402aa0901ffa8de03b8a9673e36ff0d92940487c4ad3feb579b6136c8ba829111410299818cddbc81ace1cadca73c83eb2167081e28e0fef489b42338b69e1005779579340fec8ab20e75ea7bc707b9693f4b25efea6f1812e13bbdf1dbe095c08ed818f87ae99416213957e81fd3f0f2803cb317ab9d63d2c256e8a16cdd3fab509faaeb9ba2ff38af68dc468ac85bfb97531dd0c644838c267054d5cec54ffb650dd9ad87cde7b822de425c5a6a578c8e85d7d0e3e8c1ca0e5410baf766aa2d8bfadb6219b228298342b32bb5c230189603caa5397510fc91932b7208c3137038307d3b6bab7370731a286c05419cf2b1fda06a1ca54a4bf1612ffe10814ed2d17052466ef9c3e594b5a5121f0bbad98335430a25019c1a8fcb2b1626eec0fc191719902a93e5f5b49e5932d8af3918f65ed043a93ec737b47dc4c654e2c256eb9ea1f054ec38428afc553ac4915262dc16409b5242efd18b57452933466ccd738d030664b6a3e5f30eebadb29bef2166817650d811f7bd57a5485acd8785723c4f47ab6f1ac6a5493c5c3074bef7033e2d9f58f57b082a711cce4f06d4f504619fb9ad1824eb5b0fce0ed84db1632519f6cc0ac12569f13180b1db3762841803e05718dd21d4c84786812d7f157e48b96e5e7946759e4a400a86662f7ca22d19e705c7a70eb79d863ae3e63708fc79d664193035ddce2593f5b2398075d7c82ddbc9ed596bbbdc28ce2a25048a162d46c99c4de1087d7063bf436414da8f3f52873f66b853658f95a9305ce622ffea72e4122b26c49d7540ccb99254ebb9e43036b1bfd661b78c2e0e220e8e746896271b5501901ea34658fc19570f3b3a70c2d6b57d9403b652e8baf79c42aad077b3cbdd9ef4d65cde865744c9dfc618565de6538ccb3968e0fc77bc0147632cbeaafca903361d0ffc4d76ae4c184e0c4f86a9187d4c3ddb164dc4196d09e68b16c841b5768411174d54cd9466313ba617b2880ae735053586fe0d9576275de8732a7bd938b40654c700503b7ee5722cce0bb1644357123d5877b01df4ee19ecd66797bd41c6232416914cd4a35ef69330c5279ba214a78a7db3a800c1cd6d6dfb31f8e811989288606ec467ab9c9879093ef1b67807ff5ce5b502c2eb8c99e8d99ca63b3921e53c04ef6db94f0a2df0bde1332d1592098fff590d6add19a2eac6a74563bf51e2f6c6e6a97670fc1e58b3c4ad3b387b51eae84f1e63a6100eff29fd394f7fb897595012f384eba7e43382c3859873a77f22d62893385c724ad29126a66f235fb2864b0011095d322b849e2e919486d1e3ab2c9daac3d2a0bb609f8aaeb0c20fb169ea89cdd979f44cff1a51280982adc594b74cdd211e044721de4bd23a3fdf28f5117d9ffbcb4f7d0cd379d19ea6647d18491cb04fbf8e16bde9d11e7e66cfe50e4dc2bec9172401fc76c358b4752815906310d464192bbb6684826d921a25f890cbb857be2e32b313e96e2bc6cc330efe6203f2476b6038a6e48091e4dbc4dc5d1d7b7cb9bd4d41235c9ffedc5f2aa57c004bb5756fa35946916c388e26f3df804580bd8307771b8045ebbc04c6e6adeefe118a9743ed8581e5aa72682d7010c3f4c414f27360d7a6e3fc50670d811e65cf4ed4472665cded8e0aef0d0b5f315e529e85fee87072fbca4b8f27b025a5189f80eec7033533d0fa11594cabe096fa337525aaeda733053d0e9459e4dea33d4b2ac91237495a2ee7696225ee93e6358a6fd2fdae1f56696287732ce7aa7f41c11d6b513798d4dd0bbe4b055c09b8371612afc3a497522776f7909b71c6aef75373d969d71c0185a8146a096d04357ad3245fa962ed918c164995dbfc385fd764bd95f211b071d184e2544f889e2154476051dfce9279919756c098a2d2c07f70dc66fd6a6ffb3c134b2fd8874844a5fc5e0d15f4d6c7197d4677edc883426748d452a8dbada7962cefdcb8df1100162261bae5818b91bf82569f31207684840a573568d1e889b84248a2cb8ef9fb82f621aef2fa6f4731158169572396536e267b6dbffb525b8ee9cb501efca26655750549e44b92a8a2c21a48695a307e793fd57ae844b0c4f5db1b77e8d7819f07a94235118b8b645ebc9f914603ab92561468d0b493af3fd9963fb1e2ed253408e6e43ae796b8f7b8c6592b5af82b4aa772b3220e49d66926a9371e20dfe0aae5a50b43fb6a4c418c693e03e19624cfb3b6427021d545195610352b4b15248cea6bd320c4a5a8a031956b051f29f6e6dcec1ef9fb92f68eba0b5340b082fa51bc73122dec7b5a987dfa61a73464c5839ddab7c59a222e313123a9e10163acda40285af47955e3664567896d8860d4159803c97c206dfdc468ba85bfd85db132c424771706e0e26801054c477fee733ff59501abc33f0d58ff67bf5d9b010307c468c1f3ed5641bead0829f0473a786f80c112ddf0017e7e859bb7c7afee95fc815ab880f94ad43e2518d18047eb83d1d77b9d42beed20d3e357c79867c56d584770fa0f7974ff83ea7d26ccb6319a320bc3e763b332f62680e4fdad9b22c17af154fe1183a732e5d4dc084443b1097703dc7640db74c595f3b6d0f1986502f49b3ce72694e95b4c48f7b8c3dc1c4544401d22e5b6733dca273d7743ca177161a1abe2f0880b9a1407e71eb67296b7892ceb435d2be6f989dcecb4874fd73a492757404dcb02bb4704e908b0d5a4d7f494e2711e2c59a454eac15183082ee6090c90568e966d7bb1d4a55127f996ff64a0f3fa918d3e5a2c0f4b3f05a7c41039e5c850a3ea9ae0e795d507fa82cdb4169c02deff2e6990539704cc85afa2bc4b7ab3861049eff0f2d2a8a1d5584391e91b9f99b0f7a5046fb8a6e6c00973ac9c3ba053c35c0de582045ea951164951df02e8b5155fdca9af868a1f76e9be7830f56f1df755375aa9e05d0b4182576bad750b22dddbf9d9f3948eeb3ed52b16ed1213db2daf16ac6e0684efa85b41534db0357a2aa51a858bdec4c78f315bcdf96eb8056d797da4ac1fb50fc05698cb64798231b0acd7536eb8a3939867a5f11f4e6ef82c75892a7ce74d29d5199f25454629965f4a1215e428bd02ff466d7edc79eb2b4ab2a978a9f09a94bb306cebf9783dedfb497a3f0e1f24086847c60b25687abc853a2806fa70aa04dc6839285cc360248a2a990c5c1ae7e3d6cb10bc08cc959e552fa671c033a7081d7baa23e193b917ebc6f837c493e2785ae4e4bf549b879d4f40cc1ceab28aa2b14a8459decb2d00bd554b5ce6e9caa9212124fd9b1e16e057d4e17dd77056c188e0df53ea2f679994325706cf440e49d80f5150d8191c53c2638c2b35892b8f66f5dffa1506df4665513d2a8b000a931610bf695cebaebfd80cf2d6cd225fdf6515e5f5d8bb3f3da49c88797812d1479255dea2dc1a663586df4a50b7600357a671650624f264bd6ee7a31ef1fe4c8b7a902813413f6c9146b211b8e32e2ecc50ee3825aa03515b3bb171338a5b0dd618bd4b014abd5b52a08843f84a6b04e551b40edefd7de45c071988be1f50b71adf056a461fae7b5ccf6c857cc85b627e327e0464536e3b4707d95fda5217e14cb8b022a5e400133147608421c1b1aaa62424ce7b1f4a613d371910b92e36ef5fb7a051532b6a48f51952ec39eb9173ddc90f29776ba1b3ee2a7ea961bd2b6c9a1329db9e5ef0315d8d8e5629469fa7f2c7192816d2eb0eb7bec2e325e64d2dd0782c0bbd6cc42dc728106814e50b7ed5b8865d1a1655f7afd8ce0bc7e8ee3163527be4180842164673503e7558231bb1782f35a60975892e627fcb3c777cd8a2a5099bd21f9a2dc335517621316a9cacf5f74739dadbd90fe3763215ac754915cebfb2bdb11511be0cc362cf439005a00d50886f04fd5488b61013c59cf8d2b8fb07c17e79ec93bf09886a9474d5f5111fdbff6c137356bd670d75d72d53a";
78
+ /** SLH-DSA-SHA2-192s (loadSlhDsa192), ACVP tgId 21, tcId 176. */
79
+ declare const SLHDSA192S_KAT_PK_HEX = "72156900e450cec7b128a9f953c8948d620f58d51f8c631af405c811f4a03bf0fff8495e4eed37d12bd5200cd597d08f";
80
+ declare const SLHDSA192S_KAT_MSG_HEX = "bbe7062233100bae1a0ec1f920b03ff49f73d018878ad19bd8b1be89d42b90fe8e758d896c6350036d6b02429f9fb5ebc67982da442204497172858314781a1d516098d69c056d224e153a8cd3420e5e35d202ee48e15e274c2a8eda859e18a8f8d685adfeeabec868cbbca3495073004c0b212d2112f4d70e96c15bcdd6ed0ab884dd47425b6956ff23013cb86cbd0d855cb073a9d12dd51dc8086741beec69087510075ef95cfd7ecafe4ee7119f17fe0319b940f67fc88b3b409f58e821fe72e94e5884bb109f16f069299ab8105e68615063bc5e5257cd94c36e9873eee7f39807f87007784e66d518924d4d5d4eaad91346d015967ae1bf5ffc0a76752f83b776f707ba377ba8207852d934162d90cde50ea2719f6a8f0fb3a882206edf28f2c7647bee1b8fe7b6b86f7f25899467e21d78559e214a1bf1e5234a1f31608ff87862c87d10ae463bacc4bcbb5c7432fdc7b481fed7a1558fe18b9c62ca937a742bdc9abc912e969e772d3f76dafd7d818514b3acd5bad4131f5aaca74dbd69eb3b97b9d9f6b8117b6056b9acb474ea8e32e91f337fb60be4b69074a3aaf7f530daf4ebc48cb06ba5483362e19f8ba394fd569e42ee43df275b4589615e5aaec23758375808e7e5d02c0e775fdd67293ff2d2fd58b92d89124cf4ac718197b3bf934049c9cb9567fbaf586f77562c1b08b70af8111a4103802102ee6fe394289b85cd8cf970e14aebe4189abdaeaa153a649006aa33398d1f39b9aa15814c1349151d226b677f98bdb42c4ba7613c3acb186fbbf7de3eb9a739f378099eff1730c0fbfae8762eaa2088e4e8ece1c712b2c24815987cd3450f06999a119f21a29d182c6f74effc142e0738cb244dc041d304182a409d2f5c2f70e9e58b5db158530935ac229b17caec89b3c7d903b5f8eb24f7c3f874abd3c54f0a8cb9e99ee2cf11ceda45ab65cbc7109fec70f5ab39fca2ce293f806a22e37b588866dfdb8b7523bd853cb29bba4e374362978e4e1ed7716c957513058c960b8ce166b4030b72367abe1383aa6838443d440d002d6f5dbe3d69eb4ec2f0e2d108e61ad3fe8c7c5162c5feabdc14db57e33803e75d9ff1a6b464407f5dd5fc786af09785c01b7c412c6ba01f1511237de94924be684dc1a06bdaee7acda9bd03e414bd0092c4a107f76c351f3f5d81a3df0d281ad8e18c28f02a49612273ad618be07d97b5028b1163fca0f575b2cab53c11ee7b0a48e361ab73031dd505049762aad20a13bdb5cd883363bc43389cf3481f66270a100c5dea90546bd01444c7b9e32d12a612d4a238f88b17a6cdf200ded3321accbd7a90bc781de860eec6144a098935387bc77a3933e484a0c9d60878b55996288fd14218668d6d8d0ed61d7d2ce17cd66ab5386a5ba99d0093f64ae6abf6360b43402b865fa0edb432d6e3d1e4189713bcb36feb65da69bb57a2b85341a064f2a70295c3f43889d9a09e45c465f5a34c4a8b860fe9dd0ed90320bfe97a8e52779a48c68764e19f42c358c974b46cdb168c33e19417fe3a6d8af9a5947b4c326a12f931400c2f7f2c1f9e0e234b98d3a8b53b36acf86571cc89d2b7e30dbfe1d17c150c87159051c3dfdaf989cbc44041dcb2535d1eae801f8147d15ef35e061928d9e88cdab05b0898555a7884f3145b30ab4214d909ab64a2e6377199ea183a537e7ddf1f71ec1ec72c66c9132205b9b96b480b995a98a5b908fec7cf2335fe1f6e9b8aaccdc679b6db6f71ae656ca0ad0695cfe937a8ee0829ace6eaa3fa369d152f80c2b3bf4e3a31434249a1ce66efe86bc95ad3134eee5d3d6b1b01aafa1db8127dcb5b8918d0efa2fc85974c4695c8e8959e17efb092fadc4bcb8f3ddd2ec9d996e7632ed77e09e14983a648caa909fb59ded8c3f64ef9e0fa330721b13926a2ce61f64f9021c76e610e3ea972f40f52ed407603d1973a8c36f44f9eec6aef872d183dd9fcf63ccfe2aa5a31da30d549d1f38ca0c053bb0b3bf246cdf1a918bb3f18da483ee14679e137578da2757e7dc2404704262fa007617bba42701e073937fda759ad978a19f8b2d0615b1d86f635b6ebf8e24fb8e77287e0c9fa3f2bb199b2aa296cb333ad392a54de16128f4144b5829ccfa0ebe226130de145c3434d91e674ea5fcbabb753bb98ce31dffa7f68258d3e8cbd980d9d09f5176b8669d2f886be1091f767d1f40e5968ad88eb1b2b7868af963cd34ff705e2c69da0c6ac2346571dfb25f7d0d5237b5f0c8f127fd092b731338d184fa4b93689c83cf46f6e65f8c008bcaee2a99b3cae8c77082d8eab03920f34121b065fd9a908a16c11d107d715bda12ad324c76545a81faf7d623e2a344ec676467bb5613390d3aa0fe0e5cd3bf56b6cb8e05158867a8dd16892697cb2b04df69f43cd802a5a0b257d4de0d37a8741e7dff1da824565ba13fce0bb3eb551f7efb45f547ddd4b5e936296be408e89b223d11fcdaaa00156f3c0aacb89ed6dbc3c8e6e5c2dab1307ad9b7b839b597abec869a9ab728d855e118cff90e5f8fa0fe53218bb4c521ccd7c925b30ff12e3f35190c483fd52ef5449bbaf49788f9908cc7a957e4dcc4e8ceca6fe61e1cf1ac0d678207f00c68a7ab165879bde09747bf43dff19d2b96c720fc54987cda0b9d0568d52ed0b8d45cb946738b93e5d51362ecc019b9f714d28652c0d46911ee2e91ec5f9303fa248f5d89f8a1fe1d19e1c0bdaa5af89d89650bd918f53831e6a1f87198bdc7a5d11d47c8b7436c10bbaf5809065fb3e6902aaa2738e5076c4814dd54c2b9bc71ead71d6e4198c8339c34be20618056c3f6bb2b552fb27cfe7b89517f77084579cfb9896d13baa1bb8fd9e9a5d372e59994545d18238c2b64343118e344480d75da91a35729eb1853d35ed15b26a12f946ca5c7848e200b6300a3483c1e750a51250046f317524f5bd8db383eef3c177c6d37585ea932862184baa96946e13f1b8dc0973e2d8ccbc50470b70451902dba0c8f1d5d809821bc3e748fe31743cc8fef99cf1cf6140b7a84e8e6daeec4a6149dc0ad03612ea54cdd8d52290750adfb4b95c8f7a4cb8ab9928e7c25d4ff3990ad9733c53f1825a89173d870cd9df9010ecbca285543abd195ec2b86d736c0a5fe2fc70061bcb715ce1e4b50ad1095be05436ca5a537b074a79571f62de3c6dcd47581635c0e447b617f6005b8437707d2497a9e03952b8f83231ea62828852e23f3a4242877f77fe1703ac0b73397b64b9a2ea311fad07899b9db538e35ebac3017494009c2a1f0ec8c98e41db5396e769cec03c4c5456d43ade6ca68e40c7a544885f0a20e4337ade36857582426807444378ab03fe4c607eb5e4d0a5fe454e3e1083435bdb2ae17ac43b98b5d48a1faf11a5d38e06b5c7cbbae54bc5ad3e1acf3a4a0c611719ea1706b1b8c6171b6301aa7ee3181488881ce55b74c542e82c7c01b0d0388bc92df5bee8168fd2ac272faa8eadd9bb1c7f0a82982a450fa8001d418b733f4a0d8f58579f3493930bb50fa0846d42056d0875ef1a461b218594f27caa9a87bcc7b317d0b347c3916e25c8b34ccaa39b7cc7dc133007fd255f0b9f62c602b8d3695c6b2708bfcd491ba5f6186b7b2d24f7b97f636ef11933db208f8090df37653d342e7aef9a54fb2b4a04493ad846ef8c2f42fd67f60797d65ac25dbaf8931fef31f0b26ab95439b6e6597688f08d9e7d4a7924ff26962ee6993343d40be284c08d3ac876c43a05544123fe24ee310a9d97689d7d54ad29f96776a4bfa87adae47e64bafa2b35e6e7f678ac508f965c3ef3eb4fe5c702254735f4acaa22fccced748dba4b6ffe89e64e648079f45eed1420c7bc74684e7238af2af9b51c344c77f2a0af7daa7d05b060b7343a3bd4712ea9c8de6e73bf8e230b65c875aee99e829ebc4e668d97dcff353034f6727e9e789fa89ebab7eb3340073c14867c3be094aea7b8da4c11d648829559a7ff956020ec45b08f7e4d2a56969a7764df5f958fd7338cd29e8abd4f381d07e142c9db7fa0f4e512cab8c83b7a56640a610e658a779b71da140114d2577a484688a4adfaa5d87345e90c2b490ea1d4b35c15ca80639085efc481571439cf1ef502d7dd4e09c0202b8fc91afd8a355c6c154ea1766f4a1d65f2b6bbc604030e0409b67e6a0ee901fd8c3acb81f678a57f475c1748d428ab8142eb370bbeac655b4b117530b5a3c82c97759f1bcb5f512ac17973695e59157fe6340ed71699732b5597e147a367f9bac676a2e9a791b550c24ea432d8bbf32c581997af5d8ea33a5f46ad81af147966ab4b2552866e987ee36b66b9d3d2720219915b1ccda505ebc82857401099bb290878044abd0cbdb4366554627a6c62b787bd1a6b3d81deb096e35f4423cee338cee025368af9c033fc999eab569bce286c7b0ff4d189092dae8e447e40ba4ed411aafe4894cf3296b1ebf546af8d3fda61a0fe71a3f5e3cc29ba06bc90721ff1e04d3895762fc86becb2e9b45632e8b44bd4f060ac2e214a4074785d3b1e499ba04b7997428aaf5100ab9fc43f2341a11741dbd90dbf3d59e47a202581c9168c7728d898d400f626aefd20ea8806c56199fa2652aac0c378e44d9738b15d4f209528ca0484db9b3e93869ad13821a77cb3d283d1eaabb4422c5d73703e8aac48ce580b2f8278331ccb11fd5f02f0d557bdd6c35ea61e79a1584d7db8f8674f91e59cc20d796553773029ef634d0c8faa156bd78e1c92e591658595d5ef6346bb744a6b929aeac29565dff08bafdf26ed236c1b3e22c4dc512e5df83cfbb85620b49f4373f9b31631a9f953f8e313ee5ec1908e4683fa5ab7be6546b11b6c8fb8d8d39f9d3de77eb2b39f397c7c9ab7740e13a88a712ff3533c805b7865c9d0e376d0939a88fc716a1bff75774e973819ddac7bec4f05896c6e289aaf5199b128168813b5b494218a00f890fa9b617bd72fad1117f2e76b8a85482fa9877262abfa10d9ca6e67c6eec36ed3bb900fb49dd12121b444ac39ef53821d7b83e4f8d3b320094fff4df9506155c32bd6be0ca2c3b38e7f4516cc0460d81868b82844879aaa799db1785060a166ca11b099c86cead5a3c86c927d2dbebbc74fae9ab72c6673c59f2af778677bfa12c2448abf2828c7027054abfb5f49a4952adfcc5bb4290e9b70c2f033ed46f87467f2c6d253e6a71c094fe13b02e4878f5ee5be5ff062048916dda6cf44d052518faedfe7d9027ae83ebdbdb8b32579169135043f97872347d9a0d4cdcee5d9c70794607cfa19c5622456e713a9de29ebab74b41e985ae6f02bd9009f649f3e25d06797dd10258b46549c997d784e21da3f396c0d0aaa2e9f7170a1856019ffbed35f61cab869251882bfc8c7f95761cc5f61b8645d128432325046353d0d061c6493d5d91a803bf89dca208fdc61efb8a6df9266366351a9387c4bf461c3e3a24ea528e91007acf2c7efc7afbbbdae7d44a7f821af54c28c7ce5e0c77203e7657adb4c8bde34609e0042bbf9f0ce8f1943bdf748285e7e9b31061d70a6ac3582e8b77d4ad6f23b3cf0217f2deff39399568774a885d01cf826227e197150c07f70abec8368e5a0b7657d194556a4beaf208ec1662ca62ed53be52f77aaa1ba0966d5d2ada3b32817eda04eb4a657de569a28ba2b5a26554359903790fc8d58b431bf9d35fa58d8daba1b8c82e9876672762c050355ebc8030acc067b8ee2327a23373b0cca55829f2c0f16232960105f0cc5732e087beb6dcb678a7cf704e9d03eb6e3f9e67237ea5a0d7f4058946b9549fd8077b371300630227e023fddacab4f6fb795f5595d8c3d279f38821c8f496ac959a4af3940f54bd95344fe7511fa46015ce8ddd55fa3a130b1f4677cdf84667c7750d7f2acac57946a55fdfebcef1b06b561a0f6c6e21a31965ce6988ab62e5043bb642c01fb62fddea3b779d5388c988cf1330dd4a937dc7dd9ee0faa363822ced2374987a7f8e86e749ffdbe980b856b90cec3d8fc227a04ecd4fae4d1717ea17612e0bdf8295bb50b0af6243cc952d4d2e01cb4da98e0b2f541b103aef4796bc33a87eadf574cac839d70ddd56f469dd7a9d84add42dbfefcbf1544d6de537ce8cc9382662a7daa2bf9f6b696dd720a8687e10170613757bcee155c0277a6795407bb477acc25b9ab49ab159a98ec121c17bb7c58a784a3130e4e8be328f3d60f904e83ef8f2142043aa9f4044b660a7af985f64eb50aa28aabd79b0e29f3543eb06100a3670ba20d0a32624a0e4febaa5cb5d77c32877090f1eafb312f4c379cf303543610672fd00228d5269b9474a608cb5a609048410497100a96dba435e058fede82f6f375b61568c5738c08a0fc80d6d5652c8f9bd2864a2a851e4438c79c612e3c91f57dde3087f02b1ac74ec29529db146bd142863a6f7873d2a63e0593df3bdaca36255ceb41376f16d541febdfd2b5c4acca7d73cf872b651682067f606015cc60cbfc18525e112a97f7fad26c9dcf30d340c953b02e78af8ab81cc54e0ee968268c79af039905661e2d924826b61d3357548e49d83c48ea6affb167c43f583a30218889c11685519a91800908e3af3c1fe0f4a6491989bf064ac588faaff7ae36ab2bc5e23d145bfac76351fb5f352088ac07cbed9ed56bf77ac6e5728028fdf38b583e0427d827acd2351e858129cd203819139deb299ee93ffdca54b13e3fe5e8d3152c5558a1bfa5b7072dbe9bf5451b96a0b00ee6c69084936cd997cd53e952dd11766ee8c6d8d91284b1ca137c9cd76222151792b30a5984152c317ad22a78d1313b38cca74dbbc852b1f1202499cf9e4479f7ccca94084a33163682912bd475d1fead3c3b1bdc19e1e226cb548caa4baec296b6a04adfde7763d883679daa798d45acced57e60db209817aa728fbe1b999e104b9561bb8ecd72aa9bf70cb1f98c994b12a833d9cf0e3c186bd99d51120fdf9029973712c8585502af3d7f1748f3f147c391cdeb39b7a772a83a13e3c021e81b0e55b5fad46cecd0937d917680e4427fbd6d830a1adde5df820b7fb538e87040b3fffb8b73beb5569be8c92f97397e27ef4ccc40629c0af9e129a989b388b95c9d28b00f1c21bc89bde59625c7c7093b85333df2351d6963ff07bd2038634c320e80e69065036b2d3f016dcbfff9f19e59e1ecffcac7ed83b91502774efb8b1bb1961fc965531d7232f8ba12911279017f0c2bc38efdd82e5a5be37285ae25f913feee78fb70aa75a57bfd92e637dfac97881564e4af1aa00f1b3a0fc8c2ee308ba05a60bf00899471006299add749946bbc3563dea1997e6fad8985151b761815ab7a3fdc3b58dcfbf4168e1d7a5d98a05f2b4edaf3ebf5d026ac17ed8598978e8013fb7ff9e3870b1067caa779950bc5671aadb3049829a6ea29bfc263ed63bece07b28612ffcafcee53732d82e009d66e8bcae9576586329a1e6fb4e0656e83954d97837b7a41220405289adac3b549de9037c270f90c658b3df06421cef206fe5de13829d876964e3bd253cb01609a729173d26c5cd17685c15bf2009f6de658e3ac4b5e27eb4272a41f426f8226d72000f39fa55aea9a994f60152af93a6d8e41d5e1e890ab6621193d56e77ac5e5d686eb4afcec283ed584dc099e0c6baffb06cd3567fd5e0b5be08bdd89c02f7548fe11869935645b874ddf469bf746ace6b71716f01ee3f80d84806147bf8cb4db77f0e4b94267121dcd445be56b9fdc41c38d0674fafd49d2dad900578218cba9c4a22bd3986063cd9c01fd58c6c2d694d7e3607b26798da3d47d19b634be2fcaad12a84224a43523f82cfe78a11e5ff48f4505a1e368bc7ce44077dd946bfa8a8a9e7726b765d9dd9543e3e2f671f44c4abe223f48aa6914496fa7fe81ca67ec1fe4eaa56aaaa2a1744e4c4c8cf5dc9c4f09980c580a7f7533e1c15a074e2be18060e8d30e3355e2ba7a39b81facf60ac9af3cbdabf84cf8b7e8d8c09d5d1bae066be97300a63b7bb743f494f3376e1ca26eb722fc224d69e3e97949bf1d36af0f3cef7db9a87970d228eff96230e2213287ddc40c2aeaf5e9932b8a171d94974d56d5d55890a48032c35dd718270d0f73905753b47405e512480e6e28ac442ffff8206f3055b189eb8248120ffd3df80144366b3d949f6dc6063b1a1a80027ad55dc4561f0e43a9fb94e843d1dbfb4d6228ee3";
81
+ declare const SLHDSA192S_KAT_SIG_HEX = "d77bdf452426e085edf5dfdc2f207b9c5e931b1d3ea3daab79aade8d109c13720a3dbad9cc7e54c65a6315c6d3831ef6de22d4e97004d92576fdff3d5e0a867374286418bbbac60b3f7b7aa3652fe8ae15ea7a1ceb77a0016eb19f90af10c78e972a654f980338aec5896ea544a205a114bffb62160e3568687b26224f3fcfef0b68b01f9ab410e677f109b2ab49e1965a4b4b5cd44c572a1ef7016ad27e2be7e3a5caf6d9f85fff69f479767d415b1fa90b825c19c8ecbac78665b15c30c2da632b7aa7d44d35ec78b0f2e053220af1a187bf0f2f2842db2f084bbb834e9ee457ea83b89ee103ecc2090f1b5d0987683364a4f46886d48eff392286f0dfc0c101471aa37ec9c8b816a2c21c07677d3ccf62384499866b485fa07b0a18758daa51c309490eb33174b47990d0b13cb76cf447b27b3091a411f622b5b36ee8d7d17f03715e8e7e06b12468d1d61370c644ba761e4dff978862169561dd54362c853bdf2b4f9a27cba5e76e32d260d7f1b08e97c4df79dc4d791c3dc3f74069604ba61f37d27f3018aea623ef10b88c1a1a9bc7f8503d8bc082358c48d530cb5a8aa93d313b1ff63b243c8079822d822d7392f28f17d507697f1a3f12b61e60bc8fc40eaca3a4d8de072a82a6531dfa182da34e8f7fe15587ed54a81fd776caba151a7b3ef22649f9f91cfd5b373a18d3be2bf05c178b13ef3335f579f46bc180734df2872185003ae2ad587a0910d8a346cf60ff742b62797355cf3d4091ac714ce9d276d03fbac7af95f36c9075f3d973401105f9e28b313b5844b199f178e95852ae5b41d25abb462dc58ed6323ef754dc2df2e077f81fa47cfc40880b2bd79026cb8073d10b9aae955ab1f177f6e30f37a5bce0c4b0c0938d35652eaf15dda0f1e12c7bc46b1577803cef0b039b09c852c2075fd7bb888a85a6d6a10890fc93682691085c0124269cad1a3fbff01693fcd58232ef72e86eb783d2d4c333f3e5b57ee6b8eb741725b04f99281e79382ecdea1aac43dd64108afc2b17d5f2ae1bad7fb3b356c00821dd43ff7a5b332e78a6f60502706465ef8c5590275d6218218dafbdd67f444bfdd0dd80413c4c202615e02ebca776f8863b76b13783b7cf737cff4af0bd48e11405c4b75e868f37d82e52bb4b1ff36977c1aaca788aed2860d6ec21d20d2f5319f7667acd514ea2228191f9750e25438bd55ae596f17c15db7a32951b2c750e5e77cb5838985478fa3d347782efc1f919b8dd8b5d5188e491ed3f769ee30e9b5b311f24fd4a0c523d74ca63cebd3eaeae0bf004cc15697d69bed2da03affda7e22e343657f9588192c3f02aec25f7a22da576c3b80a1cf5eb04f4e8953032559eeb77f944d94d11a8fd8517f62c7c5ec9b1dc0336b27ee52c07d8828d7f34f143da8503d26828b6422f6e1c51eee343019db1872c2d90af05a3d504b2738c3e42b72800c9b603475e272189662f3d67480d0d811b5af274c197070a88cc5fda07f152647be4e25e35acc36712312dae707bb2721def9387e8277ddbc0a58be6f2d4bf4991e966a0da6b2283a13f664d5b0e89db274d377f44c26bd8c4c00f28b6144b8eab018acb3d55b5ccec55773ee1ae105246f10ecccf33c8bc7e70e5af805e018a144c2c9ec99a227f1a8e498e86b177dd55b32b6bdf787b8a8ee56ce9ecb2aeba11b475127ccc737edc11a173af991342e05b4885860eb9a5dd6708db2315906d7a0c59936a64a7754ebd33330401287aa5d3fdf142e89abbffe9e65193c39e55fda801608a2bc066dda925a52c8aab78a58ddfb682f234aeac0e0529cc6db77ad3a22515401e0b2c69ba2f2bfca5835b7e80a69210c75663b482a3912dd5ea83873949246fccab113e3a4d89c2a9e4369134bc5dcc170851ffd88323b3c8c3a5b2ae51ae9aa992055151329f916f1395c8fc2554d9a1843d8173aea4ef6d609adbb0f097187750cdc22dfd7a378510f33fb67389ce52c3c864eb9cc3836609864bde394e16462d60999544645711e9ac7f55b648c48af6876b98f28836707cb6a8a06dca524d85f987691d0639308c180dc4a19d37a7ffeb0ecb3e80025f76f0d12c150bd0c6ffe530d1a8b8b8fbe18dd9f3bfb0fd168f9a3649c3390dae231a5f4009a290db7ee3485f2b2fed38a25f0a31c755ed1706cae31c6d810b59705d40b3db214700fef11ebc4025064718dbaf98ffe363f112e516945bd10003efbd6c9aa46188f5d8306bc236ba1bfa476927e69d60575b4f5bee9597cd5f2959d7e89a510bfe2b0a836cedfe1d34e09137d3b0274646f39faa83dbd8b49824db87d38536c7d431a60aec5e93183614b657fb0d74c2ce28b752339b284dfab08d01dcfb17df2ae99b1747e072de212fb715d817d9dd46cdf66c0c246b760809792014cbb6edd48c25785ec0f5f732b7d60f710153c19104f755ca49e2020a3969aec3e6c3dabbee7f2d6506e6549377996d06a710db29b9ae63e545d480507567185b450a445abae192e18812ed75ef9f7de3575fea23bce9129ac63500eedac678de72479893507454f8f3e04c52aae6e16f43d4e654ee5efe81897d282791acd9d584a969cd4915d4bd87d6f540d639cad4f7c478e018bcac149e37c81d1695270ee0f199cc83cb458e96863d1e77e123a5b891ce90063913066675f8b27d25cc47844d3b8054a86851e6f656b5adef84cc929e14cbd09d8c7d3a699fe3b7f59d1c54152fe54eb541f0fe9249ef07f4b7fc399aa495c1e87429c509987ab1641ae444580cf82d8f7ddbb0fd55d026c17e22ed3a20e6d406ec81eb1478a15c2d30728828219a5bc949d7da96f23d091103342b003ea4a1ab9f6a9d49940a85f3bbbb7db326a37bf729dbab56ce40c40fb71571f6a4e9998466dac9c204bacbbad51c9103481507cb482dd6bd5bd5460c22db3a81b1889bfcac863b7bb54a451a70f7810637b57837c81cee67970d299cbcfa313aa6602cd81cd31d3f5d1d74d79e3c1652745148ca0f84944c1433d68485c16fc2c180f51da90ce05fa0d694f1829c65dc5800fa773f4d219ce6b923d33ff5364edd0ec889002f90964dff6b5afb1ad70c07a88e83dded9dc3540bc14e47c2fc01e149d0a581aef31f191c77517f748d322cf4b28ffb46d69edc0e5a0f54b55fa79d585d2f72d5e14d7788ad0635166a384be16bb189192c9a3bffe5928eecc8c1320b1a8dd46374a09db5f4c3d77499b63ceead4134b6a850f7695cfd07c2bbc6137e505e066ebbf7d2f8947340eba1447b000bdd25c9c7a7450b79abb7c562dcc0310ec5b1de062640c6870ce984174bdb8a2cfe997425eff2eb2144317c67bd269918f2747d05b86912525d07c17628f583d4ac774cf87520486057f08b8a0665fe439607f52163dd22ac92896419fc4c60a43244477e2ff94b2c4197fa4a750d4875caa395432373988efef39f7bd97846dd80fa0a15d9c9083afa6736bc2b59890282c85a2bbaaf721acf3a8ce7c0dccb156ef9486ae9b125d32f3bfa70b0e6922ac9fe8953d9a693246bee30893fc6abf3da8c21ce7cca12a135f64886ed63d9d199886ec2adeac7308205a15ef001ad62fb8de37bba0dc30ca25009a141316732e13bc6d46421a50e1f7c0605502be46ba52c4d0da8aa31434fe815458619fffa06ba33a56c905cabfda760e8d865606e3bda6fe4fdec7c6b9a585105c9b3a32436a36b08426bca31c36eade1affd54bb1dbd539597c8f976274c35fdb3ec5611441ca4081a771e70da5340a16a111ac8d2814efa1e18753297673ffbaed2decbc42f6c14bbf7b72d5ccfc307b0310f870c20160c16dfa5a81295ccc2603769f14c6ac2a61f0ff85105f4bbaa539d200c67e6223b5ac0f6c5fca0b534c9ba9eb834978467c03bb1a7125d225de381f5aa23990c17f29476f7dae4428c507d6954ffb2f936271d9532c2a81fa68417763a70f068f472dfb1830f8e86aefb93fb1bc0a8910dc0e123775b8fd85f6aca2c9a3f43a527fabf1f2011632e89d54b90e688e93a3be7cc0fec1e0decf95278976b2832d0a08bed6cd2bf7aae65696566f446882abb090628db5a09cbd7e54061e0acdfab3bbe2e5b7ffd7e30c7baab69d03aacaa7f0c41ececa64dd041b51e1dc55ee958e3e7cf87c19168ac783ee8455592d1c2afb642572b7fb5d48d634f52c26ef616deb27c2a9745014c303723bb248737798bf3716618ca0aa02d5d7a042d72ff755aebbfd750dd4d3003a3f9f9faa019672ead2e7471145041c876466167fb2488de7ffbee4da26105bf35cc5bd2314624cf853507999f2061faf5cf867c3405cb4d44753eaace77fc4bd2833d5083798143980879e9ae7068c245cc4783912a7bcf17099df6eda842f91c6f6fa78fb62b48f9f5472dffca4da8aa01de0282779082606a7eb40c3d4b4f1007cf68a7d63e739f4c50e61fd7a5c92b15c81f7da7528238c9c5bfe6954c4b2304c30ba12d89114bda412edb26b82e4a755abf358fbed9fbb0e920f33d1a48f8442ead476bd10398f4cd664911ce779e7a4f43627451459de445c0752652954fcd7d599eeda7bf5d3e789532116efa2747c05127194378c8b21d8597755c0e4b0b6c958bce3e9ca5ed0c34e5e1f9a2b6d255353355b129487d2dc03dadd58f315f0074036359db872284e5c0ed6490ea5bd738297fffdc4822d0662436a91ed30f1e15eb8728861b158e62c2e2230a80df833152fc13d233755a17afb8ae8df26ade1df722312e4683ea7afe12458e85bd270ecf2e3842bdd05481cf7f9144cd097ff32e349acb0627f18fc9aa23e189fa26450197dee142ca7a09fb3f292ac26e59fd605058bb7caa4aaeff5dcc979af4f639467a3a4adab48b8d9c5686a5b260b66c53f8b770eb0e49fed77f177b0267d15bc0603e1f36ef6a84a459a4ed10876343b5604c281cfc42cd234403cb0aed97951e37f41a2f4bf91d823f0cf0df06fb5e3dcfc4d6ac7b4ddd73aafe66ae13abe36f7cc72bc74a0189231c513955d15791ef3c83d5ec86084c663967e1dba70cf3913b7e9cc8f837e08f983a12e5ccdccbc0957e10d64cc711fe34270fdadfe9c1931895ae69ca7b94ced9291b0c809626bfabf4f9f26c9743d4d436ca3e4e0d26d7b42098d4ebc34cac1d1c3e3f27f6155165fb8f3a2f27ea8ddbac5e778a15f3efcd64a493603526096add92c3d5ac45306cf7e721afbac3aa20cd4652c3050c2c7b3106cb82b5af283931dd3d863d396508328842df894701d55312976c79176c44fa94da99367542e4bf77a6e62f25aca77a718d8f7a79ffa55e0926a9f88ceef87921387412e6bc75da67d6d4ef87df70001113d740ce739508da5504f11807ea2bbf9c39628950ecf8939498a1b506456b609146c42dc77dfa9fa629f2d2c3dd58b24cb36f81b578b57803f0f0222bc8f3dff9930a6cca8ddcae66301ea155cadccc56c274c4e04721401fbe521d55293e8dd23558f004974d0a6b67a4658c84a60255b01b91aef597d1153377e22d9e3e392022de20317adeff0cdf4df77f04a5c356753054167394e9ce6c925d0215a6d91c3a699abd99e7b0663cdd8b9a4c71484d51f2c55ee74e1516c7659c2d214795a071ff5d55e5faddb36cd2163423b170f890c0c56a7cfb7f45347a7a3899efc84ccaa61291e1228e3e544dbbd76b858e13d61d81a22a51f75b409ead0f0d4d5adc343f5e0fe04cb191dee6d5de9e587b4486a5d0c93a4b38ce8bcd8915d0089a371ef0696fe60b8663aac93746da297c7d03c8733f75d33c9daa287da8a63de030b86e2d0c13486569d9c3ed8b0aab389acd1d12dbf9487cb66d02338361cb7b1648b39e345faabecdae9bff533bf4250faf2e9c26705f2523a3c72e2a52819ede12e0c84586544c3bfc205c12dd3c97e3ed9f2e100e1700d66e69486d5554567e75777dc095ecef8cd49f60364bb734702da12d45766d2511ea7e7c6fbc8298df14c927172fe0b2f9d81d1bb0a278c4e14256cc8762804f47a0cad1cd4dc294b1c50b174a01aef5fa0726f5ebcc28194dbf3470d4747ca11cb67eff5cfffd3e4742f28fc3a5e98a123adf01a67cf276c5e2bc60b5887f950cc8319364f2791505522570dc93c63ac546f519f160bf238b78cb05a0103bc8975b2cbc611b5c5ba3c3a2c0a87a3fa56faf85f3f1ee84d352dd74d67bea30b0fb0f16d87958ec069cf534c072b9b9350281ebc71959be1a25d4faa24911681c707944ed94e14bdfcbf244a33a8b56b72047f87a4b40b3e3f3ec88d7244e4c685c53f55b4bb2d54f16fb68403e99edf203f9a6ff8ad57f98e21ebeb78cfcc1c42bb62029008f6c6e666f65313719e16cfbcdda27acc623be231b0650c312b92e62ba270a46dd0668c4e8a8239e9107f9f00252ba770250da0c8cd3aa61714423d130713f635c0a02c51e170fd15fe286e6d9f2aa7c241e31421569fc6b6f4440d9e7463adafbb5d061c3d17547af6818a6a1d777d30726f08a10046d71c421b1364a545969e35b65a9e81c11f99191c098a6aa8de940156db09a8ff31d595eb7ad2765a82dd8a6a94bd1b887d6d7699fb6deb19d13b8a612411f8a78cb667bcf53cc4fa3b304584715a9fd6cc794d0997367ed800b85e7be80730ebf1a6d83acb75dc83ed7c1445ac5b9402b71df27819cb641159b8e6c1e559b9bfe7679d7ee9906fc07f7586801a1ec7bcfa07555136dfd6920e818974e9ce31ffcb2aaa72bff4ae819c56f700e3dd0595f4e7c134394a100ed755c088df33aac476b64b6fd066e2f53791b9c1366c4bc79e86ef0c68eb761ffb81849398841aa56a01e8e31684d466a4add4703342a50859dacf4943e5e266600c9e84f430c92b902566c5bbe342d36d83313417509499519818c59b23805337bdda880806888f587956d75cb2b785e4a40101a81f8d3a2d523bab0caaac841ba7ca5ecdd24e81e7ff9d9f48c2c004f92ac532d4da7f2dbb895bf7d4a06dd6ef72e00971b435023938fcf3083d1f2dba5f93b2710fc13a4dbc29df8a66555916ef36828d29c80b3c8fc2ee194d5e05b79d79a257e620744db8daeea0c6e35764c21991b54ba9937bee1776aaf34ceeaa535ec7c1d7b78112ab318e57260a49114f57c011793d5b344825c1cc8370f220d4620968f9dec6ebd8d7eec801a8c6b13e599f0da26fa247e044af419e67b1fa543af9968221045eafdb7677a232f4632320e159daefba6f880409472c36d1231705f652144991f9eee53861905716865350ad359a371baf2ad9418b439c059e250ceaf68fc9417ccb2b4ecbbf68e8ada5ae38226e390efd4396b161cca8ba1188f9762a4b41d9937edaee79672d387cc520ab47c11225ecc5e6ab631602fce0fcdc31d6afd97e0701e60e2a46c02c9e2b4c1eaae651e9575c65d9a5ac8de73c096428d05a59424d5cbd02cc288044fa1df7d1439a62fdf050d493b5861547ec42075aaf26a318ba9c399c663997e66ad26a0e329770c81c152b7ec110937e9a44a8905eb861329ef26934892198228bbf813739b294dd273207e666c897be5eb803605d6c7c3f2bae316879af868ce108a33b924f81013018dd7c85a887bef52f2969951bb552d2b693bcd797de81978cafef95dc5d173af0f4274a820646c400a5dca379980b99256d6b4c0b573a9cff926e3ee40ead702c5effba0a2f545595db4ac0738380e26b40724e8b1ccea8c996e94513cdacd03eedea8fe6a9646bee8ee32954cc8abf21c82ae9923886291852ed0a89ec2e1c5df91d5a1ed2ca64b5d565b7416737233f42ebb3e7afc643e1c0a14dca31716f0612c32b4fc97ea99dda22173cd05cc85ce173809a9e21996eaac8c6e3861ec6558e5f6e759b115440b85e777d27f0b79576a41e82e2ff3d38619fb45ef9f8127c327c418443cecd0c25bcc4f9994798f7523a227a0c05025a262ee7247c4a647054d35baae0b1a04d1e555cbcf3aa4dec66122d38f12e673b812e1fb8ab2e73dab864e15e1696161cafb761d6340c594548f326573cbd81503ce09528a4bfbdbfa4f56d52b393e0ce95d216d025a643ade12f933ce91f8c38dfa7fc9b9075373ac4c33ad626e3c95d4605d38ff438fdf4ce2b8c5759d6fc7109f47fa6060a48698230fbd2c71fa0e15a29d7dbacb267321c602693667b6c6150ebdb0acc0cead1ce719cc679a5f7f49ffcd8957df34fee233a72a18af18f0bbb8b889b95cb9c4a7cd9455c5eb29c3c55c911c12ec7bddd5b1eff291f247a5c8991b8004e8c327e1898fe4ea2b51f82a50a4fa5e3d16015df5f03618d213d25e030baa21a59fc43f429f3c471b7e9b0be59ed4f82feddc888a7ca7dab25600005c6269c3cd29a598189695fbe13c46420061f8786a3a24b5680c7475a745d5a1e701c7f2c9534cce54d779548e655135bc34ca846293ccbabd0145d871c5c37d41b2f537df57e3022fc686dd771861347984c637b5f0b66223f45baeda318a79560d0068939effab6e0a40375e9be7393c04c33b33037971363207fa2011f387649183e6f2d87eb053811edeb38bb479c18622d7579cea9f7eeef130afb8407451af20d3deb31dc82624e447311583172840373159ba4f22bfb32209b73453062e26dc9076cf5af71e6349048b1819d32310c2fd81757506d8e9b6692fd810bfcae9b1da4faa609b8d92525232b57776e9a6bf10cf1faa3409495155fef22d200793527ec21176fec5bc6aa78d0f5bb00aeb737d9ed750e6199684df41435a2b7d1804161dfba32685cf2912ea97cad4160e8faea40b0d5ba6deba51bb8604701d084a73aab2bf23950a5d54ee40e3d15226b9e1686f97a1aac804bc9f9ffcc8539fca6a09c53606d9d92fe544761c8fc7d5d32687eada33771c2a9041830354e908677fd6e26b3a368609b55e819fa5a348a21f6c8077792e45d7f1f0d9eebfb83f8d7dcf905f4e651868c15772de4813a7f65d1b38f8ee20fbb85278b90ef05cd1750b1a6f002d1495a8739d116a4dd2784c4c43102d19e62b239c1486b7eb2e0ba93466c003a73b3fbfe345753f08149a6a309b335e71bfe57b27075957747a22beec6c77edc477b6ecb2ef5b545862f778f2ba0decefeefac9d31f6f79c2ae2b2a8a9a35c66a4cde333c9e138dd0e4d7c19d231e3f5a0a02077b293a88e77045d37c302750aeac842148071410a6dc6aa99d478598188125af0d09d7fa03f04b77ae4de363c4111c08e7d92a098b2ad6ca96fb82ba119d601389a55fc2bdb236fb913243ff9d88d8caaa71afc5fbd891b5b0254cae1cceef468dfd488633a9b154b06839c2699bd29d2ebe1bee20add8b82953f1683da70d77b7eaef73161e2ecfc1a71b7e7e3216b1e5c10a10860dc1a293173087824e8ddcd936812ac37912d80d9ef717e9c27b1b1a5af36829274bab16897e32656108e045c21e7395bf5de499d27344251ce5772169c49f137a07f5ee903c2d1c95f24e43b2852921cc7a0624ba0fca822e781587df576b35bfbcfeb81ed3ee050dec65744c44a1186f2ee31efce76425dfd57e6080f0aaa1d1e73f6720c63d79ce60dadce5facc2182b094466ee538fde238a05902272a67f46a9edd66cecc421c8dedaf709dd1f90139673190b8725523c26991f58fd2e5229112889b849dd91fce3f3ee75c0c1417c4623e4b9bb06b768c66da623e9a3d703222716aa098a803f6ff8b1cbc0bbf33f30510dae5f2c31323a67508e42bcb77568da78059825f2c516163a4619e9537514b7361e493dbfbae4fd2943bab535921508abc7625570c246c327cc93dc1cf6e4dcdc44d895f2bf6c7d07f379c69b78d1d0dfb4295d9866f0faf13f2421f6f0417f04e9c3677e67ac08a40bb56b1bd37c04342c20cce812243fb4abace5a6604e54301c762db15d0cf7b42ee9e61470eb92a8d773a3fc3a66f997e098601c48c2b40c38ff5b71a076f1825d9c8a4baf86882c3702a8ba16085f9eacbd836253cdcbdcff51fe569131fe642a810a027ef5b9f3bf27e5afdd9b321396ff28c6963abf3fcf39082326db008c20609771e13aa7909c1360248d0c4af1f6daee3f51ecfdd75bc66c6a755e2992f099c8086029f796b692e21636e72aa8f3a3901150fa0f5f3830b73c790b81d2a8c02f5452b8784ebedac78bb3f90445cd7b6db7536baf128548938d22a368be4bb5be6f60273ca3f98216714a587407f78c54586053f5b30e1aaf1c83e42675c0da5a8754c79c54279256a9b1527312f35cd63d25549ef43f4dddd0846d669caeffbeb0c57eb3de35abbd784a880222f0944be18972172bafa0d5431731d28688b5bea5bae320d7279e3b016d6a775b5e0c7e62093a72342b1713a7aeeacb78e180e762f5b4d3988445014318feb2f8cf192370ba26e32a6f658ac0f164eee485891222dfc56af6af93290c490a2d24f993b17b390012e52569728725fb117ecfcb53830308926fcc3cae5ae25b1b431811771840b87a46628e9191dc63830c5d89f5deabded0db0e4d1fea07ee786de31cc4da8ceddb5367c3f628b5b1654ca1485993156ac6e3ad9203d4537d4bc51b97ed3c2e87a26a881a95b5d23e23655b7d2229fcf002f12c439b521bc9c8f316ca77a5805bdcef2022a06a4143df818e59014cf7c091a88d5441b71d5310bc8182a27ecf04a0257c7b2217e2b43a7fbfb94dfcf54a2fba01f8ae5069a5bf54cf083df3ef24f243f7aaa5c8d66b0e60809732a54292673107ff33bd9188e09971ef4347acbdde939840ff080d449297e47c43bb404da2403e3751a842666c2f67a419a7f1faf4f48bf0be74fba8fad6641f1a0281eb15c31e8a0df130f48b1bf27685ae81a2ec8cc984a9817957b32e8061269ece78aa8c4f8112959a82c5dfb3da72cea6c3f82b3005644eb6842e8e0aa4afc2998f18223495752f04fc0173337b4bc5bab8ee46ee7d606cda026801ed952fda505dc748d93f2d28d9996603a9453a9fa18d14961892ee2b44b0bc1120ba156eba079e016393a102a9d7e6468126c41d7690c5adefaad3d52a36bd7b52e34f9135ea4a5ab744c044890dd0bd26ff4052ecac0443c54f96a808fde7bbeb3585b83d022144272d55918de687203d82ed6c9afc07047bedd2681a3d93ea9b7d177199432a8048367fe90ef41845d892ef09ae91d0e5ffae10ea3cf05e0292931c44347a4efce931aa1497fdd4780578db82fe4e1120eb57df77126c7426b74f41cd636d0d29c46536ea31610d002da0090b28777ac20fdf1f339f1cfd5df79bbce02064f87e7b3a6890b690393d6c7714bbb374dc698a3ffea29cdcceef5979f2d386101fd280b92c84bbf837710d84c6f0a0e9e50a8428ea4e59e6c90b4570cf0a1167888e002b6e4ce8d982fe2df168771eb8c7dd2385525147ec7e601d29d5adb351776476ededbab7502439dfa1aca2f6f34b89198756e1122a625f116924cc06a3e024d62cfebb85b0a672e4a79d92aabf5c803c593eee5747cec670a5411c40af8b9becf3f92fa8f51ce47e2071bf8696f6499a7a86fd6d2d35beb5e3cc3d209161bea004c950bda58325bc6c2e9aa18f71d63852c532dae96969720cd400150e7028636c640bab9153223b4a3853d1a54b40ed80474ab041ed647adabc1878d1e75e9ff3a7db8bb34cdcc40cf8be1f9d8fb3f5dd9cb2bc83a1560f87a1e855d4e7f814044f80c88c66886f0d4aaa8cb642cf309abeaac6e379261028e7f3470c5ed7f1ed023921a205a4f11ff2fa57b67930d2f59ea440f7080d840441c70456fa191bb8cbc91c809de44245dcb9371140966d1c8f4e819c03ec273ca2ab031f462aa93e4606a3f518df6490c8f1ce311906edd3e2822e844d948f10784f7f4865905b162476226fa6613d7050e7e3f5662d7626951048271d5ca9b55b9f71ed34f3d78546168c61276405ae6d2a3d15bb7751839cfe2fd050c85ee6becbb728ab2a33773672e5e77e2037a9945b04a54c20e0273bd5f5cf6cfb5b85a0b3db729357fb6ba5c237ff9adfd7c6e820881e30fb74ea16fbf03c2a0359978d1d2ec0deb8f9ddb9f1b000c58825a680bddab8311f3ff76365e6787313ef2d91b96f1fa082311493bddc5fda5dc4d11256bfe8779144ce0ab078ed358444fe15320a1ac190c036f4c743309b7903bf28c5739348e8ce138bf291b5700e92c3b258ed88da3f15ccb60b2dfbf278559dedf6f2dd1fd428b4fdce3dde298eb34d5942b4a782a22477426e7ca3a74bc35bbd70b4f0a11627df91942d9abfbf6f0dae1c7fb2da125df0633ae7177bce5fa80ead61045746f6d1367b42023b6f829c1b51ff067720eb60d34fa75df93857f89d7612f6ae06a962adbe163e28e3dbe45ac15dd90405eb4ce3cbf95c971e542349e08eb5ea6f9ca9138fc81f0777eebc24ccf5d25b9d6e5ea315b7fc0ccbc7bd91a34c7bbbe32677ba4f6645abd1efeed99f08d2eeb3500a92900c5ca18c6cb30cd5e142dba7c13025cb8a7d6064587e4bd5921211861a7c742db6465dff9aebf17fd1e346b003dd9b2a71c786e5a4bc7bf5456d529e5be04058a35f500e4b01be2ce847c1c33fd186f84f055f615369607332bcdc2f79226c89d4ea2f8241c4772fa53a0d65bf8ee110b664b67e033aaff42107f900cfa87f3fa6fdadc425975f8400833f5e77873e2ad9a2f100d6950c5e65d411213ce5e66cded2b06ed15eabeeb1c1106252342a13e65aa213f27d9144c5c341c23707017aa01a94d6b1a7531c5fe8ad99aec4d5a63b62f2856318d50fa33c8e1f4a3fd8d0e8f93487a897acf9cd726292e520f08752c4296804b857fbee7fadcc1b88e2d8305e9f423b5ec80c25da2411bc8a0f4086a44bcaf8836e21e05d0ac8b81701c68fe3cf0bd6da7bffacff4335eadc9a2a034da19c432435f5da825c7a13ed1ce295a658544263a88c3c761ab1ad29552275068ea8c7d0f5d7c18e8199f9d71d9594c0ba0cb68e6819c97891ca39097bb1b6f854d839b8dbb166ceb848617fb85700e8ebf61d29eb9c32b5c81e93605917e8bc93e80b47c460e6478a6afc18b53a060ce05bd9d393daa4d9eef86ed703e282a8c9860ee4429f3086658a65dee1310f0d5b6f0f5fe05f22f285c8b16cd2fa780100b01be93b522ac39163d2b80c8cbe8baee634312f7a7fca72f058205efa94ca1423029483a0b9db3f3b58efc101779aadf703fe45296f6676db8857ce356c43a22548dd819a3771e6d475a116e0e0d4beea64d23571e316883d7e30260cbf6289c6b58d909746cd4f3e624a483c217c6b4fac8ee1baa5c0bba239d5785ab16ed2a06d8808f48211ce36e4c5719e3f0a8e9db60da19cce86106055e94a9ae9d935d5c232c08ea6527c401924f822f33202b0e85e6342d0f9091cc3df1bf94b7f6234e6bfae91d4c1db6fe5235da25e7d98d68de875a4db9c980f550ec8c0cf7b38edb8eeecddfc200561f2f2599073e454798421e66b5024714ee7003475719cf95622528765b43c66c1c445b67b7891f86e527e8c4fcfe0680f89a45950d7e1ac689c012432ef20e05e27f56f9b4ce61677eacbef86fa6fbceaa252dc4016a4a2c58bfe1eb8dbdb382ff46cbfb57ce79268326852944179ee7299361318e1ba92a93e32a3ecb1ea6b4990a9c4badb2c5fd41a951e01251380de760e6bcb7ae5767fe71a0def87a445fcc4709a58760ad2099428f1c4fa434be3b1fe135e091a8d870b5847cccc7d6709756e1fbcaedeac3a44a2dc3adf59cfe8a338e3c90a2b293ed27a388d8a90501a7f149ae2d52018630930c10d9ab7c7dc45069aa88d669e75c208235d55c81dcc28858d1a9bddcfc31f7badb43c97cfb1aaf7c0263a52b0e4174077e4c9e6bc39d42728f5367954e1afcc5370961ba59dd073d4425daa63eabc36dea1db5ca9bc7afbb3ed5eebd076dd8fc895d2e0e3d5d448129e22b245dfcbe6fd3b64558a9b64e9f930df45159615881411e2ebfeff04858653baabe47b243d740568a9f030edffe97c6e6bcedfcd46dbf79d9a72deba23b32c1fdfb493359001e7b242137daf3f82e0d8b53809d12f92c3733926aba7d4cb7205fa7e6e8c7e749ab6454ee8b7261f61aea4deb27ef7b94015e5e83c03144895ecfcd03a5a3f4901b99bf7537ce734aae3c68f3535faf3d8b7ec28fec77cf8110af6687c28c6edd3dbc2d24114f247d2ecf10bd48fcf536dc0292104d1dbd6cba8657df1730b8337da283e0d309a895b0bda0881a926679a3641d9f401adf745eeeed93b229d59773980dd3e05aadb64efa080a334a9e640a42c3d73a1843fbdb8d8e22d2650f12f33e83bc821430e90a755d8fc042ce7d7dc1c85d4c23ac39634428ee153e061c0e117f5ca823e30e3b9e85fee79bcbc56cd799b3be48854f7668fd59a7a2e5ea0ae90542d535c7134861caed396da664bba211affd1cdccbde1f68c12848b7b86a0a0da4efc89d5d2a493ab2b57ab1bc43c9a851e21c5801aee0f2151f4d4ba6a487114d85ab89de560ebe3170e68eeb170dc821cabd6eff148c2b45bf449786337ef38093e7422a1afcc76d0e54953b6cce811d5a040bc5c943accd1853b28e4fdec5594b5d044c42c27ce40f770b212f1928f7b76c93fba3a5b119f0da522f9f786668ffdeeb95f617181377c5024e9ded6e08e0784069066887c9f87624f276a80cc85ad3407102e31cf71caa9706c041de5df1ccc3f6f8f50c9623b8f16ae70e6a2f8de0af5af7bbfee963dec02bbc5512acbaaed1ede532bec0305495ea262be56de516d2baa2079897a4af39759a498cad9d5651ea0d232c2b742a1f5459743e9a364ea265cae9da6649c77a0376d802af1b9f024210d6093af16fb683790722279d7766c94452769b3afb6fd82e3dcae2882a0c97578502839af23770dce244ee05658b0f8feb9c1aeb7fe72e4b177c56cf2b86fd4483a79014bd8e3e1f658134afe14b8865e47f70c657820a30726926972b375eef7629dd31580cb2b4bee7821cd8cbda8004e4ad96a4cdfbba06689400216c25fcde2a71db559a24285f94af87407762731df9106346bb3bcaf616e00146806cd8bf6233365a28ee824cc620681705d45171790c04f54a25bfa47739745cfd4c0b7b4c37ea88319e72f7311cc8494809ea7732c6eefdad20865261e0f7db68aed39eab2c55d75f2b3a27dbb8f6912ec624601ca759b0bb12609ede46fd8b32c38b715961edeaa9fac4d424b89091f9ab5c81269df27cb19349d5c73625b5662b12ef6d3598e61d039573c41d2079c0d082d50b2b83b4e478fa4b783374fdb54fee272911608020e535a2365f32b287b515f9739e9205c09eb292b258a7e10dc248784950ed961a506e005244ca3114210609a26cde7ccaea67615cdcf31f1696281a9a244cb6c3ac8894801f3b69626ffe8b8c7a6cd7e26d5a69c603f31b33fdd3e148400c2e18b6e75e36aa18eeb581fb4be5d1ce290d21ce1b2ad74f6624d3f3d07c48654458631ae44c6ad42a4522bd86a461334554c6397c67e95683f16c468b23c7fd12227195922683818659916eb2b4543d00ac51ee631c6ae1ab08ece4c2732de1f0cb09db2d0d02e62ff9d31df013f0187e2cf744f824c67f70ef2bf39c6d2ee25fcc5803a66767679dc098c32e3fba5e3364323f13734b22e12936e5304638ce250c25658cf210a0a629ef4e44e118392b1398ef5a02470d9f34e6e06ef8dfd82c7a7c154b005d84e2b709eb54fa3423bb99ec387d19d33ff991ddb0c34d39baf170400d02ab1f7b325c50571b5d4d33d78f872fca04d5207eee6eb10a96ec97441d72ea3ba1fa5bc8dd56687eba088f0f06245bf36628557419501d1e186bca4880d422dd213e22dc3fabe944a7696157c7971a5f9ea5049440e0ba6043ae21195067e24137ad1d94beca16da8982c3e91ff2bd69ad3a5897d6263ac34ba8678f06034d9123785681721e6b5ac8092cdb8cd960cddc241bcd11390a93408b193e5c1b8894dd56d460a729aecada7c17b2626b79c4a5ffd53dd0517ca0066bdd47ef72ff9db596b5a5b4e18fe62ce60ed3a7e9f38205aaa7ea3f1c9b8564ce6b9c5e13da45cdb6091943916489b3c23277d467e1a442b5ddcd79d7ad7744b1c61838971d47077a8ba6de7efa4d12972d7c9a0ba76bf9fa894d3b4fe495ec29d20506398e2f4cdad2fa3fc86105f9885bff040c9a2dc289073b1c083e11fb9a5346c7835701d70b7b221682920c3d224bc8443507ae0a1589a3c63f422648f1329313aa7270e43656212dffcb7d4141656c1f00c847d5dbf9b3208e30ce23a4f64e5da994f1b485cda49e068d6032f69ef72fdb0a50375d735d044ce2b0a587688d3cc3d3c4dbfba4affc81e33e752e4a4534f5b155cffea4fa44f387f3cb40e715832046ba7bd95e1608deb0b055e77a84608f923e9557d657e04346acf1f74a18df9fc847aadbc868dc33ca39c4fdf4b5864fbd0ccdd3021ea3c1b0fdc1928cb3d32da17a5a3f5ab49eef4121b5bc4c7e9643b2c07eb9f535983b3fc1b22728343385e8bc5c82d592d2dbf82f8d101b30a1dcaea9120992531d0ee6b3d6c28cd3bf3845c12d0c51e9ecf606856b94a5839ede3d1a5b370f7891d77394434366b2d5f07ea848dca4976d0a325e6d9edc4897f80f499962a4ecb2f31acf7ddff59e161395af841b5741c2184e974117958ae347d99df4af296078cd291d603a2cf4f8fe97c703411850b797cd5e4c586e6c12d0061b7df6bdb80e814d26477c807614be870d7efda8b6782dae2581b5f018c416925ce445a6092772453bbb5f2a55bf3a9c7b15bee5db248ecdbc5e4838f0184396a7f15ca7f28003eb473c5ca130602fd9e419566b51ea51eba0afa3604c9bf50f3d0a52527d8e1ac9af42d9a2f71bc5e1330e36d8b601363e2b3fde47d8930244b08cc03be5c8a167fd1fec3b08571d83efe9853313816e796d16b6edd9dce643e3597fe18b8ffac1d78f1651d0c528ea347976a336d7d73ff8fe7e02d3aca38eb140be7058656d893f17ab46728ef8801972510995886c74e34a811784385824c4a8c4e56c79a4286c9b7c248302de9baa5c76bc02adb5bebc2f6893459122133b61bbee205c2d00cd905cf5bdc34d382b568a54f61362f39b2ef2dd796cd99124c35582098dea1204379e92ae5bae9cfdabaf0ceaaba5aff4b7a5229d604fed3cb78ca4d8db20aac04e03094e669ab759b13a2ad1b7707ad2325a937056322f40479cb504196666ed4f885f5dc0d4e749ae1e28da65dc1246476a9e12060df6d517714889519ecd61079e73bd7a5e487b56772c7a0492a88e80a99d164ca1c287fb3983cce0cd753958a7498b5eb01ae7a437a6c80a8162b7b1e5563321a35647a131b9bfe92a113563bedbd20b290428f9979f0b867777718398af505a2a09a8536d7afe27017fe4f1e78da307e11c59ea54467733409e9455206bff0a159732cfc2d54c5bb2254f17243094e2487d94b2769503c748517ba9a566b1bfcad5c083c076b9f799f36afc10084746186b108890bbd1920e852931199033771d9f8a6bdfbb5f4d68125810dda1ffc856472395dd955d9da2031c79a4ad0cc4073e07f87053a8a8bf9e9210ecc8bf054d4ee3bed789eac930ff21e1e2b2e912b5967e0da9cab98d77a8c5bf8dd342641dec30fd6ec40e2723358cc057115bb3d61d90b1aa3d7c78bfa919f04ddf755eb8a1a7c96d83ba419fa0d0d801784b1a2512e6421848c84655cbfee0677e40720d653c72e1c2f50b92b92258814b6e32138053f3ce6daf6e374d88a8e8b35cc23242f6cf2a3aef8e2d4c1240ed514c809ca473371e5204eece62bb8d2961ef6f9700ca1342c1b8e4ef96cde615a6574ff0d70797c7170b3e7554df112f741cc81b917336ec0611d700242b563f04f20a052106d13ca78895d18295e696edb3b5c54850be5dedb1bd114078cc555cd6a6005c850749c19a9f931886a2a8980703ac70aff9f6d56387882813e0b2814b4fccf12d8b0786c5f2b41cac7d2a394757a311c63d54bd663898b0bcb07093da7b475ceb34c438f4f588040bdcb77ed12f70c851608d66eec929c1440e45248c117ea68c37fc569588e471d6edafea8099c2d0806cf321d92abb40a6bc45092faebb480354962456b3a09f001e6b00e7ebb39d2c8dd792e76237f4cade93de3e4cae5484664ee28b0d06ed347780dd119c07fbb02fede0b6e6ff3ed7115ab50773a10a534676a58d94f519da6a9ebc2977be03d5e901f356b7d776d78c61accb2f9ad1aa13d61624e3328b24fe98852107886e30f44e151ec907e61875b1401c5579362302a8ae4bf33902da7c58a7690fb502a1ce4fbbe1e9161f1e8e20cb4dfd57948929ea041dd5772ca02d3245a1f01d6471aa1d507eb2c6be3e5527186d646244f443345ea4f7c63b49dc2c49d9f54e39abab747de6fbf1c17050d5756e9d9d6844bfc4890d0631a83de89a732f8d4827abd25875ca794639011bd2043a2415b60e425d39fc37000a81c925c41dff1e338ac6a7c70adce65a87df739e4b0965d908d37ebd9fffd2c11893595175cc7e694e1c29d63373f657066feb2b64da6aee2701d3facbf93e493b5573e11ccf51f2973042c23d26af8fe1d30c2def431ad265c9f0617c17cb30d12e76d16881fe8617dfd5a3e6370fe376a0cf4052762427bf7c88e1469745c9e045fce93564f8df0b8d95b7399d2c1fc23ac70c70b526774eab75bb56bf57615070935a79287cbab1533b64012bdae164b0b68b1ed0a5ed7ff5ebc5f48558ed656be6569247172afbd37d47cf724fccd4d28b8917bf6f88303c85c96f6f9c1e35e28489f858a407961cec60cdfe0b16aad333edc3432e5c75dc18338b1f4e5c11b01119edf64a646d1ed4d509a05b0daa43779afbcb8df78c1a2bb3584acabe9c86066812d3452ced445f6aa3afb42d50fc6c839b4c476a276a02b0b4853760c137f347bf4afd1a35cc8677fc89cdb64ed0a6bfb037ada77d595a057b5414ec11f6c6f527836e60c0db580b73f46161f17ed8c58850c8dccadf60a1a3e161c1fb842d81439c4821f3cfd2fe60da35aa881a9e91101763252e9b6acf4d7231ea745d61fa592a057215c5b88a49353eef22f02fcfbb2b82a66f6d435ea24c80e8a5aefea138653ce7bf255ec0183b1e63655ca396e0fa99699c999a7592f7172fd5263706409407faf6f85a45f611336ab3b38ba70051dac651af28baa1fd6fbbeaffab539409677f4d759f326da21b81012ca82858d760cef5b533ace03e8eec69aaca0418b067b3a85596b580945326acaa17b85477250e6dc82361fed3d56770b7cf57c688f7824f2fe89098355af144e2c555bb70984788ea4c266df2c96595f0046ca3aa638e53934042c92a78a4cc83c324ee49d45751c992e454f954295030ae8f0ce597d6e5069c772623d7fc571347f8b418a6015c617e6e37912ff504ae383b27bb2a4fbc4724a73d3bb20269810e3eac735dce71f24194b539c2ecda20f311bdee7a35cda62a6f7a43574ddcca34cdf7259ff0c75dd1c9565138c20df743f783b778c8550df6df784f89641419944db38281efe63972090934a45cc42d83bcbbb02e44bb5b687801831a8d8150fbf71dbb5e529689d494c88a814304c6dc46b669c1ffd831236408a1a1b547b753ca11b19861c49f68b78e87541d8f42d58c8915ee290188272b3b6792959ccc160ff09b7c85ca62114bf4baf16f87f7d1418ab4335a5eb6f0fcd8e6a7e489d6fa9e11c02a9081f12da8726a6e19a904f5c21456197b471093e6cc9fc1c5babe709f81737d4a6cfed40479266f02f9b9ee5e2cea687d07917315438f1d36d7ed58238bb05d9c0514f04529a75faaa404422df03335edae61c9085c8b4074bcd265342e9e31b6b9e0e64c46a895906b19a8d61b5b0bc47d54f8667c9ccaffa95b4ea7549cc9b34ec4e2c18216bf072d3c49480e5d2484379819b78ce3a08672f2b06f2c51daf97aadb7cb67b618f0dd3b099950578bae95b5e2c93fffd5a9e37dc3d49ed5293d6d83ed19a23974c7fc6fef82ff8b01d4bfe237979092f126150edec1603b2c75fc7b497da84966799c3731741df9bb14643f5d9fc9b870bd299427df0e179ba7f224a75ab599f197d4de76ed234ef14639052221b23b2c0a18ac55b475d0f4bbd7e03f41053623518ccb6310d2662e6ee9eb17228dddcc393f4a98ba12da6187ee780a6fe68196a26e5d31992f4843e87d5b40aa78cfbd1d88cb7ced0067a861e4cd1e10760cb21edc9a4d37e2328e97c358555ea4d2808958be6fd6a3c372aff02c8da7cca78da6d18921b0104a4da662d42a991c16fca900d685aaaa47eca094a8993ee4e1d681d276db46be73f6b5cb803a95507ac85ec985402438e3021aadd4cfdf5c225e73564010487362b2b1b38d682863a2bc809daf556b869bfa2311f681feeb23d185b5dd0c9952ba74e1d22d69801a23fa7fb56fefae4cd6c4cdd717ede06a9bf3ab344f2a0a618d2b5d1f06d38ad10c0b56d7f507513402b88d5c631201c61b3c95e76b172f965e846ac88aa3065c8bc4bc5848804755b9433b579d73d0794e91bb818abfac01549eb8ae61749bf45f9719e40997dd56279b5857a0cc4acbc3a6766cf4925ed63511679e74528bb1170736b0a287110f0ca745827ad98e9d273862bfd42095cc89790b19b2b884d4d66589e0faa476bea4129fd80dcea3030b2a0bf21353fac811c975fa2dc8287ec0d142edfe6509a4e8ade62297fefa12d5c65106d17ba5dc24c55b33bc1c1944dc32e7980b469dced174e1d78566ee89cacf853eb39c745e8c390b94016f31e9fd0e2031794ad23a0117b37fc4db55ccfda6b08ab71ceb6c1f5fdd981a6057cf7d6a26fd1c9c81e0c64968ef9e73fa95ce585284b3ea1d833c410e2465daf4a94ecf792aa0066aea99f5f677128b84e205002367b7d9eb5bce59128f88d8b906a108e9a45d0ceb1698dec0347e870aa5680bb74bd936b7a3ba1f91206f4b7a8a905e41bf114760f7daee1a4c9a1fa139cf69a42dbddafd277fda400d52efd3d6c57399650882129cb3335d90099a5e8012d0ca7d52e629fff935fe7435abd77b07e05ec26feb82b8774136e176b707fc35bbdfd6454d0e9a155bf3a8153c308f423fd993a35c80467ae12176b6f6ee53d094104a86ef3f4d789e716a491ed044da2f9b2bad16a3985b46463438b1774ae383f59f6b344b2dd21124220acb57b64622fb0e868c52175ab9c8e4154550ad09fcd7f3cdb25ad0eee8c47b6b64350be1816e4189ca5f965e407e304315392f17ce602f367f068f378e9d370c9f530974c4c5c2a055f413ba7eb66dd0ee7f3bb4c3e75fe64c6773bd36ebfdb4eb42d93e29786ba42502ada481a395b019c61f39fb04238a5ae37ee2973a7c1df498ea82d7b62863ba0b3ffdfb4e191b1638c537c687f7538519a79132e01510f8cc71c4593718b0b318a2cdc8e747e3afd58e068a83db205e3e5c07da2ab8aa7fd0370be778502bb6f3ea9e1c804050a4e3d863e1c940363b5d1da537961d7ecb43f5cf5ab425a2a15490b44f665a6dafffe4751acc6c116a2cb61feefedb76a79b0c2f2ff9c8a6538fe2c0108925dd5421419c86edd935a1750b9f045f8ae43b94b02403dec2d67e8a968e89c3c9fa14d1fba3b078dc7fa24b5a2b1fa834060154961dc3faa87a1840150491f601d581c21bc00a31f587f16802fe27a932c5bc2f0be3b349aee3304b7803f3a7dc3681eaca7fe298a994fcafe04b94186972d58d9f014d2d42956380b2ccc6a413975ab40af4eb4fcb953d1021c4b04684a928d7e01564073bc8702fc7af5b16e1a845baa9198a15e705a94c25572147ebbf66488b5f8657ff39ffb3bbcd9f7aa61f069045d2351d4dbc9a7d830f0a02c832828eb1647bbe1a0ea6a6ce528a3d107893121dec362e7392251b52a55db39a9d2b0637c0d0d876a517e5b83c17723291b2d21d04b50e1d25fa9776a201addca1df7d4809a05b90bf984d53fe3d2729bb666a4fb2c32952c85040a0ba93db02d34bf1830b6f3bdf78f9b6202a13c1acdc615a9f1ad1862d294d981ee48fb3b807a5537ef94b1971fa67c0044b0fb84fd9d3df39dc007e03bc148eb18954f37e558736b51f2bfba495c1246efc12395da4a117a263d295f61f5ff7bf0ad99937a187d4b066ddb0f973a6fc3150e4ac33b82c0675ff607c7c73be0e128f83c7e4fc60e5ec9955f7ba3285aecc2f3e8f8a9d7d05e03714efa9b3d81b4eb2e56387e5af14764bf1cbc0cfb025ee35dbac160010a5d22713837edbb2a8b3fde4c633912b1da87a7a80a1141b3f2f04fc6a209f7f4044eb6dfac2e7378e30d07d38410e3beab74d990db243409cadee9007821c9438aeebad88d4a890924766f2457dd27a9082e28825faccf6434e1a3e354e379b51873d8f8a79458a76b9a5336d579fca57dcec4daed6c08bc4336557e3b2d431e51ff9477e1de373cb713d5f8746bcbe4615fbe19d7c72f29814ae44758a85e8a165a390c7a9328c8d189bcb78550baa3c65440f99ae4f07d1f78949713fdfc60c93293c72763d07b18ac55f4cee43e8c55d2e75439fd1c8e7fa59c4d7dc12beead25adb8099314f3dbed87ff97bb4ebd76d1617b48ce7a9e2a08f7e34d8dfd6a7d275e3a2b3d81f42550814b8eebf016a29fca289c61f25c0795a0e4d185eab47b9f2979a34d8404a0333481329e0d62c3907222204241d704f81a524034b98f4974dd541fde4d440ffa071d2fa241879eb60aabb61546512cd44efb8ae97381de7f0bbaa198e4b3c74a6e5147b7d97e95ab29d6d03856107a39536bb27631cb1c212e7816e7b4ee8c7043d8844bc227e44a52f02917f28f8837922dbce4afc5640868ed69f94e502fefb567af0be37cf941d997a2026051d5836e7dc8a07a4303311b0027ad4c0b1";
82
+ /** SLH-DSA-SHA2-256s (loadSlhDsa256), ACVP tgId 23, tcId 199. */
83
+ declare const SLHDSA256S_KAT_PK_HEX = "b2a7d53902aac9b2ce4216e8b238d801301e274eeece42b900b1451f9018365d0cf1e72f43161c09918bad4e64f99ce85c7ae665d4b992a84b6c4794b22f44f4";
84
+ declare const SLHDSA256S_KAT_MSG_HEX = "e0ffee016f82c9464154c24b3e2d0f0d5eda0dda41b8f96b95fd9d604316f38860ef12c19d51bd240b088de782385c1ed6c69778f4db81f2c18b522da6d54fcf3b44849b4ce6d3f65202b6c2abbaf7e82a433692e62fcde58b5ea770471026c2cb39a2792187620d597ea7c2c10c5168fc9a3dcc971a09ddbea623aef32d74fac478cffc23f4836810cdacef0d8c8caf0c9a9ebc0aea3a9a36c56ea5f072da066db44e4ebb5d039b5648b7d2b440a32d4c1421ce33e2ae13c68b5a278fdab0c7a0612fb0b9d8c32d69d29eb9fd012591ecfe80a1397b679d6508267f8b6c6df501b4d3d9d1902bccb55a499b7f131bec0ae694fdd0b27c733b0141e5a47888b26e1ecd19ee2f7780fb5053b5efa29ea6eecbf7141fdb13cecec1094811271c0910383e1eba0ab801fab3d9e4814a35444a520dc18299ebac3d8723a6317234d434d50024e7e9f8fb8c79ad0b885155f2673aba45fc50de115d2508b205447ba8be6135d63c9d7e0598091160aa48d2453929ebad1af33669ab3dc165ee91059eda58535a968f1b53e7d53933ba8a4e1e8bf6430be2560112bccc6658f066dad13ccbebf9675e3c7d34ce031b06f3351295b1ccc9624169c552bbb9d30d5021ebf03f26ef9ce4d057bfa64d4c1c53ce759f73a91151cb1062bb87dd38b5fc24811a206ed468d5853fc31d9473a4254d2ff46ecf31d23c0b5f138ec5222394755419f1716982c2e46ea47c4d5d2a24f181aa01cd2b503d738c8af1974d442abb117abf9796a6f731c19a1f6e46c89551aadc0a4ddfa6f013b1881861b4847e8e13c216f37bcfcd8bf7e0731b63eefba4eba51bcbd33e7d286e3b666331ee1134b5835d416d81f6c5a7dd8b5cce5e4e17eb4950c5b834117104837472947568823d4279b206e7ee3b6bd3ffe4b082ace3aefbd99a714f762f3564295bbd6299a7c13cdf7a41fc13c4e3c1152f6347d52ddf32d52e1d2abf1cbcbbaf19acd2fd8003632c86af8b15832af6c4306b33eae47dd52dbbe29d0beec28e0657803dbba8f280634d2c53030deeb8cc281881abc2122f57677bf00167b058d9b298033bf61eddb217f6fc14d53da8abe404bb469c419e5abb33da86a5985949402840b5999cd0e45e1ded616ceb8b41019599c0fa9902f34e9dd8c7033cd004576900607ea9417ec5b6df9e34ecf893faddc2759cb1b34189be5fdb1a959a3ebc214e657f861fc30b3672adda8bb1ae79f35c9e7b8d26a6ce7fe69d6d4cb53764ba2ae69b7186577b3d02c35781c06f5ccd28cfcdfff8e708e9d606de9a01";
85
+ declare const SLHDSA256S_KAT_SIG_HEX = "a72685bc923c477a21c5ef77cb26387fa0c18ec189984e9062c0c6cc48d3b2eb97708908dd8e3d3ca6ae000cff6b03a45f013dd1e386910218312b1e1870a944123510ab24f8349aab15bdf66d1dfe4b3e70a68de06c4694f487d3868c7519ae617ecd5c2d7c684227579ed8068c5c4986a099402d2d4afdebd0ff8333f13a4591e3889aea7e0bdfb0a1fea8200f46004ba8eb4e8f95b1a11acf44bf32f0e3679021b540cb56390a65668267a343da90ce2c565d6ab8a80722da2d52d1c7863835bef546c39ace546f315040883d393469539bf79f0f5e17a59ea5112ea4aaccc1b860a3d6502c9b9c7bcaf4c792b32ddbfea8f7bbdfe7a01a9a9d1db7846f2acb86c57b85ac730e9e25d52beef10d4df682d4de3a4be5a51926abf5a9dda76534eb0aa231e734ba26b050c66b2a6681da5babbe30f6df238c2cc1732222be6a1eb046f9e5507d75fb585de120a1ca994c2f0a0de4d983b07a2f909eaf7eb3b652446ee5e8980ce3a534a1d3c3aadb15538181fcab89ed817f8bd69b47d0327aa6cb89ceed1d4888a88c0891476d47fc82f0c457b25f0ea8bcf1ac8804878395e770bc3d75b7a3d29a154f4d0f1dc8572f52d1c948982d46dbae86c710ad4242d05e43193f854ce709a09f1b0d48b15b6bacf40bbcc30f34b496563b7b47159d11f414fdd096deb84c4259a4d8cb01ea416ba861b2381baceb50974017d1a6094d71141c265b5746844e1b9fb2b689886f5a869992fe06385edbce6c107eeb46bbc60641951aed9af0d535fa2b98fcdaeebfc2975e5c85e6704dff431bbd050fdce29a763f9e3dd572046bba126cb2c29778dd8f6b329cefe9395c0cac348f2d24842c0b4ee037d71124ac839b3e73c14f1a30cb8bda46e9c18cde4c3d73d8429cdf3cf26aed5ff4a300ac7a7f7461c2d2a2ca0751623b0e24bee34973ae1aa525331ccaa3da36d02f683aa528a2d5896469b4a43ccef05bcf0060bcb107fc3d553a2c5695611762b0d6772b5bd567b2e618a2a7e660d5d62cc11da663e7c7242b8f1aa4a14df2b4f4e92effd95d8a08486f29e0582fa89df2a17c2f03fcd64fcd0f1af2b73574f7ac16f1b9c58faf91b6f4dbe2073e10c11765ac99574f568f8264d8bc799e9fa858914b57c25da6a0d9012ce52ccac5b100eb975caf51eef27a4d08e077fe216f63668f5ae04ed061161edb862fe4b240a214bd268ce0f60698962b06b55c54c42fca1a6b05cf10166cacbe4fa52f2b3eeac03331d5614765a3fd48ca3e9933b6a6f4daeb9856c6008cae158216b72cd0e2abe32c8f5a0c67e8bff2345a397850b244f9b9060fc956bfd8242f5a7ec4e0df155b6962eab5d92dd12c31dc26d8586b8e2922db20215c51a83a2f31211e777f40ad636752a39d023981b9592d3dbcd998f597bc446092c4d951e80218e3b4f9e0594e92fc55c7a85deb5a60bd9949df42eea7cca7338c1c4815df39287df74b3908a83b9b65135c4567506832dd332561cd770e4420d18e1811d0048c67840e8e906d28a1767dcde08a64db398b549b134ffc6500bf603edd7bca40264eb1bfceeba25bf4e0978fd11c125e91a1445865c35483030536ab7e63552236e16dc6fb7fa2f08f3697d639cb7ce9040c4e906f24cf783ee9167399d3a2f3f2c68634597ce6f7fa469564513a233d2ac78d0b47ea7565b91e7e1f49bd055246b834ada289c2893145bcb0b72f613f441aad4e6a8ba0b63c143f25dccbaa2dd26e4662f280cef78bc38627ed92da6d474e09cb09160a9469f8d8dcae0f91de9e9e3353d2650df5d75c4ebdb58ed556c9b4f08e59f2abf82c16d96c6c8b27585016c13d1f8c5e60091decb8512f43c07ce4ae06262f814c633c7ad6697acc9ad2fa7373814345b8397226ffb471ad6c887e3a285fc486ce0387302f087a622f903847a1c532da95d98b4b6b5f79fcdd286ed0f745ea0d2f06b47f1741c0cbbe221cb539944f30e46840363bf20171fbcee1ea48430f1466df831482f29e2721e70dd5fbf9c022bb4f2423597e68290fbe25037aef5f77cb5b78c82c368f176bb32b0bf94e5f2dc84b98f08c3cba427a060ab95ef3911de19455c507d72aa6ec230e8623b79a4d5f4d26189b4a9d79972c1dc134f03afdc6cf52698f9e4416b39b47a39f7af30808935a69a72f5043831d9ca9b04b6e5c1bbe049d4ce2f7eb496ba5500f984b3038a559ddf07ddd84bd1504fc227bd75d980d4b115ac17d3f0cb9e6dafb418c357480fe7edd01095cea5b2628865ffd965bfe4ad70b5734d162576eb7021d4234b520645153cdea4a3827d28225a0a902c5d05267ae6cf281e5c01ad3a8564ec091788892a5c3d79dadbb086f150c11d9c679b3c521ac8de705124025b4704049a6fdf577ff677114b4f5591ba386efdbdd0759bc0b449c4fbd65606ca111acb82417234c2efb06411c4cf2d825411e21053fe368ddf0c12dc6565ddd5ca5e048e4f7b5bc0c052aca85ac517d293492b262f322e2186dc8726d601b2e718dc549606ce30b12980648a69207b981092adde6b49cfa8d21455d30bb7dbe948ab6b66ccbef737c72e33db91fd060f36ae0ba5828c5772a4e021dd2709929dfb5f2d64acfec54f11756593785ee5cc85a8aa914e2db0249aa05c7b17c386271243b700386c66487a6d25a914c9b62f56809d23f1d2ab9af1fe7ae9a4bb661fb817a17d6f9de5f012c2e793b5e2e3ca0cdcb392f8a9313a822bbe4bcc6123d6c88dcefbd304c60030ace7977f9b4eeade8febfbde001a21c67c1b18f5db7cfa6b6eda2dcd6c21636a6059b08ce63d819a198bb8da5e61fad26fc1ea0c914c92614266ee6e0c6fc0f353675fb36abf2241ad843dc17ad822dff3ce4ca6fdbe31078e2f5bd9ad7a4771c3ff6bded6a5f68a33acf97cea04ba5da4cca7e636a03057969b0ae38e280f23c944ea19742e17c696a4b8c816b813a2b31c68ae0e33eb1e3cb6cd472d420527df3302ac012334705106bf4e4d408ea69f6a7e4c521552fff75caf816bed8105277a0121138889da8a4cdeb120af1227dd1d96a6ff149d4aa9fc8f644505c3177cb985883a1d8695e35e701904d316210b95554894298c3448a57242aa8b130babd60c1fbbe26eef3c386f719a480ff167409b8f25538df63d7cbdc5dd5c6af0544aee3b77c0f0cd7dfa81c635ba77e4bdafa5a2d9e9f887dd22eaef09b86ace393e2e0066db85721c5497fe9fbe9276c2f5393342b0c74f1c2cde2eb7fefa186dce05f917b5e25f118616cbb165e17d407aa9187108179891cf0ba2b2059be7d16a926408abe0cca18e3efd2b44790aafb907d2ce7b55b2a66ca6564a1355501f745ba6bb0a6b609095e9838c969d69c8586b6c221988e50a750f182f4697af63118d8f377cb07754c6fdde13f10dcf92c0aad8db5ca62c0b316b2b4d97298f4b5578f319a09b14b1df3c81937afc8daaf4d85e605ccb8a8820ddc70fac0d3ad2b47492aa4f418983176604824a61c4e7ba0b0bfc358b3bc405e97bf324cc80d4c749953ec7163c2159b887b7423e95159d7da302f41e073dfe223a05fbbc93fbcb1565ec73b7b50d128c88167233345f55d1f07913b131fafd4bc4156ee72c85b8129f9331ad06e8e549c16739dceaef9d4e0f43cc30af57036ec1d0ba44b9759279d18fd3c14c1781036fded6dcb67a7616103aab3e4fa7ea50eba8393414648c0f0e15c74173fc12d93257e77aa333005b5171193fda471341ec6b51000b4ee867084853e64885a28467ba7121674ec5bdad7e274907755bf0e60813d53149362bb72b8ad2393e42e7ced237b7667c8f15d14843c2a38f74b90015ad7683e1e7dcbd8b031e4e886e4e35ae634b512cef56c0589ece8c4d72c52d8307800acbb13494417c0621836349f35194c79a38d888e1ec5c0115fb8abe48a5a745da2d17d5c67b52539e9f0e606d029a1530f5702e82226b76673c56e622b85a021e5dc81f40491b0dcb36738d9ac6981dbc5132b61937db45d91bb6ed201d1847c5206fcb332749d856e4daf7b1334c3821897eedd0317e14809953bbf7d6b55ee49fb2eee87bb6bcdd13329494b1e3caa62d5f1b888bf37993b3103623800ecd71b91400283e3dc6a1f4b045aea0f4ba3d88bfae61f5b416819465f541be7d30a69232d3e69d711daaabe77d2d2999611a5c304bf6a9e5ed95e2cce453c16be03aff624b0d2678be671059169c37fd20a9e4160db3dd4983c860ab9053d5815689df2f28d5af9140c9ff71dd80d5eac28f92b80215eb37d8a5cf48ea2dcc5dc269eab2adac267dedde9a324c94a7b37a0de0a3124ab9f6de40c52d653669800f6addac86041e95105b4da0c898c8ff43447f5d82d16c3059ad5eacc604c1b3bdcf19a12aa9a369de17a12a77bda200d1bd33d81620b6ffa626cf38223d7bc1ecd8db760c3c57098efceeeb72b4917a41a80f5901c2ec75f7feca8d135cb9d7cf1ae0673853a14065494d6060e34d0d6b937157b2ddb8aea9a3368e3ed3b4f1e7a55e1ad02c5872cbe29f60bea7f570599bc25798b2b02f97955d41d80cc217dcaca83bd0e342e1a3c78c91a0ff4baa7209ab8d85ed4058e9ef6931017c34b8bcef76e33b56a04743e9aca86b3f362be19b1720851a008ef716a13b6873c495ea0be36bfee15d97fce3816c34ed65977da33986c4a772d3e79abce25b6679509fca3e70e82304c065e21bf527256699aa1fdded0a8ad816a84b7b5e860f72141bef337415ff6b4efb20382e6f0c66f0526cc68a37859a73a545b333dafe53f1a029f4ae7a2faec510e302f926611d3415706e9694d71c8462577a33f8d98c43a2ba659124f8e7d04af5ef1b6341808592039223852610d1352a78f1da4ca2430c0449cc7faa81730e6345d834e2394017f3bbc6317469c5690f4a777b619b416a45e586fea7a4b5f16ad73b5c6b35f2e64e224b8cc4adc0aadd57d0d8a5b2ae589df6723180df269ff381b8956536dbd3415311207a760b6ecc891951119f08b6405d66f70da3a5e6f17f222398df7a758caac9c847a80a28190b684fbe73b462124acb1650c56a727cd38849ff6903110050f298b1d65a1de286546fcecdb9ebaa4550edcdb4cd5045a34d00fa015ebb49387c9dfadbd1ce67b60f853e9eaa86e5bdf47139a1d7e131e1d20e83b7858639ece0705616b054e67fbe3c82bb5e085c8755730d1b16ed32fb6ddc1cf5f737c55ff9080719b9b6efed9ae1a09337e1f28ef728376484cd3dde3cdf50bac154432f461d979abaf82bc331683b82e7bb9777cfca3d7673dd4aeb7cab163ec8fe9aec6b0ebbac1a0adb53a0e88f4d85af1bb0b26a095f96140c079d2c1a8846f59f1c42d945512cdc135244c5cff89492d5aff2a5b85794f02995c036cc77e1d172c56848897149bd8c168ac9caba973c8eafee3111317d8025e6ad6a8065d7270bdc982cc7a1efae22727a5d68d787328bfcd0880368ced30076f1c561b3d82fef77e23d2b4fa162c4fe49a42349ca8bc2f60e69bcf64a0c79336e04fd82ad3675867ac0eebb438a1f21d1a0c7f02074846e78dd7b9702e32f88791d4f721ae8e1744334a47a3655c6cbb1897eefae62965241dcc59853c13fccb619ad4151617f3b7fffb1e14ee71b0ecabb8d483f83bafc0e8f0aad2134f247aa9d13137c0efc077e8b43c97a63050118f5027fc05846db88b4f73434e6ba7b779a08dea0eccb0db60c6567c6a3d9a2ebe77a65dd61908aed3ea1a40297c75d6c5ec15574fd6526350be6270b674ec1487425560064af92084485644b472428e7a59e132f0d8d26f432adb654ba614d217aba763d3011a250627a3e5628f9656aceeaf2c87a415688cbfef863e8b5c2c4b32770261552bec0adc378f1e0da8024419d1b0c4d11db2fdefe1f56768142f64c5d362e7a3181d80214e594259083cb895509c50ac97c045f9248c4fbcaac3d593c471ae45689c9dc940893e1355c7fbd19bbc100885cbd2e7d641f4305b2485ff37f6903c72b5ec9b4c1caf32fa5f1a13b70f12130c3d7212a9461c8d891a59125cefc3fb15ebdb5fcfb5530b60bab2d1d81a597f676f189b3492698d9e02dd20f584363b57f113038f743f365d22bc429e1874df1eb9f941529ae041d0fe13492431ef8cf1f364f4cd178ce1584062db680588a536b57eaa64d80a7cbdce95f1d220da1fc1de98865db7125944472566995261ca6a3f4eaab5ba2800d78c9476e60576400baabcbfe79dacced5089a6d42831ed0cffab5054a04608e206271c10d004e04742e21e7d2a1c77e19177c1f016a02aca01331e9f2d833f89ba4ac578d9eccf8306cae881a4b451a3bb61c5a0579a612ad59021976cd41ef9ec8d70079e778afa27b1bad36cb1c10bb17a13d48594195ad11d582eba28be14be8ae7439a042a24ee6c466d09959bb02ff8fc72a5886a33495db60f98e6317e9ca8b879f3fa704ee29c81ea9d6accaf05fe30b2d0dafadeb778188c4f540fc7f1b467486896d691da6d4de6a5847dfd1eae60ca49853f9b6db845237e9c687390287fa3eb9b54da941acc2ccb06eaecdb4cc6149c357df480a1ce2d51f335e0bfb74eff839df2135aa6b567835e14584f5110f566309b8292f0d04d437d3f0617cb42408d916121930e0c8baaaf1c20c229d1b1a6dfb8fd75cc34ea7f64a615d20251ddd83a4a0b7de196579ed566fe66fd5c7c9d910fb517a9af378b5fa0715a27622ba00a0b48cd96aa427af397ebf5c75ce61d218e0f42cddf73d0fc7f4675c114979f6324cd708ca22a9c832c5630dd6e4de1d640527d23587b81820807f06abeabd43db2f2ef866882ee4af6d68f5f30c6bc28060465753804b538e2729fbe55b7b1f9191c9ed298a4b2f9072199f4d5499ddae0995b5e955862fe871fc48f392d49b77e98be8670158bfbab1e7797a3ec0f704665c62d55d1cb6b58f801c7eeb86ad5eb463019037cc4b26788d4151f26c78dfdef88f1e226b10e03c14465a593019c5c158c4568b008456bc7097490218c56d85788eb8a88f51b5fd127b695bf5d8c137a6aa38eebfd312fdf3bbf368f06ca5c9ba8c338a7b0249e6bcd9ef0cf5f556a1fcda2d665138c733bc12b5d3bbb905f49426705feeb363dce8b0c3b47aa9ce582d5aa5c7c10c0d6eb9061ac5600f456b0c821d0484249c3b7b61999d49689905f931022f0b00ffa2a3cef340703f275a07665c007be5c42e3d499246628d570af4e584d65ef14c56ef13af466a2e6b21cbe1ed8bc998d799f0cb527bb71ff3ae1849b684f228425b1fbd979acdc5966b7693f3f52a455bd221b40ba4d63eed7c64ee75c5e3e046103736e72c81f7e6f2a7f447e6bbe56fcb09fd8d5ba283023753f231156def66557a094210351927f2960cc6b84841b3f5e9920ae4ade48a41a97c112e72778f191011b116f6059c14091ae6980993a86e36fb6a1c1f362970ff6c676f63d70cbcda97b08309307f5182d62f96ea84175ff613735d8282320c62bd1e94679b3aa90c4a8847ef7e7d620bf42dd5cf983d5b5d09916434f9ccdc5392be5fb7a28a5e15849d16a4201eb7e56235e650a5af31fe609529ca0543925fb66f483d8499622733a3d4a8c078cf7ddcf4828b10addadd68f824e6835f8ba0ca44926e6ce1ae7c28265a9d75764bcdea135e994c11a6b52e0314cc4e5ef288d2ffa09f3a82b36667889fba1dea4db55762bd8185eba1ca98b0d2c8be9fd6a84285ce72205080845f4026b237d373ffb9816b5bff529cfbcd688b35ad14d0e21e38bcaa93918295eef89a899a87a9b9fad7aa2e39c57788820f0c0d6f3740b8e6f4ac3302b4c1805f28e2efe952ae3d8afb33bfce086ab9a0349a360404656461e1b65bce1e7d92dfa250a68734bdd98e3754723461adf7b8e13e6d33d8c9e87dbc0eaea4eb856b59856da1ad6afa2318b882920a8216f512ccce6bae8faadd1824c55d986d2e1174246bf975bdbd5b412fd2b9c1b9fbcc5816f6468dd8896d956b7610d6f027ee0a013f7f1fa5a73f1db06ca7b61571101dd587f46c700d93a97728cf113d51f1063f7c44e4ac78b589e970289c4a370f21406425b179df6a2a895b7dcd324332dc033b9b7f830e4f0e558a86b024a50af6f9109af9da05f322347953b31a07ec7203cfac061b4d85c5f834bf94a02ddba067503de0e68a3816e037c99a88e6fe76d9e7892235e28309dcb47e563d46ae87f6b131b1b2505596d298126ad698083561e7e2788f6d3bd2cc9687db33a1533657b03dad27621aaac5d1cf1ab33424bf24c06f3207a257506f38fd820c0a16dc69eb9b2a1c9e1d314c6183b3911149aa6bbf759c5d1106fd7341c1ec9cce34a3e13252b7219c6619f1e2d3cfda65d7278d630ef0718ee9142451923df39b8f571b0973ce2fb557d84b7becf57dee178464e735753ac764c90d1d1e21253de51dbf0a0a9833dbdff12ef840f5a7e1cddde60da2475f13f60cfe53b518ee190402cbb05dbd8f7afef69a57ef888dfffcf6d329760289a74184ddb238f6746a63ddd9a435f820b3e28a1c7585a6e71a5b3b4f4ef9db05a9c41961aada3db89add9473449cb2dc1f901fff51478782b5bac9d2c461f3634aaddb55cd3b542bf9bc5df65d5f951514fc385edce1635e2de3062dc02d30a0fa55969a1c001449e9c23c4c556312d92b1a72563e4d01615614053a495a8673caa2f9ecc318d570a205aba8e6da877c9ef234137a7d416ad4513bf6a82dba58854f513a31c9b0afda8745bc0965273c693da3398c7df2abe42cd0efb4d09c94de3244fb4c6a754739be5f9439fa7e20ecaac8939e83570277a036afdee437004d3d9865b28fba486bfcc5dcec881dc05bcc2af548ec896f9ff730febe71c366e6393602db4479f87af45efb7fcb1b022efc6b380e0d102f3f1c8c21e74299d5d7db64ff5bef68f80c82d14337444c24bb27efb19a06757c7075002160ab535f4951a63a272d4e316fc2817e8f1fcfd1b27e0fbc73f4beadb23f15b6ade27027e18eb9ce0d1acd5d347f152a3c22f565ad718c89af4d4ff3f7f1e83ba1ad73d741c61fa7cc4bd84c4a25d6f444d457a92849175f86225687475e0e0f4230d9ece6902802c64690e5540aa4ed0e85f9dbf9aa7bce254f5f3aef3ddea2af5f657001d4c42b88c6a8b211720bb15e06144498c2fb684afad63918d6196ef3a70ec89ce9951fc53c284d0358052e09963e955f68656ce10958fd5bd90337c8fe76177b5fdf995cab2b1a0d04a36450be332e95bebf1c674a40cf2d3b8356f0ebcdae1ec2e6980b426327510299b50c702c7b13da9362d8d9be250a741350cd2e671ddaca60e0ee62982bd97d8f2588eeb22b55ffc4e07e02f5f0065a0bb29bfc638397f90b86791fc352bc8881a6d7d73b188e2c48e233c83a9d9980a967e76d53cdd8bb0058f9a3816cb440fd28bf031d0868db6a68d9f610aa27d3d11cc7a5c01d89c11f29ca7c4dc32cbeac34c19b0b7dfd15007f41958aaa74f9a2dec78cbe38d5890daa8158aa01b1cb444b2e214098da29bcf7197f75b48984a4c73b8e850a1e2c96db70b1473110b38fe6ff952a12f3e1c3e0b566bc93468578a65fe253986d1712c045543dc93a517ee75505e254b4abf0324eb56ffc43865a3acc0010c4caee7b29c113243575421116e1932e96bf2d66274b88d3ea018657c3e88752ffa34ec26679c87070437455354c9634273aba1bdd024c79e1059278831d78f7add01e4e7212357b51ee3489647c1d380f11a870480c99408be6560da78699b7ecf540e4896ba84c2a89bfe0bcb93ab822aa0b2ee5a2d6cc281a9aff3fc0302e2c4926e24aec92a8b5520554cb2aa21b093303c112d36d559a3da6152a004c542f04769766869d00b9f9c22974b6c59219c77996f232bc94b5fe0bca213234d502e0881d61e1fe00a5b153af9b82c151cf47b5713da724694d04961330426e8d0328383837e19a6d9a96f8e7734290aa5591faa81c20b941aeacb2b202e5d2d5cdf2f76dc142be7f3c03f7d581c9af920f582084946d1f32812d0677509e4d7286084518d4ece233a2093a8b3317edab1bcdcae02fbe4cd3df5c03a4bf92eb0b068939e3cb13c68722796d660f4140ae057ba8694337872e0319a6f9fbdd25ef677e932565278cbf5a63b6df16756466e3c974a23798fe94f042301a4077b376de09ceecc320057d14469331a2b9ba035633f95db3ca2f353f8698398c5bbeb742bd36aec2d5964b36005efa4c1237b625c9f7dde9a76340fc0bbeb640ff51c4e54394b5825ae226f8d03a0b549b1f74f4aec0120f1e702aba44112775471afbb430159b9d45d9522f6616bbd8990c741039e3540abb9708eba955f4256c0d069bf0a36c0e9d1736f76b52120dafa029f567774ed65e9dd0b976f1e5f7016a5d7768861cc8c7e0d0e612bb3e9a0669e4bb8d8b5509d45b7b72686e85bbe7b901a58d01fbfe6b1f515180e37582f4b2393973cf7e5c11ddbfa95de2010354999177d884ea5fa648ea6212718b7d4381254dbb22ccf10be53b7788d537652292fe274f25bba079e495f3ff56f82e72b7a4dd00c3d16da5771fda3f4773f57ebffc20e6332dc78a59a62900afbd80f8e147d8b690b79d5a151b420d9469da4d2fa5ee1ca6b24103883f3d645b1c0473744a8ee5beea390ff9b7bc1e22e704338a59df285ba3b14e4c3437baa8d405cebc8ed272ceacac1f47c640b6c3cd76cd4ece8e208d6cbad0f528a786ae41cdae2f8be9e8dab509a7759803b4be4a4ed21f380991770ba17dc34e9e28720f3390a3faacf8add22afca5e55b49e367a4bfe42593bc1cf3cf35d78e4d63aedcf51edfe40a660638a1f111d4e7065388f42447d154df70b485ea0008cb909643f60bbe22a242e9fefcb594c8cd13a40908b982cb4929be4a520fbbc96c47f9400ade33c07273bad47be034a17cdb6172f9dc3044014eccfc9c3c86e2b2d18766c785b5e113880e1299fddede1c4a9e93ec15cb314712bdbdb8f583888a9d3b49ee8f910365cba8db3de928971ffbaeac7a69077740c35c391388d76bebcee9ef567d09ccfdc3430897c3a254dbdf9be919c4a861798a644fb15215335d0ce2d21143f7e0eaa4a8042eb425b69592f460915bfc99a8e70eb7e7eac6679ec0fda038e86da6d2cdaef4f301e418735c2ca7b7635833bdcb922fe3e50828c189950ba6be952c605b31436cc24a40684bbe96ac403a334e215b0b7ed04880265d21eb208114857a2c4213d7291bdbd14f5a99574c1c1c2ba02cfd9ce28b4f6ddcd5c4ceeaab229e2dea4907813d0ace24137158af474aabacf5f9be8ae00899927754f97a4ab70f8db65d5deeba66e922fdf3098adf0fc7fd7accbe93a67f19b2233375ef16377a06136818e62e43c224073a8988bccad4c667d948d68f779ebe7cc572e841375c8eb8176b8d7087a018e8b8830f9f8bb545877854bf8df2229eadfa72e4605bc3beef4311bf25d6b6f7c025c5e2a6cfa67e10a72cfedf7c4730feedf6459929d04140a8cd0d680f2029f8c479d7fa1e3559963a7c18324bb8ad5c64ddc2d102d09e3447b2957eec724286df89a9a900c406839ccb649d5791086fd4d06464c3506fbbd308f17b14953d162dc834b82eee1be68b2f4163c3bec3ccd627fe87b666dc498b7191a2c4688aed1432b260e8b014e32b8777e93d74455006e4c5f7483c6bc2f23944c3bf4c79e8c55ccd3bf47c53130dec4f2b36a8e6f77adc578154f2ff453c487867d6e32f44dc24a662c40fdba9e45fbc734b981729d5b146cb6dd107b089de37aa7e5460c0b0835365eb8f7d4f9ad5485d08812c7123f159c0f70663053d46eee1d189533df1a96d63dea92e2a18619e3ae8db2db224f05a8757c75a30d1801d32b70ccc60f1e9106df1589071bbeb71149292b41de76ad91b763c640f5ccdd1a40e3ba8752369e2cc4ab92078540da470b0c8533ed48f4cc4f6a167956b4f2fd7a4fb4ff9b1949877e5d9134efba3330d58f8f049d97d8e54fb6518388595cb7b14c82bcc5866412fada573b38acba4a8cb7110ae7dada51d43c7f798a916b0f859f0ede0255dc03e2814ce5f6c45f80142d6b4ae1f8f060ce8faa55e488278e3834f15097d3d53ad07350c54fdb07b5b68d9a923db9b4e2f1397ba474d574040bcf0363f9b2fa72357ac4cd23dd4af6cc4e3da69080839d0ce8a47d724658bc53d668b09dac3c7d39d0e72eaacb11ba8d87d9909ea53933f546be163534a0bc6e9746947aab9d875b99fb5cb5d34c11920ee2780d7b8a53e6e117d5a25b9c38e3105033a030b954dde0262e8f9e5badbc61dbc569fb65641d3631b297dfea467bf614750a99dd5e27df5f473f8dd3123f6d1ea9de902691c17962d9aea6d7a9462e4b29c97a58c7dd9fb35ce2b6a320d45c46f039d519d64e59d0fe129b481757e1d940231269297303c860e52f4eeaf8240b52138bd8691f589953e5b019f4c0ab2e84a5f7702b8a5c7c48dda73b8061ad54367fe69495f51969d2dcc1ead1c077279a02a10a5d4ad064161c5d324e918fa6a795379166c6a5b9e842c01f770a1e4cc588cb659f44fec11cdd1c4b2afe42d64dab284cd47ee7729fbbd5e8bfaefeee5f7df3faef767dd583252805480165b9ca7af52e7136f974a998541ca50b3f91456b0cf87889c05c63b8e954e4525349e1f484563b3682441a5e22af8f29f756b9a8aebae9340de41880e9ecbde44e05b97c398f6a980a92c9dcaaa536fb8e453185585620a61f48b50396a70bfd0f7e7ee629f8319376d54ea0f6b5a35b68692d970365ed5216e287ff26589690c4171240c1c64190a886d7ecb04370852bd93dd1dcb4a144780cd63517cc608aaf4242145a08cd46bb57b438e622721d6d240e49a0bc82fbfbe51f2d0fe5d8ba7e9345acd79921248792bd2caca47e4bbe933872afa488fd956271783caeae0276e05d1c68ce2e65d7a145d4d6037e26ce9a444e86cf862580bf6672d98d1aa9bc908b1f366d63d8fb96f8d7a1d8f25f6286096248a2f8342602f1b3733d827751eafa4dbc952251e2fa9f15afed6a37e8d4a6a682a38b700eb74cfbf45596da4b7ef2c063e2fd2484941ed062031c1e14a6ee634d6337c6abfcdc28113b4764540dde252f9a020a481e3e8e8a2273e0a96ee18c4f40162f6b32080a43164ebfef445747332c462c44a5e6dba8fda0eafbd4798f95ddec8e5360275bad767bf10e81614f0b2213c1a2e6ae86412a6b113a8f19ab170c114c4c92433504e322c1a6df5f7b6d4d01c190399ce3497e7fbfc31dfcdd4b930eb2df3732d6bdaa4a260c678d288ade233354345160c714b522e4cdf4a25aeb4d7b596a5c58c597e88aaa68bc52509689574886194df00d456e1b8965e11e6b76f8fbaf876f878308195af6690b319af6910579e5b7fc9198c3ea096318f0d861e9fbe04ba762f19bdcf42231e8ca9b586c0a9069da73151277a07d138f83bbd7497ee6fb309a25020efc1133ab41f55debb87aa09478b569947b1d104c17d21788e6e1660a204c1ce80845116d685a35f78bc67903b859f74e7a7d7b6e10740e6169a7e3efad87bfc989e3b33c032ff64939efac2fef26618062a5b94ad3f8326f8a25339c334f220a52024c2846e5196670c47403d2ece6335f281bbc4353df1b096fd46c7e01289a3f72f9f700c13b6ac66891835113613234fecd63a00f3eaea0af939ad713bf59233444c2193a08a357843b38d920d89c66d17a16d6a4281617701c019e018924aa315d479d4cef73a785d0e70b26fb377eb1a9cb927d3fe1c01d1b7c237cc296b6925efb856618978bf428f4f320ee779318fe097c8d009cdd06c1677b35bc9ccad7e1d13fb806b2413928b08822580e10fa4f5845c1274318f6e936c9796825edc6c6029e3c6075268c3d0e61db75441a856523a124a80f8d33d3d46e0a4b05f26f8e7648467511701b26c4a72ba97cfe0f0eadc116e73c0312f7d32f35d62628bcec54bbf6356b8db34be488c2746eb91c581ff65e334d9dd650206b28d30316343158dfccc5424893d877921f534cec32ba73f3a7c01205ade260305baba4027d355aedf0b738501b2a3c03181c399a3b180e7df46da35153f46e9cef750d34b8af1715cff9e812705b25e9ba52e24f6c3234cf3a690cfddd2cc7fbbde13f57c67aae3186f9985c204598e3706a39730ee91ae556add15a6b696d0bbe3145d3c5bda6c599e58e5d299497a18d139a7bd85bef5ea98909d453f49565ec8bb1577fc13502f99ed8c5c9b005472e5ad2e299615a2e4fbcf95aab1e0355d4d6f8e89fde0a73aa50a47cfbdd0d8afe821e8806b97fae2f3fdaacd0c2c4173decf68413b4ed6fa7551b96548756984f7f8e358661ce5e161bdd775c118b68a1f06be32e74ca4cb7bdab9c5aa524680405f92282c529ce2931b96052910460f417a617a27b2032b851e6295656904e2e6d616d03b1732b8e9bb3602370634d0309ea1b17d06b884ad4ca429c51075eb1f01c7e3a300e3bdfeaac94950b42ede019df9d34e7255e3c35db12243aee51d5ceeda3a68a52f759b6d3c0da7e63474aa10941672412bdf51e07880ad8b84d835e5fb17ecf22652b39e2d7c0cadc2f56b7e4bb8059eff77d99fee3fb615b02f3887f1faa025fba6e4f1fade7095622634a0db4b22941ea10701da30c7c556d7b8d66cf91c831d7719c826f1da73df24eecbe173fda94e46ebc6c7f2d45b2d92b2f91f83039d7ed5aedf11d1930ff137f7b0f3d4efbfc97ca4cd43ea62091fa219028891a4bfe85bedcd9994a4f0fcdc386d01d74756e271d9f252c69583b5e961fe9123c51b2512145cee7f66a3241c1d1193fc512e3e25778d641771b07119d13a03f70a079f5295cff18ad180794b8d365dcd838cdafa8c8f6bbbf48adc770fc0d2f3fab7c8b607813abd4699f87ee66220d9f208cc343c76b7869012577af9efe7422362786e4a7be313d002c4695c43ff6fea75f78f1a568ad799521d1ea1757ab77d13ae0d5580fb9f88b61848efa14847ec872b7dc7b30ba78e2108f5d3469622a49b9728687a321e40e9a5316904350b054f55010ad917f752af5cc56d5c874229e32f85282af2306c678ff35042913b28234095d946e5c8896964705c60e3f750c981bee6827c11eb848d7d77e13becb8fc34739eda264dfc49a444f403c1109ac0717fb6712ce817ca2c81044bccd9eb9f8fb2aa87a8b03b72b99b6af7ded2b3cc7b67e6f6d532463bfc35f366b1ec45db5a1fd6cb238b62d6a8c920dc688c4c4f3dfef7784eb53934bf8fb603fd93d90e41cf681076fd45630d10af49889311526c82ff7779eca13e5329efdb9200647b0013551378c5b9f8bbe72ebd439d94a00994fd5c1ec9c00505f8b3c204e0fb8d78a37dcbc1e3b7d1107fb2edf86a53d7b6dff4a3efe81c30c14a839add14408d785550fc284d55637f719a9d1b1b385369e7bb0b38fd242c069830cc0c678e9549edc74621c2a0b7ba75315e073227cfaaee702258e70b739dbd1b64c153afcf411b6febd7b66903df1969daa9d2b448bacdfb7827bfa0f73b10ea57f08f1f3f899b3a1329fc67d78c367a4e59175b4b3c9b31b520756955a32ebdff06691c4265973bf116b9a90e8a3dbdc5fcd84957bed2b3b2bc977c2707798c804d087781db91fc3d23f42881eb3df31599447c96c73a9877907109bb88a6e80867baf5ae54eeecd7107f72c62bc410f41a09ee143d994eac12f3ef7bf6cf2ee952966a789e8744c0ae986fa1188370551dcf996d3c0a1756cb7e359730c850dff1be56153c22407b7cfd0da80b07fe146aef8763629507e725d617155d23bb90e077e16c9dbf74054393e907e574b4dc9012ec53e9e29922d4dc2ce65c5822ac0f40eaf587f411cc8058cfc9d76a580184fce1361fd2891d0b5bb880ab4535ee71d95feb993a6264b986aca2870191a31fd883448da780e476a1410a1b4a961f488890534a48dde7c2e4fe5c4bc66eeb27af399efd51bc40ec74cf920d41f548f6013663af4fb3d83f9f5c5ba6d12aa8945791be190a10aa92ec30036a54e1b64e69b70da4606b037730131f8a79651aae6615bd6952085b43b60482399945562908cd4cf2a629c9d073430a16ca12ec56690e12920efeb2e6327f02d4b9c173208d3c4a943dd15886aad15da8674fafc1614778766604b4fe58704888c98f27316a748d023dc7543e3a9ab3baa6ae3c71caf3eb7c80ed5f36860e2cf5d1929f1cc9ae68c8384641ed2055a933a76be5e55b58f97525ed079d6e0885589e49d802f953be33d5903878ffb1deecbece46855293a6ebe718e9074898e424b53f8bd8b97851b5f2cb246cf0983d5d5a80c9027b7643bdf45ce6b07ebd2888c8d3b28bbc1bc67d9cb9d473f470ea4b9692a3aa20eced297bf6dec6d771015f667774d32ed6fa2d21b6e1c7fe6d77b294189bc576f5ca409d2e6e733bcd18994bd1f6fd8782cd018ab32aa8dda3c901f995adf8b475caefbc8ddd258e5f74200f8f73fbcd6192b7f01f6fee01bf8578d12e61da35ea3ba5f065513bc1abcfd46b4435aaf169a69c68d97dae2b3a35a6af9d64ad875d05b5daab6d34cab97bd9a66e3f94f52dd54faaf83ff9182c39c7b0dd4752b8607fdbd7304f2553fabc555855897099e94d6e794dbbefc1215da267b5fd22f9eb289dc019868de9da72beaeb9436afec8732e6a48b301334236c3e70ebf15f7767460e13e68f473c7b69fc5f2a6b81e6f7552d917e54ab0e8b095a70ee3f59acbc326ead62bab78617685858b12ba6cf182420008da49eba1d27e34cd5518997db8a4b7c9ed9d1d4e7534b45e193f731448805e1b592cd1db7388c68533c94b5ce3a85b78ad8a0c8e523c6ac2c80a921707746eb2f06f5bd04f27f606ecfc065108ebc40a1fe0e3d18b9b6856e32d4f44260e32289fddc465ad3cf6c8fe7d1b18324cd4550b0e6c7aed07a59c302a10470fbca074c032bd929e62bcf0a76d19d74b7882995f1e713c0fbb478d7c2f8bb846e5a4e563191250c8294cb22532e50b14ba60f0605536c479863ae00f42235239f59d4615c3ee203795cc4b50c0a6d7a7065abd9cd516a9d73ac26dff3c30f7be9d11cb362a48b06b5ac8ef8891b990c8a0aaecc41bbdd7d2f276ebed2b60497f08983d9cb156fc5486abf703a91cc2e80e46fd5e247e91d821afe6ab8ace8bce83c0c9e5a4cd592bd5589a468fdef13bd3bc527da7902bdb6b49429c2782f127fecf75827e2424206deeb5fe45573a24dcc3cb10fce7fb1c3add3d17532f9c61219bd480c5b42e0d2caed05cdd4d6ce753aaeb884ff8e1dcbfdd89733b618efc69d1c9e2a407d274d4b9a1f3c87f7858c7ca9ff10d12c023ba28fe34410cc20408ac73c5e88e0d8b5838e6ee002ea64722eb33f9f53beee85ab7406ad0f9df3bc0792d868da8084ec58e3aa834a88078768798d6d0add002812036d77b0e73dd60862f3d8c286f403f54d6fa1c61e0bdbf52bc958ef2b6bbdb2a8caf46ef45fd399ca8c9068edda753fc559b322b74123762a3dc456c24b37cc77907a9883487f69b66043ddfd24a22e5c7a4baa29a7d7a7a5f9e864c7a0c09c2f1f9c864d4188bf60d860f1e52cc4c547ecb779ec5299c5f42b31968114a631c0bcca3ae6ab51fc75b21b77dfd628e6e3544258b0014781fc1b593451420ffe1ccae5ffbc80caa3cd40cac37c92056b078940865fca7bfd7dea82015549593503e1d3beb7467eeb04288cdc4adddfbcb4b3ccddc8fec000f097d1df6b7a308a15936a6275c561b9274abc661f2eda1ae07c36818c0266e8920f8bd3887fcdf263c2d7331245072d68c93abbddb2a10b40fa00f693812940fee15a99af88e7885718313b75e6f8b356499b50f95d04a45c5ecf1a4ba12363d06e8bb73fb3098779c6b742ad63f54857c77ad57316e8f4b8dd435e203a85230fa7173a25f556e7f0942b907c248f02f7d64c61a5572e2002a24699cdf3ffed46027f1c15528af390ad66f166802479062f60ac4bb321a6f5e90586add523745ddbb5a03c83400b642ff761fcdb59c725d39d141187aba27ee9d03598a2b3deee6e3762d0ec6af20d9bc47768359e796501cbd23fa0c0565df946a1425e20e65d4a2695cbc6769d889f8f507f3d1e4be3d64724ec8ef9fc1d755883b36f87c70d1403f7910de3ef9c13520cd81cac06599d6bec70aee878a92d9a9cea3445c606c5e6de9d5bef0611ca5528a25fe6d85fd3aa20fe38e1bf648a110a84d1d9b1c3ef8fcfe17198da4c3a8a667a0cc23a616d854cf061121d35ad1b4647295f5897e3f2bc0ab2545ca6dc676e3df7ea37583d0dd67092e596b88caa767f8f3ffd43767d3c786b7bcf2b3c1b1c1d47e5a4a9693264128199ded9ee3ff17a223064db455da0a19bbbeaece68d3b51e248920296eac7751074b5bd45637c637e690a506daf89739ef753c7c731f94c83537f808a153e31382d05d171d855b5785f7da2c190de56187cdf81dbd847f3a5f6ed58293df785fa8e91439f617921db6c4b828867aa2c8f578a4b6f6c787a1082db6cfa88f9b1a85cf10d06d7e4324d125077fd5e21ae52b1406e599aa4d512e2f537d1454d54cabe59e43b4c11ca2429cfd3677f2fadbd3250aae2b36efcca65b3e460c4e17ebe17249f455d239663470e6786380038ff36f077e3d2cc8b67f34f627d1e5401b2f47b7789632d64f63338975a9a3eec6e185334bd956c3127447f17ff19b381ad7d387626c27b599c7201e69e5310b731d35c4f01391db51977d1f636963ea3ee0b341afa838b55e053a355e20d672ba83dfbd0ab83d71cde66c6f3b576514b2da8b63dcd493719dfede06a56ef76935852ee7a53b632e59789fa6a62e82000c124182da5eab1f07921c1479ee212c1f32ab6966178c7a9191ca9ebc3f7e7f55fc201578a28cbf934aca8bc2c2604365bd68c88299fdec33ef0c463a02134c577e0d60dd3e92e1b6654a1188d6630bf134368f9ccf7f804812697e7bf1079908839f980a212676562d4b39243a1999e60663947dc948cb5002fe278dcb02cecaec128262ae22ef64af458540c3a79c8aba9d4be2d4a9fc5fc6d84a7766cb60240dbc0ce29a43a3ade04c2527579f32c2270008ef7328f7a798ec24d2da4e6d18ca9f987c08835429ae3e076a16243e729a778bc6e768150595fb649d25db63926fd4534e027599f0c42870c5c6bece7a7502c21896c36a8375c4e498f86f99f376b2b8cc0d802f9e7a7dd933701ce696c5bc3c81eb735bec18ecd2a1265d08d193246840364562de80888f207e1ba568cbe861a1370618941d3634200b2b4638073c5fd940c28d93fd1a13a5ef598ec522c785aa8ca3fc3d93d1360a0c15696582a5b1cac4cd2a3bf07f7ff922efe54900232d2204b79e912ca2bcadb504504124c39e021d2b8e652bb1809b8c71f1b32fcb3a3a0c1c9e1a8bfd287e7ab58a8c983c21632f74f64635a653e8020cc2669fbef817b876d60c375b3519ccd12b448a8866fef8da0ddf546422e5c15d0960f113a691c8302722db3bca5c2bf5e26fa0284df6077a82c80b4c9f30f874128e773ed252603b966f84f03b2fd8d376aa643b8cf7163dbed8f90837daf747414576de7b0ec2d11f4e0e1e208d850412d147d9f9a6360df2858b5a940d71343763fde22dad3c68fc93a31bde45e3ac4d02a0537fd391e8e68a47da1d322d477ba1081bb38bf03a39db020f6832488be0f43447b4b6ad3bc210c7ca3392698fee6353f1ceacbea1f984734c80f360d04f754df5740b77709f229cda3fcce8a315c5f74e9b7008fbda1386250a177485355d95c851f6a87eae1092faa6e1b1425691ae5a8908a2f1b7e7f08ec2721fc7c8fac509bf8e833a9da7a43bdf4dfa8b7ced55c6912679798387ade0278fb49c8e616e069cc11c73eaceab96c702fe9edbe9b749430cad54c8c245a216635f78b238e0f58711cb918854d7514b88cb911670db0dd4edaf1aa8c02037fa240ca9a065c9f6633101f39d703c6d3648a3f7b79a7031a791c2fd6e35cadc6d325761a9d599d604ae74e383fe0b79779788a50356319daf4699a80fd51765818071c51eb00e1df4bdda6c6487055b321d51af01cf71afea3618c2e98615a2930de07af08f28408d768062ed0f23c6e695ed3545a150904c4eaf159fd1d7659076be8f860232daa2f466decaef2edb2dcd4d86a1a59bcbdff32f70986c01afd76a5ba8168c105cda5cc7c0e727e9dc4a6d0ddd8291e873f4018ebff058ae78a1c4adffb3643eacf6e8e697bf4535cd8f04b7c857ab347473cf38ce48a2e41dca7e837aac1dac8c97070e748d8de49ab26064b0d7aa28fb14bde390c59c03c363a2faf16f798f152c7e0428a830a935552af603429140f1ee42d94618da10413cb8e4bb843249909e6886758e30f5e65676737f44c96950f94305922cdfa9ead958f1a25394f36c9f8df43d0c92d8018f87cd5499b4f0308db5253059d405c75d4f2081e64eb57032df45f8779cbdd3fc51f9deac8d24c7af488cf784a937664f2e2fc8e01f523e15cab46f9d8a796e49aa906eda43815fd7df1610019d1191f623ed15e9892d33cc5b266bb0cdfe9972b620dc615de292d4d5fff6ddeebd039b45c76c93618c7da33cd699bfe4464793c0df4b282aff3819a4625d3b44220d2d6767e1c10a8335e7a897beaaa6ada8fe8d13c2e723c05aaceadbf1408e811de60fb204a16e75d82ab96f5f92b64de07014a2a6a8d5ff20922c23ff39650d1ef4b3d94cb9aba0b615bde4e1a013b089b26126fc76c4078bb925d61120262feefaa3312d9721cfbaa9fe55c06fb3ca9972d6fed5343b48713adaa4c1886926607debdff37cb9e4e6f58ccad68ce02a8c64531f13f7d3d6ca5e5b3c06aaeb6f88f6f653d68ee2255d43698bb82744de03a915bd23b6c1f7473bdecd536193bd7d45279d73fc12eb4c372d5519e6356854f0e22fa201fb91bc439d79478844aff09e861ebe0df03bcc685f061b3dd995e841af39094aeba7f36fca5b6c2c3dc1365cb637a56e009317806bb3fc9f7811cbad61a41e8a4390c456f91a178488cb5a80a155a506e4a538e7f6367243db92e156c818bc3dbfebf90ae4571e7e840b8e5fd2edeb9c30b11a92ced549fe7c577c9af54cc4ac2908dadb3201d39b01314da3b44a27c3d8e58c7eaa0025433da4a64e065a0ab5952e2e8e034a6ea62aa302b5058a73f77e5d35902f1d44c630d6dcb3d8d719f0fa46d041291b5a7f3ab917c773ca36bbd832a7b4f7504ebe66efa960ccae221e95e5147e89e183e4c24e36aa20f7fb123b539bd861896cf63a96f6a624c8b79a18c77e1739111ca8e5820111921fb260e6a48388564f2afb69aeca0a2fd0a78eb7f49193fe7238f483dedf5a778bad30af52e04cdf8e9370e6f38f23426640418651b83b8ec0598d36dc27afe060edab5762186e5b08714983a55a6c308a5c5720b1a5bfa36e93ed1e336f5cc4b2a99394bf4479436ad83f775c281fbc1383f8e9a6e36d4e5cd6c8ea6ff92a26614374bc9e479cf8a12c5971ce751a6a289d24cbeb67ceb4754f4140acfb3dd73e8c22aa0352a9999a39ba1a9b110ba2e564e84d515bdf2d49cb0b5ff4dd02eeca8974633401d762dea53af7e485e20b90812d7f868d8bc7517f1814138d6857741484791f6c497e11865f6d134b01f574adb084c21c3e0476b3c47c9674173c241470986f3864f0f8b65b7e3d13d4caffc7d2b698c3d624507150c01ccac0171f4b6849165612abdeb24cf8943b7fd80333aee377d480fa8687dd3d911c2658ae859a246c807ef3c76b0f02dfeffe7e91200dcffda87726f2453e694347605b924f21d218fbef49cb1d5cd3f97cdceb594f180f395ec44fa96006f98bc7beba43cf498ad14f706202b5acc117d2de46ca52d03bfad74dfdd361dd4f934ed6350d4510447d2c6487635f1bbb86c38c270b408eabd5229cc6fd5a9c59222e793cab9f0f3bb3f2638388c678c99147e6638c60a63dd6dfaca6e32068b18818a79d8fad836dea4df61d22370a9d0dc6900cac2be30cd872eb18acaf9f52398f0c85ec95ee928f19d942b4e542463d0165752156e6f5b296ada791be3ca5c61c891c470bd0318f995491dfe39482745b164c11ab9e58c5dc7e1046f33b0f42886a579d4a215bcbe06025580afdd3a40e5c0dd656c29892f0f1b35e04547c31de30b1fae260a14ceace655d79bc6e9ddfd3b7873eecd9f4099318a9484d7fd0379370b17943dac3ca145229e300b6124270da5291b629f9563c2b1627eef6eae1627cda13f1a7e8f12faf08f2ab2b2c8f307027e9ce84fe66f5246263c743c7123bfe9bdea822558892e32c9e625e73448050acc3f8aae244e055c5733199d0b82bbbf93f2ab7436c60d591ce4ab0565d1385e006c49fac0927ae67815c49d1009c3ccc563b9e5d6b20354271f32a398d5fbd4c9b0b14137ea9815958231fa47eb0dc0f3a01cbe82b24421b19b2d1cab1024ae1f4a10ca3507a371cb81014680ff2d650d2e270008dc5dc8810025514120602a6174410d1f715c2498c3265ff62862527c45bfdbb4696bf51c1557c6ab0aefee4bdfe9a8f1469b6e2550d331b611d84170b0359b77c7e378f3e79b906831bec8df202c8be50ad0a9e777f3d9e3854c5e3a2b1e81d152c45c1296184021b877ef33d916b73249a205450d0adba715a8dc26eef992cb7b5156ffa641debf18fb1825f33b4e79daf3f8b70a1c6639f6bb8de22fc8dac39353aea8eed357470bee526c54c909c00ecb647c823c46d0309ce179fc90f8d71926ae8b40a6cf2362167c20da97625d930a240ea4f3c547d09f66d851ab1b36be8690e304a17be8062dc1268b2fbc1f4af83ea58bca83dd9937988b8659e495ebf4408ec8d2fa191680b126d1fed860b662af8c6e274e30b1a9268f90d5ff8ac5fe959bc8c8fca459445cbd24cb7668f890ec307fafa1609b5df89c09d9f9722954c7c6a31ad0751d0cec8702bb9f79c2245d796e2b0c712d16d1f830035fa3c30f5939f8d4cbecd45374ae55b383e6e1e070fc6e092e41585b970ff844846766fb07337ebcdb34294ce2202dc129d28ddd6cf73bcb1666f03779cf76ff310062f1490b7ce36ad2448d2e3ae172109ccdb2c1aed14f91f546cfb6b171b87b65cd7f6e66bf043f609f9f64592057611357b207ce952dbb7f7d5fe49b65af84717cba14e35830b35873f35a7f9a6744792b2fef4d18a24f426c4e6e91481a1cb0cfc79e660b2e0e3984e75ea64185d1b196b7958b830b9a585e55bb84cf624d73002c5144be283de6b8713cde91bc4db1b7c57604181e7a56fbcb91890f7e7cda492cd7f03f3836ea226e7115412e8439b9855c69da780df81a2d94ddf080ec027f9dac9063d46728bacccf1b858ebf7823136d302b9225a6673575ddc64f5525f6051bcfa03197e747cc618674b109e4e8f915d067428e35acbe7b007bbd363c859c0ac78aa4e1cf8ab81b4b77e1667f759f8824385314910cbaaf6648a7a0dfac37e0361eb9914122fb4dc3f467c82534dfebfbffa4dcacda5dc5eb04f4da8cd79b1bcf0ff2b0490062ebd38793ac9fe36e7a118705cf4723a09560c812f82b811f31596fb246c4b566934acdf065a74f9ea181a04bcff31f814acd3216cca2ce1c340d2ba826b4d0bdc72dc116a06a5c65aebcf3639a0d78e16a89848be61a6b862ef32144ad97cd8b75f62fd8d681e1be58b00e0b53339ff19d6f81929b693c1f46621e0ab0e970bdcfeb71a88b9d8c139ccc92233af21baa143ce0fce068231d608382d5bf13e4fdca6c2826d317880443a0ec48e0bc77d848deac6f5600b276a3668eba0d51ff3089ae48639e2a58c0ef0d0737cd3d8206c688318b9c362c82b3a0af74622462b396423d798b0d954acd83013dd75d495dd26bacfe392683cae144dfec0662c81ddf132513e0bdc771fb11eaa6cdc7688915575ee52123cc150954ae517e29f4d128d146b0a35bbad1b682f56384eae410f61f45ae57e5698e8c14e3939b8040e83a3113f97c73c1d99e21425ac2ac68a0aff530aae26f6765c82955620fae14f8f2cadddae106c8c1a6f2e541f446bd0748d1a3d396c3983ff2715d89729d9aa9b6ccaeae06150096930d4fa526296f9e3e219b0a8e6f4a0044ef44c0dd26eedcb73a495f713c42e4eed81361fc522b4342a1a1630b771bdac1b5da4dd2f676a452a78b5ddf50364933bcbc475b62052733c69cb3540d25c8eaf00d064430c8f05ed205f4615581dcaa9c3bf4a62ece54e826329b1eb2d47c38c8d637767f92c26ddc9156a74a64eb8a2f58c450d94af360e17bc2577777c88e0ade31c44c731962c29180399d7e760d7c9f474db4d25140fb41ed76b6ad6f7511c087b7d6feda75ad717b2b9ddb235ac5712baad058ad977a7f4d830db4b2c299a731af4a03738eab87c9dbdaa10b1d4d320267c0c09fb88fbf5825cf6e978221f52b920ff675453c79537c685c3aa827354f2f1934842d0b62eb7e1bb89efd8814a9d84e69080180bcab9136c212d69bf2a34a8dd0c7f9e1218041c6d9b2d320427ccef89fa1eb6adb0008461d251a20cdeb77ccfba6d4e9796c1694a8874064e9acb2abe5ffd57edaf6a0e0062effed1943ea9956b660674b58783b11bfc91231b6ad50d9a4737cedc8d0814d15b262e61a688eccf926d360981377fc20bc59782753296004ce5773ce2739ccd81db9c63e5fc8026da31cf7ceb46ec2ae80c0058bc6ec949a5b3be17aec751c4fc89548d1e2501df81c2a3c172d0a56229ff0cb4b6cc782fb303f3661ef9ec4e65f6bb0586ed5b0f6e81120b0507214fbd30f00f9ad0ea418bae8467eaf40fb1e3f214f0ddd958f18ee912d25234f0fc4d435737312d6cf3ebdaa4b6ee6a3f3eb7d2750e181999899ba1ccef9aa46a848f5aa36dfee2ec504b677f62d32c2db8e080bbe35ccb1dcba70a621fb884d7dd4526f3f30c328b74f2ff57e1324023ca7cf4635ac2f10a9e21e57807ff24ef4d7448b00e5e243ea69f1134c96dff3b58f357d7ded38b37f054dcf84b697ec4a722dcbe266c5245c5f907465f05f00e773e80c7f1dece5fd0fcf2402eacde756855a034395e832a29373b6d3368afb86380e47091575500d4bccbd9980001546554b73aa64d88e43f5b6c7b4e20478569e3fa402b9e70e88952d9497e94d1afa72257d59f6c78d93eb22e4f3f121fe5488a53a9417ffa30ec7f7c6f56fed2dcd9064c5c83d7ddf6cded0bef9e82936944d5b607ccff663d1cdcb68a1ef5e342cdea1ae120176131510ff9a94d7bd4fe92abd49cf6cdfff938a006a1e51e595b654ed85612a188e2199d8e6457a4c2821cd25805bd01eb1765a22992c967e536f60365577c0bb1067eb3fc80efab259e363028af029c540b330a0065f8f9c74bb4406976d5b6e330adb8319822bf2675a2592327733070b7ea0586aa0673517b371710b7f6ca075b003b3f8fb2bf5e3ad4004bdf220e54e9155b1535a5e756eb3953272593c3af27d61de4e600624ad734e7446768949125d70b3a51bae9a187904b20010cb7e22235fec836e7dea95745e8881c7c895b17194cc50ba1f42faf9f7db2645526962cab7fd015cc56aced71ad353ede391beba59f00e2094894e3eef3cf8d4cd21db04f7a063989690b2ce083640a8e16772341e969b33ac6d44e17d836d63d927cb15fb918d305b700579d562874e806986bdec896fa202aff773e370e735a6e1697924123085b2b22205d12cff2381dbc9667f119735af863f134bd9a541a3b931bcf9c2b7edfe0f668a747fc3a0626fafae7a76af825268721eaf1ed415e18db5f6f802c7117a66b757ca69d8d49858c0a3ecdc7e8d22a96b3eec2ddc627ecfaa8c329572620258a910856cd7c31e88dbee07a1550e8efece3bcdfed84e96e1eb8a346371169b8e63ffac29d9d13af82211b3855353ab1a092d2f11509b99292c2ed43921749ad5888563ac4701d1bc0c3204c1a05264a66e14dbf368e07054c637d25a330c3fc3e650dbb488f2aa2c942d5bbdc60f454d2fcad4f2596eba9a0205f93c52bc745a0c6cb610e59cfc7fbc323fa4fd3eef5b4494600c0e30b3c4ee3a6e9644e3a5d8c58e3954570b34c60642057336d622eb7309ee9daa0c391ea7767aa227e7417c9a4eab7e443e994014b0a7be3a6b42ab42c705026961c672c5195fa43ac8682cf65f725c17eb3dd5b4efe00710e99c034e93de311ff784355c955d859d675ad737f45f97a514acdd8687993cd9e7d3c27ad8889e49160755ef7287d3a30094ae32cdb5693f2ede57bce79834c11ae15780ad1d9472df0e85226c079607c5d8c1fa565ec63d7bb1bfe3b0f5cdc23401b509f34f9a836475a1367a6374dd2c10a0aece92c4eeb17511886fab90634e0810fde873887a9f206ac429f3294f65eb3cfb38915f472a13e67ea1c331fdef32eed17e79b79aa8649762b4a877685cf160a955d2dc878b187d660b0de1c4d14af9d47bd3bd9a2a0e090b2714a55866d6cb18519649e3d4e000434629570ef65cf9de35f6f86fcf0b430dba33d9ce934515919a6721c6675d6040307a59c414d8d1ca05e73f735cec19c4e999829a922b276a4d3fdc2ab8911e3216bd373e7cdcee555301cc79cfc90a8fecbd51ad96ae2fc909e7f51e539371a79f19eecaf47e86cd8a92cb36ea4a7b29353f68eb0db128eca840ff40d389f49dd45c8dca7e4ea04ca6088b25c22f5dd8d96e8af10f4c5736113cffada16c254631e9219a9443f36c5e498905ab7e04bb72d49457e813499cf7cbe13b01f6702a755b8f65afb3eea570827ef788b59bf9a69f2c881664851fa699361b29860704745626a09e7cf88daae1e1187e88c34223c0ad2486c76e1ca06d746266af389147b14992264b72df4e704090143f273955343d3407353a77a1ff2e6f93f124e88415411bd0cd3682de03714a622082444f0505af3e00a5269ffbbfac4edacd74f7b235b71f43c26dbc635de8667a2586e7e35336c19c4863224169dd496befabf72b072709c46a22536d8f74b0394271c227fea7710123e0efb3e8b85e974d4a21de63a415080379cc96d26aebb0c869950802e01dac2cf38e5bcad98e9dc0ecd473d68627ba6a14b4d8fff9ec7712d35301ed8631e7f433b2f8e30c213f85aab327038fb74a0b50b56ff2082c6b474589367c2b3d7a8510b867a8230ccb54a0fa802724c777e816ac74284ea8a867632da6ad2cb6dd9f7ea296a267d84547506eaa8ed59084e8879396c2dfa402d5669e70fbd743d06cb0f33cdd9a8df18aeaf2f6c0987278c228755600f9b9ae85104c76420d0ff18b3e4e77074c2007d0a3a1b35b5bf4759d0f35c25a68be405e562bd2ce0f6ba61f4e6bb1958f7972547d20a644907d7a0c1f47ea754afbcb71d4e6d702f8df8350d813201571910ea5020af8718ca833b77c61f569df76aeed5406bd708c2ca0572703728e6ac4b9744e92baa45eb48b407d2629b5e4bdb1a67470feac58b29b948f5e389ab60971918cd9fd4d6d7bc80bc5378f3670ac20aa6f74caef781c5699798be99b2c0ae08ccffc3f237ff41053d4930ae6a5e29fd9ba31475fbea697fb9cf4e7d4637468d3ddab1c84f9907c08e075ee094e4fe9af295be5c7744306ba6d10c491df5db3a8d6bbda979af795bf61b434978c51dfc85a99fd68b8ca040cc7cde0077ac60a362ebe393e36d799d164c25e192bf5ee67e58f1b1c4242b57818f43f89cf19f925afc439cd911bdf735ee31c600a3bb0ebae132c9fbf73b949e0588d786b35ead9bb4825014f361a3deca6d59683ae434a6a118b90adb62f4cc385f4e0aea338c49106e95210aef4ff05857e03ac5c47e159b50541a697d14386f29e301c06d8f17bc632d928ff09ef80a62a9c97050395be0d887f8929746261e74012abb48b3c5ed3df60d569e228bff62e4976d6486e1efc48e0d6a96a20a5eca61bbc9053acd14ae609e550aa065f799b57483090faaec33af7c3244b70bc614cd3186e745848c8dbf125fe5d2ff68db83513a8918be4d13800bcab5a2a83dbcdc0f775c13d05380000d7fd474537522cb89e4c620a0041268151ebe32e2bbe788534317f7a78c75800bec3e8579367cf2ef43b4638421270da4078e3828564a656e102297d8ac62b543dfd8be88b06e61ac927ef728f226f0839e660322ac7206d110c209faba863edbf5f7fef1ca3dd9a4d1b8348ddfb2e1e5055a64e41f51c63744227ddd8a25d1eeb58d3dfb2a6400bcad851027a494d6ce8c192b2356f207eb99e02a3abd185064c28146f31bd021049b32448741c8d92340601adbcbd2c9a7cdf3e2e1abbabff502c55a2774d85a95a05543dbcd22e36f3d90e34b9039e824a0f65e1f541648cf944c01c6c6a211055bd1aae1c3de0a5d3404d8d9efbe2133774562fc98dce89ff7b09603f064c35b9ea072dcfb8f4abcacbd8fd0a69bab7fbf1500f82f85f32e2872704e6247cf381dad917029c3345e55f70a2b248a9411d92cac8fa3b05ceca5db6bb96cbb84e3f49daa4714c49c11603a664b97551c19fc3b7026ae62297874705ab1f4bcb17e094836ac92b880fd7b3ca8de40b1eeb42570a11007690f7f3e47fbab72406d3dedf239a7d8d9054636559948e72fec334cdd86a4310278b86249e19053f9f847037caa71ba5bdf2a6ea75adc1a1c560bb8828abb2ce288ac87958ebf32ccacec8c576eae2c9efca23ce4fb74950cd6bbc4dafe0c429adcb6f845607849f0fb88a3f1f2004a92c502c86e8fb806a48739284514ddf1b8c8e8e26ae8c95b7b35f7d90e5df0b19c4d497045a600d0365484cc2d5992fc251d7c6201dc31c8dddf29ffed8b95db438236213438a71fe059680ffd4215cf5ad218df3f0671892a75c22b1377f9b725930f05febd7d27babf5c75880f6996933d915ab99e4e2bc50e3f5f2c4246019b217c3cdfb62ee97321cae04cb8375bbf3777086676ba4391d1679066efb1f57b81d9a95ce51cb50ad518b68128924f2869142d5917a7395b9082438130a92d8d82e445045a80ba4010bc30380457bb01b214fef6acc238cfc9e8a09691a6dfc6da90f88d4dde8861ba388e18e1aee8df59134c01603301b9d87c89e28e5ab7fb7d711ec3fb0e53c37b5ae52c26fced9feec594b4dcfae027d93dd09fa9bf5e2db1d000d9d5804af270feef74b0cb3cf4ade75ef39c1eea6efc0ae2efea8e37474c293674d0fee40353ba87a56bcd3f9bda76946104b92e9f043b7e0e8bc8dc28a3bddb5f4cdf887f9c3fdd58e455068e3d0ceaa4e0196705a212e25a9af06e93f6c5be5bf8ffc4beaf2e83f516ef829ccc97eeb8c53f8eebb1c63b76abc8f77154c68ca69e0fadeeb80da1cb7c745dda61adaf2240948f058c98f7325a3c5ca0c271333c08b02ef873e73ee92e65ab74343624cdaee389d45dac1dc9a2cbdeb9506395d3347dbd5a2e2e41a0dae525fce69dcc0381271e6c1abe2780406407abfede6bfc82f19d99b58c86ec4d777a2f135420c4bc4abb4a5886b2d0eb3d93f62ae62bab075c52bfc1aee548c538cb5df4f28689b723fb0f6dd203e52bf47be1948761ffaf64de31a7a459a8119bb043e90a47c25910ab4fff793375b638b7977f16d8154e1ef77f8176340a345a6d19785f2c25b0f094e07afb5cc17e1d85b75017767d9bcc56b857a89c411e17a2e1578da153490f22319b6bd4bd0dc137809fc36cb619f13383b5f0b75588ea9a539084ec02c905aeb7db695371e03f9a4211c4f50827f8f461702549dd89035ba4a2345cadfee9db2181f47d5ddb1740ddd5187d67a90f1e36d5d706e4ac4d830736434092df6a6a20aedfe96c7d7ab218c86bfd113579df3b3f40db098b05a66e77be10e36da3072e4faed137215e78af258a82dc308bd27129a23e49d9a20b96bcb1f9fa8634f795025237a0b3ba580bfc13d85e151ee88340a8b66ecebe7a65881d7c98be45a304740c5d61aa0e193a148b3d63a052dfbb7783c59b581a3feac790e16e2e2bb4e194892f423d0b4bfda77c996a94d1ada1ea58beabc2bf22638497748dc6e6702a48e2a3e0d634a9bef648aa20afc63b66f9dd2a2b33f0d50c8c25496dddb956419c6cffda0180f27b2fda787219905b998cde17145abb4ed42b9688e06bc386467308e29b87c7b863ac2b97f5a11e02cfb3bcc1b66297de5f2214b6a56d70efd58cd05d63cfc654e1b595de6319f1bc7e6cfaec44ca84f2c8ce1b4823b5b68c5e2fe53006e5cc9ea80b140e73941b272635eefd6c6e8fc565645360498d5d5387238d1882ed2ce35954ef0df97d2af7bd0cf592bf07f1386af72feec2c9d31392ca0fe462b3e9d36b545e74178087c5f782011eeb0edb89e288e7a8ec636c5d6383acbf79b2ff481bd6e2a7e8e1d937984b5d04bbb79fff4f64d847ba6a66238cda96a9ddc6dcc074e8dce1cf9d57a4de8cf43817052d7940d6fdf5a807cfbdd8b9ec3aaf38b3795d0a5a2b8109f1aea5fd7a4bf1b2feb223ca7d14ea5ef0d94dd2f589bfc80fec1818166838241754e88c4ff041a590209e0afe093c7939e0c76e285bd02a0432497aeea66472708d314930d08467cfb02a74d93a79c79db5dd5b837c6e85e55bc6814ea907729543b74c5dd1fa096aa6b72f8bf0b851088d0eb6c1c951b1dc95aea8f4fe9ed75cf15f57d14814652be1c5d9f4bb1ca2654407c1ef772de0040317612b6a60b3d11359d0fcee938778ca660b27cc3cabf1b7a90e5e93d3efd9c29752104bc230ea00504d7915e2ce647e0671a9ad37d5d86ca54dd41fff0a964b94514ae6b43f537a47bd2edb7b324d07b09a486891652b4c45a5abf9e96934a9cddcf3995d2b0b2240e89742d21942f5f997d7133c94db9cf75206f919a315d9d4a3f6ff27031ad3390ac79e0864442c74cf4d5fdc574bac7672d272e6f14bfb571f911798ab88e13720cd74a3c6fc59f55b6b3c7d37653c6035f0e41b9ac2149430b1f868a389675083d4ec40750721000caa664b1ef05719e3ec59beb61089ac4cea07a11e4fe701abefdfddd43c3e4c7355721c90fe7a28c3d0d1f409b6ee55a22b854ee73223c57eb3513c2bbb9dda5ab439a563a2b764b72b0d4956922e30bf22ca41e87baa46a5d7c507f552f0e5d35f87f28e374e5491b30e05db2b6c2e2cce38ea51aea7e6e49216babc8bd37bd76c648263d49273a7770599865dbce9e16ccdaa8835cf4e7ecb1bc3992df51aefccdfe62c3d138dd5789a84643d5d25cbd20b0767749c9834a738c16bfc67bbc76f159085f8f241ab8218752a17a414be9bf468f9691cb0c7cde08e83e307cfe2fb25f14cc6541ba413b82fd2f90950d0e7a370d51c74c3540b05b516268d8345fb15d0808f3c2d60a768cc1beedeaed959ab5fa1ab5083ab9ae64bd060975299c853a2b8d2f6ba8c2032bfdbf164e40e984ebad1597cc371c676ba6b309ce2788f06304dcb46009c4280943c45b81b86ee0e7ef501a554192512a0e065d3a9bc797d8e4d663cc23e81ce318cee299de027869372380877b4660a846379eed2efd3c49c80fc4c44c9397c6e0b8ec35faffa7def624112b2af884cfb884fbdd99364d72110605d015b37745face096f87f6d071782e1fcc97cf9b3af84385145c1734ee52a2144ba843b7ac5df059e794c1363edef59f6d8418978fd164a5b1a3a2f8b3256556453ef2e60f8dcefa233a792e5a98abfb8daca722763997f33078330746ee1461b78bd44a5bd474e025e03b7015bcd4213a891f3e2fe9d277ee29271f0655688bbb38d4aea064eb254455f88e4930db4d5e9e6c7bff2996676f9421edc462f28cf58554d2019f33bb6fd66871727c81caf8d4bd0edac00917a8dc41102b05a314bb346fc53d62f06147bb4134b1248de5ec4649bcabae06a89720ed8f99d58243b6d55cd517acfc8f67704ffb88a35dbbeb1ef5d4e156a53ac3dc87b179a0dd1d12e8cff2343ac3e1e320179b0d10c3a1c3ff36bd38fc2114b95be42c44ccf9015fc3c8325b8db31c3e08ee541880f6cac7590a5f8128d550d90c2c3f6ad2cc048978b0dc0627eb37b47bcab25b6c615f71cf287e91f01ae4ace2989224f220d01e22ca3b1fd8e152d17e5e97b815a3ae12aad8074301e68b19bb3e6b31aebaa3a7805d0d496cb4296068a6caabf0ed776d54bb22a0ac08b73500b1b249d5a4a0b03f4f34b55c6e54e98b99d33199c0963586c196e64c8dae9ae42539899c4a882c5f0ca4cd4e5b6db8b3b216f1fac2e50fd830a4d65337a347194b0e2a7a3a7df6fc47f0c4663abb3ddb7750ef6f488067d37a65f01ba69569e771edb1a097d1fd31da4c5bccb98c80dc47a974f3bdc9eb0be01bbdf274641d4d60d762cde6b98c78d0197fa575816f804d63d2f16891eac68617a406ce404d15f9fe37e70caa669cafde8a85fad408dbe0bbcb63a69581e2753206a0a95490d895f1a3378d43c51b4933c91efba261c650f9e9ad68e2676493b3f162db760f1b52879b389f206255c00fe9ea2359b35d0fe4377f0ac53243628265855873de713a74b5d979ee3dbc1932833e10c686b41570e448a6defc298864cd4f53278f96dcbc57ce1e0e365c42a327c716ec9fa7f99eab7c5b33a27520f78f10a23d9df11f072d7be0c4571ff4086a6de4fd2e3e129f33e877dfe049aabc2d57410ac4cbf13aa38addd4867cbdba28167a0ccb8b7258303f67b4e9fc5b855ea6160ca9601a5fab6f54ba985d2ad0cc1e166f0c4aedc54f8644bff4d05b65f7c843145850ca2239d3c839c3625e6b39ee8a2cd8fb935d745586c88450d73cb91598108bc259a8af0e2dbdf78369c3bb86560ceb2546f15c5b1dced5bd037171fd512035aa1ea90ef54f9b2f1514d2d0e41568680802aac08f01654dc099a62e9d203b28268aae82ff1c9b0224578ee220caf37bc930f0817f0c9424462ba3ee73d878be0f4ec61490268cdc40d1cb173598c16fd953ec19a75878a0e74e79c858a06ded879b5760eb986fd39ea7510c31e7f6638d5e58d8c4fecbf65a0e3d215f2fd14cc872dfd4bdc6c28a96a68904dbabc8fedb2635c1fec668161bd1c5f000a028b7aaf5ef802320c6f1305e0ecc51d508f8e2a85819ac198986bc1d886c248fd3881546a8fbfa02a9d64eb26336977737ab05d0bb8bf4f4ba9541b493edc5a5131e57c4e2c109b93b38c6ea9de0e706d4feb126edcaedb8ccc3f0ef92aea85c031150d15982e1dbaa319ff2bb58e52c6cbe307e03ecc0601d726796bab689b5414a9c86b7132944ce7ecf6d19d700930a88f8da824d010ca91616b3d4a24597ff7f65ae38a3ee9018b4230cf9602bb0d42a3b78d73b6cadd3ddad78aa735e7aaa7feee08eaa513110d9f4b415b8777bb6a3c432e7cd5cfe1b267f5aec555e25db0e8418eec308731ae8421fb4d3aa3ff926a74daf0171694d3c0f80e32fe9e17dc2d4e824cd1e032e8b912b38bc5157e2257313b2be3e08e0ec25d683529ca2ec558746a07a4990ae745cb828aa787ca75d044cadaed2ade4fa936c124515c491e5ee30dc59ab7c8bb58f42c2bf0e90c817fa53aaaa4c2d70ae66681bf151a6778868cc25da51f0bb04c8c3beddcc1fe4f51b67fe603cdaeed78dc779a42c5c67b7d7cb21941b373561655fe226119bddc8f37e6a611bd6ef79abaed01cdcbc8b7b0db2e752f8ee8f9de2f2ade97d7ab2ec31df4464752a624e4bc66d170b1e9015e389f458754733886eb587a6bdc32cc4e797daaf64c36239ad18bb7b771b1baa55f1ea5ac4c9836293772d691b9f3a91cff29e98ba79ac9f14bd5e09169a2f13fab7a6f1417307cdf8eb276e61798c2bc068807318faaef3470f6b1e30aad8726c8bb8ecd14d922aaff885d1f1b09623865604f4deebf84ae44b0690930e401de291312a59b14cb627c5dad5764253315fac5cefa789f7e58af809fc5d34bfac5ab430e2d27b07f449edb740f2aafea71b7ff62431517c8b48d5b4df83f1012012a89664472797a2efd2267988dbb91b31f7c1bd2ed68933b041043d29582320c951d23e5b09f6ac2d6229eab85bd48f12f2fbc833e99286db807e981c8944e460c1c82658bfd7d61496f64a5a84d573777b2ccd98b6e62118cedff9667c4618930d0d756b82ed0eec9917620fc8af91e9b77ec68981123c65a01300c2b414b1e354e196f253c2c8da89f4bf794f6d90fae5e6d222b26f8cb84190869541dd8b57c3b0b4755749caf452fa7f0e938ef3b89878c5993f5f6609844c662d6da6aa916d94f3a61e445dfc2df6d7e958f430642770551215bdce4788e88e376e63bf5899ab333a615e42c80feab13b6a6cd560f500e15dda7861e349fde1fbaa65474e9573338293062f83f34d09c54bfe92c696dca74f2832f87cff72060053cb8212767915e969fc3aa647357021119961dc72583640ec49990453d89df538f6cd8bd6a0a438cf0a921331b1476dc927664c91e0b6f4496418bb56b4e079bab992bb4e6a3745e69cf81ce46e8767ef6283a8252a6625d18c6176a92e261513b2d7e2c92e702a5bf34886c98b6195fd670da045e409f19714a7d0c2d6926da58368f717e85ac8424be9757bc3f83232462cafc6ffb95182f5e9cda7d7a80d895a5de7b087d293b25ec73a669d81f082cf5da2f4a32f00200ac2b0af5ea27c265f58cd60550c914487e58eaee348eddf17bffeb7e98d7129f489b8667b7c18a0c1350b63edd66951bf3be6da68100df79261250daebbd16e929de1d1c312aecf2f1237c68dc9cc9b81a1147e4a2a37347ecde60eb19e950aa9c2b1180e4de9d1c4d40d0cf543c0125a924b50496d0732a214b03bd392d1927b7ba5500153c7443fa5d12d2e584f60befa06a7df5b7ba7ba9e3e3cf922a44f6e17ace701897ce8a384ecb2831a26a5fa1ec4e1cdd08ed97c10ac5b110293c79d9a6d94d9483884eeab08d425225f3ad0b1eeddbbd2a8afb9924b2be2ca6fc9c0cac8178908a27eb936a2fcfe51858a5646bd92db4929fe70aa3cda7824f8197645bb04525c0af958cc31f3a0383a663d17024658561ac1771f9a7f0678024f64094b6e0b7ccd980fb3ed3bd92c0889ea71cbd398b40c342fb635aae128c153b357e1797774c246442b1655904f9c15fc7d0a9a3d6d54c1b394c60240e5ab7a34f5458f5f637a652d5f98a8fd0fc6f5a76ee484eede5299582f9e494cc44e07fab974b6f346d95038f6a24effc2b7fc40895e07dca345fb3b176cb96f6a41b4784ee66ad0efab9bc923ba9ba3cb4baf9b21f76d52482f5286b36b90ab64136e99210768f50a8c76d39ee589023124298ec77ec64f56b35f04e4c9ceac9324249014e6ce6afd0ebae66f6f76431ad440b718227812142449c89c1785fe974192cc4b2a7f96058b8c8d6075fb1b38bb2bc7b3661b3a037c0c503bb3c3d75191beaf3365af9cca59f512f618afda11017227ad8170e32d328fac60d7aaebb71d8dea96bb5ca7924bec38c39fc59c44b4563304e3d878c8ab7ab3a22c3aff4d86368a27fb3a529bebbd520bf54180b35c55970abc88685c47eb093af85a569b3aa6d6c3b4d077c5bde459a64408dc5f0d6c30980aebefbf3d32541d6afa392992530c8bb440a9d3530bb79cf5b54c0eb6be3a232ce24c13cc10b3398ea217f5b8bc86535351a434a50e3c7b837516583021054381d706103e4f2ece9699b5130a807c002e5c420de9841b10267ee280326ed3d8373c99e3de8d7e525a0ed42f68bef4fc0a2a6229f6e0c4ad580dfcbf9170da3ef512cb549474abc3718807331a342a0e819731302ec719aca8bbac0999cda352121679e3ee622db28b65f5fba96b74c0576b8153373d129ca3e63bb0aae7bff2129e9704fe9ccb70802ca4eb9fff5914c298978a855234eb73a9912ef417d1a4aea392b868beb250949bcb640f3468d0ec078277dab2d162a43acafc17b53b19925c309a10589fb78d7112514fe75ced48cac379278ea858b7624a5cf6a14ff8d10e0438e5861c3588a1eb38d714301383e5b3c79174106a845d332dedd24d37e573c23e8ccd57289323619a93fc063e8b096bf007ec8799a9b18d235dedc6aa1e1e27fd8d27d270a784d825f7f8d80a085ef3768a1579a37165bd65de4f567de9ba550ef08c3190a2b5595ac8d3701fe9ddc4cee1fcd9fe346925c955ad2968aec9d88ed3b4b6a4d2adb2e7769afb8634dd655cf15b1e29697f930a442c75c84ae99e45f55c79d1d45e2108a42ea8ca57a15d55ed2f6dd0f931b9e79ae354f16431ccc6970ae7587464fd7525fbc1628d087109aa341d50d5a146532e56971e067a73ddf6f47ca3866d3a724b82bf8442db7020a6b9c7a79668400d8c783ed5acfb92cff2270f51eca821fb895a4fffda48b91ea1845360143a2dcac8f9d06be003e6229226937121678a019d0b11d9d96481e5d09fabe134c2ee60024fa9e12ce5112a29ba162874630e31beb68d97ac591bb8416ec4ab40442644885da49f98b5c4803a15df0b5b63d43cc29a1a1dc3ab7a940716ea376f8237db8eb6028c954b767f363f9495e8f280e703ea627316b63285bcbff8aab980ab614b4bf6fce950f844e9ccfb212b691266632b14e6ac88ae0251a1ee2b581047e631afa39cb32764c8ee329c9ba1f375a03ff5d1bffb08f7482b7e83d92d3567221b3b37eca3d956f5d8d7cb4ecff7e2d2ada24157d27c0ca0cc7a6dfeb4d70f94245a63e8db528a78c6b1f5add3daf3f2d014b811010032a109ad133d425fac69d01b4608386812ec679d5309db10bd76a7d381f750691f92f2720345d73db6a33a5c9c0f0c6a0416fbe31f70bf37f4361ff5383351a09992424d8d44649caec0802c3850485493c37b3cbdcb33badffa997e27607dbce8a55d8ad9742305764215ffc25074a3ddb092aac3f1df7e85d809f29358ed457889534b7847bf76914297ec9807920146ae32e7458035c56c2d7ef5a481094ba781835563b37165f6d10d121b76411f734557584103a1451e1d1ffd0bc07f4ce3492eec66f579d23d9f1e3440288abf5f5465d1ec18cbfbe9a70ba2ea6f52e9b386b10b3eb7b70a800499a2f7c3bdf842bb44673f8401a6b21d5af641cb4e609dd3c0cb4f69a26600c8811aa3fc9a5ff28e38d2048131412a888b7ab08ae50b7f816cfeca576105bd7848f2649370cc6d9b44ba2a8149527ff8e23197c47c8bfedb2213204235409fdec0c5b8884f6aa8abb0a90b0849fceba0ea18e6917823185467c332b0180c638403ee538bc3c68cc168fb6808fa4cbdec82f3e3e2700ff432ad1d68ead6c7393133c0d800d0694364fffeec99e874fe5f1896a07be8f2e65178212bb3b30be04cd82480f0e67e40cd96384c828b19a336d3f879aed66ffd86e6876da0c405591c2b127ccf75543896d85684e09fa01fe1c104e1a036b8567849bf23174c0a9d39087a7bf39a26dd65e4f5ed41833df47a9b3f0ac3b7d78a1e807da25da29cbcc1269d12a26913d03e73b2d4815fc4eab633fbdc3da0268f0d72dad0bb1f42761412b430355ca23dcc1a349a741dac870d52b7d2423e66a43394d9ce071eef492ee87e3948f27b40f3ac1ffd94bb9bf8987386800a33ccb32794b005225a93e7166350603b5d78df797d517b149b1b520787984a4ca6404965c4bb20ef1d2d4bcff92aee1210998e3fa4cb9ada98d193bcea4ad05f01784910cec305fc7e0fe9afe2f42e501e40e12d1e08e748a4564e7d33eb0cdaf52ad0c9a401af7242a10660685bb7ba9a2f4fe9b9ab95ae7672a4d7e87902e035b96fc9ee997402ffbbea7fdb896332a4ff67ef9dc2d111fb5c275f0a58fe7aca85a3a23632a3ee3edec96fcc4668b1d795c6ccf7b58442eac07300e29900b8db6e4ff277eb17ab59c099dfef3a9d9fcc2e2bbf707ab3d13643dfb7f7977cb06f1309b5c245e76e0db75c5cd2818a58c1e497dd00e76f0409d2cff25f035a03db6a4c113d382438c9a09646c2469a27ab0ad6ffa625748685cdf57d38ac7ee2b0bf55e39c3d9deb3c65765dc084c81bdb6510cac1be81c2b1b63f78e7c3bb4af01e45485d3060765457fb44a5640175cec8f95796d7bea81c66257429f7b8484eb9b945a538423517756bb948f1690aba6a1a6ec33ec96fdd5d1f4674c8fdbe46723ec30342685444dd62c527f00bf4bae0f9f5c9809ac2c4f7a9355f38647967835f04dcbb942a3f8054b6cf0793347f8d6510e369be237a89c899564fbbb1008a4ee51c8888e4bc5ec615f09f3709fe8915d311e4fcff087020f4c647639a29955ba349cdf309fa85fbd8ef3acf931a330d57fd51dd3164ed444062bafb350ff1a2cbdb68f0d065c787ff0662ca4133c228e98171a1188356b6291e29309f3f5a137b51b095f9955fe32f9e27131efdf995be6bc8b2ce199afa13d9879a9317faf9f16e307bcdbc549a7a1404d8a1f0ebf2fa8e3a4ce6473258a37898673c5033dfc04c0366ffede7b4335b4d776f5dc2a35e17e614cadec376461f11df2312b07fc5fbbfd524a6e7ea8a1469bbab45697db1f15eff40b0bc9a0c919853340966389c49a713285650066654f3207902afd9dadf06c4b5714c553840cd3ed4335fe17f4c2027965339a76635efa0c63035bf5edb6e760c20f14b66cdcaab4f8154cde371be4d60d45b28188b545600e7d53b2a8686d2130811b7f5259032354962af56d0a1f0c612e30d4f39781da020ab7a6102e8cf673089beb361be242f8fc92225f456b608a01ddcb32c3cbc6e806acdd37725ecc121eeab6d0164178d337afb530b68f3052dc17e669bb0d2352b84bae41ba085e60199d4863c6dc3c97fd7d574f69246dd16458fd0b836250e59a0e247ce80179ef6d2a59d2b0142d3bfd0d73597ecacf716e6e19c70ffefaea694290faf969af95e9e8c9d7224d19ea65092ede86315a4b1dfb3a17aa16a7073dbe68cae25bbfebf338e15452bb7331fbfa90a82170a9ea6ad8d8d0bd22470b52b304e5b51f5ca550fcc97a5f276880f20ac253799acdd40d685415c1d5d3bccfa9ba2fdad2a1199eb662536d210d4bf9c9c82f299a2cd0a1bbeed3c20ad2127f8791f09355876780eec985c2f9c9cd8f2d90291b88212d06b11e439a05fce2f8c65e8b1fe05eb845bc5163411a53a7829f87971ad454a295a2f407c730aabac55ad9417ea05b82e51d3642220e406f48125105ce37861b3239320d0c62e5ae18db9d4907dfdc4931f3066bf519b87617b27daca0217ae78f700181eb65acbb0682db8d5aa68fa6216d8ee51be3e42dc17f23ccd1292812727869d60f7a86b3f7a7a3d0d677bf9326ac1aab7cc043c0eaff1337f65f52bc60077c7cac0fa10c2560fcf781bc8e47686078d8f8c91d5739d969737ef302166cc540c9b580a977bcaceecda31a4525d9c3729130ad48485737ca29fc88353511faf09ab59a930656f87c02891c17aaa6929e1352202a5d6c3b70b3a10bea31a3c314ed3851595faf09a2f222d011e1e136d74a2142b05e096d70a3fb79ffdcc9838126e2a05a5255375899c0d40bd2191b7dce588e6cfe471d62c34a4973ffeb5359e55a540bb08c1e47959884cb2ae9f77ccde39a05a90d7756c2e5234dcda97663fd405abfeba2f61c6e7171757f10e362e60bc56207145568e6c917309382a75c50d6fea0b79f1cb25155cd3e354bb322105487edd1ded510d27c2846a9a68350f338a9cbd2da0dfb4b8b2404e5e7f653314cd9aefdfb7892340915607bb31709169e28e9e5df7a28778b8cc4214f5df24f6cfeb4f13ad63eef134888e9b608240db6ac6b3d1d5daea55bbf08cf2f090fd23d9874309949cc931e55550e864a7a0d63576925412864d870a397c4ef6d1ba6bbe4742b86f23899f5abd52bd34510ccd9bcfe47843cd7d3ff18691231502b5804d00c37f9769e4681875634aa20bef45e0c1ea4acf7688eba9eff330702b962ae08fd37cc6de5a5735b6fb00ad04fd35f499147f7a0af065b22a519b9cc6a7f3fafd7f16a3304cf20e9eae8bb3b120b8cbb7e167a911c37f944be1f732193a2095bf483b04b97931a974e3c8085d9014b143b1a02cc732db663bff7331e2f73f799ce0a9e64bde81c2ea13f910874d8a1742201811e6f9d26ca1f7b942128dae01ac26665e823a98bbf09e52a818d374223cb11ac6a0bf28f783489b68e133a974294e4b9ea1c01dd89ee1c14199e95f3b414afc41802c0615cce52f53559bfa81c16fd7c7d031c96ea4c26a57712e4ce6f4b37b143a88f55c21d6320456353e6fec85e5e9a8df2a9698888f72ee01bb72e57e21f52e48cb31f22376f08e5b64aab8e4e26c1382ea1cb41a1d88c56ad2b2a97e8e9c354721000c818412ccc4c44d8ba012ae4c957cc42250bdd5856cfc2e7577f8315c79936d535dce4db45f774437581ae9486def5d3d8527e93434567573ec04adeaf11d0f52ab7de962866b8a817fb01c4b5485b08217c39c955c1c121e5cce5e2fe6a4ea479ac6f06b4a85f413563d5226a7df4d8c8c00386d6018cd6d0c8cbf27dfaac42d26bfc82cbd50b37a91b32db689b7afa317d03c0b6039fd408d27172f78f3a9efa56b445ddb74e6c313366458957881b8462c611ab49f7230620bfb87efee37fb5fa14fcd27b20a34cd5efba6a719cf87cc649b6c4548278141c337f48cd2051d8f9daca634476b9119e1b8df0667e542af42e82d39cff46c47949db490aa05552543cb1d36c4fa74818b6724e0d5627ea899fa5aee0bc66eb4103c8179f0d4921962457d890f2c6b66a71120f0296f447458538245e6cac5388b761f46eb02b2ae1e09aa5b91001719a23eb3dc897fed70421258ab467db9ee0df593b967488c6542ab65e0ed207846bef7b9361d302ba4874741ecfad01a208a6b3911491e1cf3b62eba5603bc781b854be588989b2e63efdade4006c54ed7d0eaabbf17ffd24c37ea0bff043cdadc0c0172454e696d126420533a7d7210e5b19a9661f62494b8773f450b866bdccc63a36fb42c5a5ab04c236820b46de4f242b297b631b17d4c4fad7cde343385923724c6a1e13fd286b261e96dfa01e55ec724f1dce598112408b5e930cb7f461776aca6962866d2f54e40076619784f213c2d582b63a88408d05e19abc120d1714bac2dd75836c3b38aed9f88f922d9dc7654f878cc31c0f9f9a00c6b252356cf26977c0a127e3c50d6c101ed8c5a6fe1a122e189c911776ca1b50dc55883d4cd62a96a4958f90c9486e979a2ad0e5654c95ea18ab08d1f295d7e006a7babac58a186fc5f24d868e81a63cd46996fe5794857aa4e39e504c855e03d054c406ce1df752042a04c00297edc5c8c34a59ecc8d1968ec07e2754f1b0020e92970c57bae78c5b20c3f0e18aed20194e34069b147ff33358563d70ae9581e45b71c84242f1c77690e0fc8c09c7a3f3d62e84db6500332b4e64f3126fed6a070fa2d084394b7447b5f1f206be6a29e3fe4cc501d11d0746f5d0977fb32a48490aa612abad360f40faced42a420b8addfbd4b4d9f6144e6093a9100fbf24ca85b923f9ae7febd60f5bb1ab5a7bd63c396a4d464d420e14a8091772fbf1220081bd358a0c80ab99a07344a82bd2c273eac9d7123bea7725b3e1686ee58bee7e82b8ed3850345911fae7b88c48ba0b3c2d01d0f3036f79c176668ae17418c287afdfda207f161a57c17fd05c0f40d8425629782c1730bfd543aebb82541d429eda3b06b7705740a656790b99b8ae8f9feb8d40dcb782f250b0eb35ab22fe5424a31cbac901070a8f71a7e2942bc6ee28c494d872f69e5e0e61c31b5b949686cdee2ca739b9a8fc76a21882f1ed14fd3c10e1bfdf7b4d0a881f1b0d244770aab5b1ed7a901e0f1e5535281db14db5aee7585f61af9470446ce8a702a25ac343bf69355e3b6fbbeb84b1a7ee5c45ce48dd873c0c2b673e98de83027ae09f2caaa58385af98450dfa60322b78b3301717ea454421600d548a3e06ca5256871542493e180e6f2a46b9ea089ffbca830c41b28b888dd5940ca2f0c860cfacdc699d8ae6788ae9f25cd46dcfc3b54e78d10e242a57";
86
+ //#endregion
39
87
  //#region src/sqisign.d.ts
40
88
  declare function loadSqisignLvl1(): Promise<IFnDsa>;
41
89
  declare function loadSqisignLvl3(): Promise<IFnDsa>;
@@ -43,9 +91,9 @@ declare function loadSqisignLvl5(): Promise<IFnDsa>;
43
91
  //#endregion
44
92
  //#region src/sqisign-kat-lvl1.d.ts
45
93
  /**
46
- * NIST-style KAT vector for SQIsign level 1 (count = 0) from upstream
47
- * `KAT/PQCsignKAT_353_SQIsign_lvl1.rsp` in https://github.com/SQISign/the-sqisign
48
- * Used for fast verify-only tests (reference keygen/sign are too slow for CI).
94
+ * NIST-style KAT verify vectors (count = 0) from upstream the-sqisign `.rsp` files.
95
+ * File name is historical (lvl1); exports cover L1, L3, and L5.
96
+ * Used for fast verify-only tests (reference keygen/sign KAT are too slow for default CI).
49
97
  */
50
98
  declare const SQISIGN_LVL1_KAT0_PK_HEX = "07CCD21425136F6E865E497D2D4D208F0054AD81372066E817480787AAF7B2029550C89E892D618CE3230F23510BFBE68FCCDDAEA51DB1436B462ADFAF008A010B";
51
99
  /** `sm` from the KAT file (signature || message). */
@@ -101,9 +149,12 @@ declare function loadSqisignLvl3WebGpu(): Promise<IFnDsa>;
101
149
  declare function loadSqisignLvl5WebGpu(): Promise<IFnDsa>;
102
150
  //#endregion
103
151
  //#region src/index.d.ts
152
+ /** Load ML-KEM-768 (WASM). */
104
153
  declare function loadMlKem768(): Promise<IMlKem>;
154
+ /** Load ML-KEM-512 (WASM). */
105
155
  declare function loadMlKem512(): Promise<IMlKem>;
156
+ /** Load ML-KEM-1024 (WASM). */
106
157
  declare function loadMlKem1024(): Promise<IMlKem>;
107
158
  //#endregion
108
- export { SQISIGN_LVL1_KAT0_MSG_HEX, SQISIGN_LVL1_KAT0_PK_HEX, SQISIGN_LVL1_KAT0_SIG_HEX, SQISIGN_LVL1_KAT0_SM_HEX, SQISIGN_LVL3_KAT0_MSG_HEX, SQISIGN_LVL3_KAT0_PK_HEX, SQISIGN_LVL3_KAT0_SIG_HEX, SQISIGN_LVL3_KAT0_SM_HEX, SQISIGN_LVL5_KAT0_MSG_HEX, SQISIGN_LVL5_KAT0_PK_HEX, SQISIGN_LVL5_KAT0_SIG_HEX, SQISIGN_LVL5_KAT0_SM_HEX, SQISIGN_WEBGPU_VARIANT_LABELS, type SqisignBenchSteps, type SqisignWebGpuSupport, type SqisignWebGpuVariant, benchSqisignWebGpu, getSqisignWebGpuSupport, isSqisignWebGpuAvailable, loadFnDsa1024, loadFnDsa512, loadMlDsa3, loadMlDsa5, loadMlKem1024, loadMlKem512, loadMlKem768, loadSlhDsa128, loadSlhDsa192, loadSlhDsa256, loadSqisignLvl1, loadSqisignLvl1WebGpu, loadSqisignLvl3, loadSqisignLvl3WebGpu, loadSqisignLvl5, loadSqisignLvl5WebGpu, setSqisignAccelWorkerUrl };
159
+ export { type BytesLike, type EncryptResult, type IFnDsa, type IMlDsa, type IMlKem, type KeyPair, MLDSA65_KAT_MSG_HEX, MLDSA65_KAT_PK_HEX, MLDSA65_KAT_SIG_HEX, MLDSA87_KAT_MSG_HEX, MLDSA87_KAT_PK_HEX, MLDSA87_KAT_SIG_HEX, type MaybePromise, type MlKemKeyPair, SLHDSA128S_KAT_MSG_HEX, SLHDSA128S_KAT_PK_HEX, SLHDSA128S_KAT_SIG_HEX, SLHDSA192S_KAT_MSG_HEX, SLHDSA192S_KAT_PK_HEX, SLHDSA192S_KAT_SIG_HEX, SLHDSA256S_KAT_MSG_HEX, SLHDSA256S_KAT_PK_HEX, SLHDSA256S_KAT_SIG_HEX, SQISIGN_LVL1_KAT0_MSG_HEX, SQISIGN_LVL1_KAT0_PK_HEX, SQISIGN_LVL1_KAT0_SIG_HEX, SQISIGN_LVL1_KAT0_SM_HEX, SQISIGN_LVL3_KAT0_MSG_HEX, SQISIGN_LVL3_KAT0_PK_HEX, SQISIGN_LVL3_KAT0_SIG_HEX, SQISIGN_LVL3_KAT0_SM_HEX, SQISIGN_LVL5_KAT0_MSG_HEX, SQISIGN_LVL5_KAT0_PK_HEX, SQISIGN_LVL5_KAT0_SIG_HEX, SQISIGN_LVL5_KAT0_SM_HEX, SQISIGN_WEBGPU_VARIANT_LABELS, type SecretLike, type SqisignBenchSteps, type SqisignWebGpuSupport, type SqisignWebGpuVariant, benchSqisignWebGpu, getSqisignWebGpuSupport, isSqisignWebGpuAvailable, loadFnDsa1024, loadFnDsa512, loadMlDsa3, loadMlDsa5, loadMlKem1024, loadMlKem512, loadMlKem768, loadSlhDsa128, loadSlhDsa192, loadSlhDsa256, loadSqisignLvl1, loadSqisignLvl1WebGpu, loadSqisignLvl3, loadSqisignLvl3WebGpu, loadSqisignLvl5, loadSqisignLvl5WebGpu, setSqisignAccelWorkerUrl };
109
160
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/fndsa.ts","../src/mldsa.ts","../src/slhdsa.ts","../src/sqisign.ts","../src/sqisign-kat-lvl1.ts","../src/sqisign-accel-env.ts","../src/sqisign-webgpu.ts","../src/index.ts"],"mappings":";KAAY,YAAA,MAAkB,CAAA,GAAI,OAAA,CAAQ,CAAA;AAAA,UAEzB,OAAA;EAEhB,GAAA,CAAI,GAAA,iCAAoC,YAAY;AAAA;AAAA,UAGpC,aAAA;EAEhB,GAAA,CAAI,GAAA,4BAA+B,YAAY;AAAA;AAAA,UAG/B,MAAA;EAChB,OAAA,IAAW,OAAA;EACX,OAAA,CAAQ,UAAA,QAAkB,aAAA;EAC1B,OAAA,CAAQ,UAAA,OAAiB,WAAA,QAAmB,OAAA;EAC5C,gBAAA,CAAiB,MAAA,QAAc,YAAA;EAC/B,cAAA,CAAe,OAAA,UAAiB,MAAA,QAAc,OAAA,CAAQ,UAAA;EACtD,cAAA,CAAe,gBAAA,EAAkB,UAAA,EAAY,MAAA,QAAc,OAAA;EAC3D,MAAA;AAAA;AAAA,KAQW,cAAA;AAAA,UAEK,MAAA;EAChB,OAAA,IAAW,OAAA;EACX,IAAA,CACC,OAAA,EAAS,UAAA,GAAa,WAAA,WACtB,WAAA,YACE,OAAA,CAAQ,UAAA;EACX,MAAA,CACC,SAAA,EAAW,UAAA,GAAa,WAAA,WACxB,OAAA,EAAS,UAAA,GAAa,WAAA,WACtB,UAAA,YACE,OAAA;EACH,gBAAA,CAAiB,KAAA,EAAO,UAAA,GAAa,WAAA;AAAA;;;iBC6NhB,YAAA,IAAgB,OAAO,CAAC,MAAA;AAAA,iBAKxB,aAAA,IAAiB,OAAO,CAAC,MAAA;;;iBCHzB,UAAA,IAAc,OAAO,CAAC,MAAA;AAAA,iBAKtB,UAAA,IAAc,OAAO,CAAC,MAAA;;;iBCnMtB,aAAA,IAAiB,OAAO,CAAC,MAAA;AAAA,iBAIzB,aAAA,IAAiB,OAAO,CAAC,MAAA;AAAA,iBAIzB,aAAA,IAAiB,OAAO,CAAC,MAAA;;;iBCiQzB,eAAA,IAAmB,OAAO,CAAC,MAAA;AAAA,iBAK3B,eAAA,IAAmB,OAAO,CAAC,MAAA;AAAA,iBAK3B,eAAA,IAAmB,OAAO,CAAC,MAAA;;;;AJ5VjD;;;;cKKa,wBAAA;;cAIA,wBAAA;;cAIA,yBAAA;;cAGA,yBAAA;;cAGA,wBAAA;AAAA,cAEA,wBAAA;AAAA,cAEA,yBAAA;AAAA,cACA,yBAAA;;cAGA,wBAAA;AAAA,cAEA,wBAAA;AAAA,cAEA,yBAAA;AAAA,cACA,yBAAA;;;KChCD,oBAAA;EACX,SAAA;EACA,mBAAA;EACA,iBAAA;EACA,MAAA;EACA,MAAA;AAAA;AAAA,cAGY,6BAAA;EAAA;;;;KAMD,oBAAA,gBAAoC,6BAA6B;AAAA,iBAU7D,uBAAA,IAA2B,oBAAoB;AAAA,iBAyD/C,wBAAA;;;;iBCTA,wBAAA,CAAyB,GAAW;AAAA,KAiRxC,iBAAA;EACX,QAAA;EACA,MAAA;EACA,QAAA;AAAA;AAAA,iBAGqB,kBAAA,CACrB,OAAA,EAAS,cAAA,EACT,OAAA,YACE,OAAA;EACF,SAAA;EACA,EAAA;EACA,cAAA;EACA,KAAA,EAAO,iBAAA;AAAA;AAAA,iBAkCc,qBAAA,IAAyB,OAAO,CAAC,MAAA;AAAA,iBAIjC,qBAAA,IAAyB,OAAO,CAAC,MAAA;AAAA,iBAIjC,qBAAA,IAAyB,OAAO,CAAC,MAAA;;;iBC9IjC,YAAA,IAAgB,OAAO,CAAC,MAAA;AAAA,iBAIxB,YAAA,IAAgB,OAAO,CAAC,MAAA;AAAA,iBAIxB,aAAA,IAAiB,OAAO,CAAC,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/fndsa.ts","../src/mldsa.ts","../src/mldsa-kat.ts","../src/slhdsa.ts","../src/slhdsa-kat.ts","../src/sqisign.ts","../src/sqisign-kat-lvl1.ts","../src/sqisign-accel-env.ts","../src/sqisign-webgpu.ts","../src/index.ts"],"mappings":";KAAY,aAAa,KAAK,IAAI,QAAQ;;KAG9B,YAAY,aAAa;;;;;UAMpB;EAChB,IAAI,oCAAoC,aAAa;;;;;UAMrC;EAChB,IAAI,oCAAoC,aAAa;;UAGrC;EAEhB,IAAI,+BAA+B,aAAa;;;KAIrC,aAAa,YAAY;UAEpB;EAChB,WAAW;EACX,QAAQ,YAAY,aAAa,aAAa;EAC9C,QACC,YAAY,aAAa,eACzB,aAAa,aAAa,aACxB,QAAQ;EACX,iBACC,QAAQ,aAAa,YAAY,yBAC/B;EACH,eACC,iBACA,QAAQ,aAAa,cACnB,QAAQ;EACX,eACC,kBAAkB,YAClB,QAAQ,aAAa,cACnB;EACH;;KAQW;UAEK;EAChB,WAAW;EACX,KAAK,SAAS,WAAW,aAAa,YAAY,QAAQ;EAC1D,OACC,WAAW,WACX,SAAS,WACT,YAAY,YACV;EACH,iBAAiB,OAAO;;KAGb,SAAS;;;iBC0JC,gBAAgB,QAAQ;iBAKxB,iBAAiB,QAAQ;;;iBCLzB,cAAc,QAAQ;iBAKtB,cAAc,QAAQ;;;;;;;;cC5N/B;cAEA;cAEA;;cAIA;cAEA;cAEA;;;iBC6CS,iBAAiB,QAAQ;iBAIzB,iBAAiB,QAAQ;iBAIzB,iBAAiB,QAAQ;;;;;;;;;cChElC;cAEA;cAEA;;cAIA;cAEA;cAEA;;cAIA;cAEA;cAEA;;;iBCuPS,mBAAmB,QAAQ;iBAK3B,mBAAmB,QAAQ;iBAK3B,mBAAmB,QAAQ;;;;;;;;cCvRpC;;cAIA;;cAIA;;cAGA;;cAGA;cAEA;cAEA;cACA;;cAGA;cAEA;cAEA;cACA;;;KChCD;EACX;EACA;EACA;EACA;EACA;;cAGY;;;;;KAMD,oCAAoC;iBAUhC,2BAA2B;iBAyD3B;;;;iBCRA,yBAAyB;KA6O7B;EACX;EACA;EACA;;iBAGqB,mBACrB,SAAS,gBACT,mBACE;EACF;EACA;EACA;EACA,OAAO;;iBAkCc,yBAAyB,QAAQ;iBAIjC,yBAAyB,QAAQ;iBAIjC,yBAAyB,QAAQ;;;;iBCnCjC,gBAAgB,QAAQ;;iBAKxB,gBAAgB,QAAQ;;iBAKxB,iBAAiB,QAAQ"}