// SPDX-License-Identifier: MIT // Auto-generated Merkle data from TypeScript // Generated at: 2025-10-02T18:37:33.532Z // Source: packages/fixdescriptorkit-typescript/scripts/generate-solidity-test-data.ts pragma solidity ^0.8.28; /// @title GeneratedMerkleData /// @notice Merkle roots and proofs for test data library GeneratedMerkleData { // Simple descriptor: {55: "AAPL", 223: "4.250"} - Merkle root function getSimpleMerkleRoot() internal pure returns (bytes32) { return 0xc5e93c5b66f1c69a1a60ccae5dd6e07703d94ba4acd5e35f42c22e1218c55ab7; } // Simple: Symbol (path: [55]) function getSimpleProof_Symbol() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811837"; valueBytes = hex"4141504c"; proof = new bytes32[](1); proof[0] = 0x1d7149568b6a125dc0144f36353012957e40d4c3684c63295e533a25f85ee6e1; directions = new bool[](1); directions[0] = false; } // Simple: CouponRate (path: [223]) function getSimpleProof_CouponRate() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8118df"; valueBytes = hex"342e323530"; proof = new bytes32[](1); proof[0] = 0x5f1cee330f88bbe397b2eaf8e03916377d02bba864302086b9885f49f5f8b720; directions = new bool[](1); directions[0] = true; } // Large descriptor: {1: "A", 11: "B", 55: "AAPL", 100: "C", 223: "4.250"} - Merkle root function getLargeMerkleRoot() internal pure returns (bytes32) { return 0x8232e69c31129d043d92faffcfedb1b52a2d968028ec9a11614ec6c56e6a9e18; } // Large: Account (path: [1]) function getLargeProof_Account() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8101"; valueBytes = hex"41"; proof = new bytes32[](3); proof[0] = 0xd4d372c241500d454e1e813871517302b592198279cf203bb61510a3e2cac6c0; proof[1] = 0x8985bdac9f0ac67d2bbbb5d78dfcdf65c617497a92831f910c3d81e41a5a26fc; proof[2] = 0x1d7149568b6a125dc0144f36353012957e40d4c3684c63295e533a25f85ee6e1; directions = new bool[](3); directions[0] = false; directions[1] = false; directions[2] = false; } // Large: Symbol (path: [55]) function getLargeProof_Symbol() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811837"; valueBytes = hex"4141504c"; proof = new bytes32[](3); proof[0] = 0xb3bf146688b89ca21163760ea59e569233a1e67f85cd2eeefc993240113256dd; proof[1] = 0xf355e2300c70b4b4f07197c93df6ddd2f50acb0c0454ab8919935307291bb8e8; proof[2] = 0x1d7149568b6a125dc0144f36353012957e40d4c3684c63295e533a25f85ee6e1; directions = new bool[](3); directions[0] = false; directions[1] = true; directions[2] = false; } // Large: CouponRate (path: [223]) function getLargeProof_CouponRate() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8118df"; valueBytes = hex"342e323530"; proof = new bytes32[](1); proof[0] = 0xa8cc17d84bf0229c319f71eff63cdb96612893de41080ed53dab7f390c1a84b3; directions = new bool[](1); directions[0] = true; } // Group descriptor with SecurityAltID - Merkle root function getGroupMerkleRoot() internal pure returns (bytes32) { return 0x7ed4dcf3f739e61ea5a65f76bc0a9cc71db30545395f6333370af27cd1deb5ba; } // Group: Symbol (path: [55]) function getGroupProof_Symbol() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811837"; valueBytes = hex"4141504c"; proof = new bytes32[](3); proof[0] = 0x9f7ba4e0a5a04acbd4490375c55d17ee0d1dd464e2b82f6e78f6dc67a4278943; proof[1] = 0x708a2055e71ab41463665d83a666c7a4f9676f047754de8c2885b1609ef3423b; proof[2] = 0x94429b582e15225ce7970ee969d824ca5baf10d24dd1258c9ded06d387e51048; directions = new bool[](3); directions[0] = false; directions[1] = false; directions[2] = false; } // Group: SecurityAltID_0_ID (path: [454, 0, 455]) function getGroupProof_SecurityAltID_0_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"831901c6001901c7"; valueBytes = hex"555330333738333331303035"; proof = new bytes32[](3); proof[0] = 0x5f1cee330f88bbe397b2eaf8e03916377d02bba864302086b9885f49f5f8b720; proof[1] = 0x708a2055e71ab41463665d83a666c7a4f9676f047754de8c2885b1609ef3423b; proof[2] = 0x94429b582e15225ce7970ee969d824ca5baf10d24dd1258c9ded06d387e51048; directions = new bool[](3); directions[0] = true; directions[1] = false; directions[2] = false; } // Group: SecurityAltID_0_Source (path: [454, 0, 456]) function getGroupProof_SecurityAltID_0_Source() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"831901c6001901c8"; valueBytes = hex"31"; proof = new bytes32[](3); proof[0] = 0xbe1d0bab45ae32fe9369f88471b8ea084b760d92c70435e467ab8ef9eec0f3f7; proof[1] = 0x6ae41353914916003b15f4caac4e7ca415efa9659fbb3b5fb1510726308094e8; proof[2] = 0x94429b582e15225ce7970ee969d824ca5baf10d24dd1258c9ded06d387e51048; directions = new bool[](3); directions[0] = false; directions[1] = true; directions[2] = false; } // Group: SecurityAltID_1_ID (path: [454, 1, 455]) function getGroupProof_SecurityAltID_1_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"831901c6011901c7"; valueBytes = hex"303337383333313030"; proof = new bytes32[](3); proof[0] = 0x74cf88ab7c9334dd35ecad2e8f5ae89a2c3c1ff8e9624f612c0e80aa8405d79a; proof[1] = 0x6ae41353914916003b15f4caac4e7ca415efa9659fbb3b5fb1510726308094e8; proof[2] = 0x94429b582e15225ce7970ee969d824ca5baf10d24dd1258c9ded06d387e51048; directions = new bool[](3); directions[0] = true; directions[1] = true; directions[2] = false; } // Nested group descriptor with Parties and SubIDs - Merkle root function getNestedGroupMerkleRoot() internal pure returns (bytes32) { return 0x4692effe4f47bb000032fca6f0bc6ebed9b33615e2cb24942da78e4eed4ea4c3; } // NestedGroup: Parties_0_ID (path: [453, 0, 448]) function getNestedGroupProof_Parties_0_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"831901c5001901c0"; valueBytes = hex"504152545931"; proof = new bytes32[](3); proof[0] = 0x708cfbb5cfdca9c97b4313f42fcf9988b548a49bc7668282c33beb896c97bd38; proof[1] = 0x157e51f5427a96f1f644689c4995d8ef11f38db51831743ac688af96148a2d90; proof[2] = 0x620f8f21794ca239fc3727d276eaf4c2b3c3563e30a3f379950360fc8d1a8632; directions = new bool[](3); directions[0] = true; directions[1] = false; directions[2] = false; } // NestedGroup: Parties_0_SubIDs_0_ID (path: [453, 0, 802, 0, 523]) function getNestedGroupProof_Parties_0_SubIDs_0_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"851901c5001903220019020b"; valueBytes = hex"53554231"; proof = new bytes32[](3); proof[0] = 0x265a46ffb09da441a1b7b1a3147ffacb1d226db14565e202c6cea35b934d6505; proof[1] = 0x690d2c8534792a7c68d0b9a697bd1df556bfdc0b52d9123a823f5d56f547c975; proof[2] = 0xc9b7fea57a6b548071acff313b2368b9d0081754920384daaecdaea6797f91c5; directions = new bool[](3); directions[0] = false; directions[1] = false; directions[2] = true; } // NestedGroup: Parties_0_SubIDs_1_ID (path: [453, 0, 802, 1, 523]) function getNestedGroupProof_Parties_0_SubIDs_1_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"851901c5001903220119020b"; valueBytes = hex"53554232"; proof = new bytes32[](3); proof[0] = 0x3fb4a5b9b1ee3501288ff832a5ec27c80ba296c00f5f06d884505c66a771e298; proof[1] = 0x9e8a2738e85c65caa705725d9d5345117a5cceceef79eb85e974fd95e6a913a4; proof[2] = 0xc9b7fea57a6b548071acff313b2368b9d0081754920384daaecdaea6797f91c5; directions = new bool[](3); directions[0] = false; directions[1] = true; directions[2] = true; } // Complete bond descriptor - Merkle root function getBondMerkleRoot() internal pure returns (bytes32) { return 0x52fb1ba84107895f0b463c54b0ad626b8813fd22e13611c84a95555d1c599fb2; } // Bond: Symbol (path: [55]) function getBondProof_Symbol() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811837"; valueBytes = hex"555330333738333331303035"; proof = new bytes32[](3); proof[0] = 0x1d7149568b6a125dc0144f36353012957e40d4c3684c63295e533a25f85ee6e1; proof[1] = 0x05944a7b2a4819dcb7552aeea65a91989ba9281b04358da1041eaab7f8ba5709; proof[2] = 0x74cf88ab7c9334dd35ecad2e8f5ae89a2c3c1ff8e9624f612c0e80aa8405d79a; directions = new bool[](3); directions[0] = false; directions[1] = false; directions[2] = false; } // Bond: CouponRate (path: [223]) function getBondProof_CouponRate() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8118df"; valueBytes = hex"342e323530"; proof = new bytes32[](3); proof[0] = 0x8cd42e9e0c44e5ad993d5dfce70552154dd19817252f201f146e361d3d4f02d3; proof[1] = 0x05944a7b2a4819dcb7552aeea65a91989ba9281b04358da1041eaab7f8ba5709; proof[2] = 0x74cf88ab7c9334dd35ecad2e8f5ae89a2c3c1ff8e9624f612c0e80aa8405d79a; directions = new bool[](3); directions[0] = true; directions[1] = false; directions[2] = false; } // Bond: SecurityAltID_0_ID (path: [454, 0, 455]) function getBondProof_SecurityAltID_0_ID() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"831901c6001901c7"; valueBytes = hex"555330333738333331303035"; proof = new bytes32[](3); proof[0] = 0x411c41c1c177dbcc4043c17135499ceb3d42f31a98984ba6872c40449f01e6d5; proof[1] = 0xe2972a9e241079b844396604304e10b51b196f26a8b26b47f01f5e0aed25504e; proof[2] = 0x74cf88ab7c9334dd35ecad2e8f5ae89a2c3c1ff8e9624f612c0e80aa8405d79a; directions = new bool[](3); directions[0] = true; directions[1] = true; directions[2] = false; } // Bond: MaturityDate (path: [541]) function getBondProof_MaturityDate() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8119021d"; valueBytes = hex"3230323530363135"; proof = new bytes32[](3); proof[0] = 0x9f7ba4e0a5a04acbd4490375c55d17ee0d1dd464e2b82f6e78f6dc67a4278943; proof[1] = 0xe2972a9e241079b844396604304e10b51b196f26a8b26b47f01f5e0aed25504e; proof[2] = 0x74cf88ab7c9334dd35ecad2e8f5ae89a2c3c1ff8e9624f612c0e80aa8405d79a; directions = new bool[](3); directions[0] = false; directions[1] = true; directions[2] = false; } // Real-world descriptor with 16 fields - Merkle root function getRealWorldMerkleRoot() internal pure returns (bytes32) { return 0xc68f58231e6db3217de7f431fcc6d8afafe3d6c7b473779d3523ef431e3e9462; } // RealWorld: Account (path: [1]) function getRealWorldProof_Account() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"8101"; valueBytes = hex"4f5244303031"; proof = new bytes32[](4); proof[0] = 0xe646c7ceed79fa6f0c7abdbdd599e67d9243e65d8207fa700badbee7732b5f06; proof[1] = 0x128b9ef047b86f643867eef86bc3d811250dd729a8648a70499ac75d287bde71; proof[2] = 0x8704bb197df58070c60603f0a6278a0d351c91a19cc2da4d8567ba5388048b85; proof[3] = 0xa3624f2c04610cdcd3150b2d9acf444624f242518356eaecffdcb4bf2d0e2144; directions = new bool[](4); directions[0] = false; directions[1] = false; directions[2] = false; directions[3] = false; } // RealWorld: Symbol (path: [55]) function getRealWorldProof_Symbol() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811837"; valueBytes = hex"4141504c"; proof = new bytes32[](4); proof[0] = 0x492c22026de2619d6a1d3d90921444986e0894e9b647d7dd3e3e05fa8c1b6bf1; proof[1] = 0xbdd321b1d701e81f4584d6f327998babc3e52e1c2fe30bbcd25717ecf9569481; proof[2] = 0x76b3298f03fc62c4cce36930d71b9efd1315febff09c01e8adbe0eb217c62c74; proof[3] = 0x78c406ce345ceb4a2d3a0493436ccae9cc0d9863c760ad4ed14a34888b32cea5; directions = new bool[](4); directions[0] = false; directions[1] = false; directions[2] = false; directions[3] = true; } // RealWorld: Price (path: [44]) function getRealWorldProof_Price() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"81182c"; valueBytes = hex"3135302e3530"; proof = new bytes32[](4); proof[0] = 0xedb8da0e94df0c0c53724c3e792c8f763b5f9c0eb1397c0e1609971556ef2c19; proof[1] = 0xbfba6ede76d23d2af2d96867e6cba2b4314193ace567bd3ad0864a0ab281a4ef; proof[2] = 0xfa68ad71bc5a4da336c4f6aad06453698e5878dbea0a3e6cc2351c7349aa9132; proof[3] = 0xa3624f2c04610cdcd3150b2d9acf444624f242518356eaecffdcb4bf2d0e2144; directions = new bool[](4); directions[0] = false; directions[1] = true; directions[2] = true; directions[3] = false; } // RealWorld: OrderQty (path: [38]) function getRealWorldProof_OrderQty() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811826"; valueBytes = hex"31303030"; proof = new bytes32[](4); proof[0] = 0x7a33ba1ff32941d43efbf66092916a75f1dbee1c6ea2383e603f5fba772d1c37; proof[1] = 0x105550f557088c0c523a188692a7ecb8e7f15dbaf54833183373f957650a0516; proof[2] = 0xfa68ad71bc5a4da336c4f6aad06453698e5878dbea0a3e6cc2351c7349aa9132; proof[3] = 0xa3624f2c04610cdcd3150b2d9acf444624f242518356eaecffdcb4bf2d0e2144; directions = new bool[](4); directions[0] = false; directions[1] = false; directions[2] = true; directions[3] = false; } // RealWorld: Side (path: [54]) function getRealWorldProof_Side() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811836"; valueBytes = hex"31"; proof = new bytes32[](4); proof[0] = 0xcaf5a8157f8a4cded8fb9f332615beae1c02d924d209539c5863b3d8ff637a39; proof[1] = 0xbfba6ede76d23d2af2d96867e6cba2b4314193ace567bd3ad0864a0ab281a4ef; proof[2] = 0xfa68ad71bc5a4da336c4f6aad06453698e5878dbea0a3e6cc2351c7349aa9132; proof[3] = 0xa3624f2c04610cdcd3150b2d9acf444624f242518356eaecffdcb4bf2d0e2144; directions = new bool[](4); directions[0] = true; directions[1] = true; directions[2] = true; directions[3] = false; } // RealWorld: ExDestination (path: [100]) function getRealWorldProof_ExDestination() internal pure returns ( bytes memory pathCBOR, bytes memory valueBytes, bytes32[] memory proof, bool[] memory directions ) { pathCBOR = hex"811864"; valueBytes = hex"584e4153"; proof = new bytes32[](4); proof[0] = 0x70a6fc3929f7fcd430d7e49f5d64cbe7274c9de9ed8ab2da98b9da7b66f24947; proof[1] = 0x0c46ce0116ad4f4aaf3fbe63685d918de1d9e3239ff6c30f054f3fbf61f9660a; proof[2] = 0x76b3298f03fc62c4cce36930d71b9efd1315febff09c01e8adbe0eb217c62c74; proof[3] = 0x78c406ce345ceb4a2d3a0493436ccae9cc0d9863c760ad4ed14a34888b32cea5; directions = new bool[](4); directions[0] = true; directions[1] = true; directions[2] = false; directions[3] = true; } } /* MERKLE DATA GENERATION: ======================= All Merkle roots and proofs have been generated from the TypeScript implementation. To regenerate: npm run generate-test-data For each test case: 1. Merkle root: keccak256 root of all descriptor leaves 2. Proofs: Merkle proofs for commonly accessed fields 3. Directions: true if current node is right child, false if left child Leaf computation: keccak256(pathCBOR || valueBytes) Parent computation: keccak256(left || right) */