arnaucube
arnaucube/miden-cryptoPublic Self-hosted repository
miden-crypto/src/merkle/empty_roots.rs
src/merkle/empty_roots.rsRaw
   1use super::{Felt, RpoDigest, WORD_SIZE, ZERO};
   2use core::slice;
   3
   4// EMPTY NODES SUBTREES
   5// ================================================================================================
   6
   7/// Contains precomputed roots of empty subtrees in a Merkle tree.
   8pub struct EmptySubtreeRoots;
   9
  10impl EmptySubtreeRoots {
  11    /// Returns a static slice with roots of empty subtrees of a Merkle tree starting at the
  12    /// specified depth.
  13    pub const fn empty_hashes(depth: u8) -> &'static [RpoDigest] {
  14        let ptr = &EMPTY_SUBTREES[255 - depth as usize] as *const RpoDigest;
  15        // Safety: this is a static/constant array, so it will never be outlived. If we attempt to
  16        // use regular slices, this wouldn't be a `const` function, meaning we won't be able to use
  17        // the returned value for static/constant definitions.
  18        unsafe { slice::from_raw_parts(ptr, depth as usize + 1) }
  19    }
  20}
  21
  22const EMPTY_SUBTREES: [RpoDigest; 256] = [
  23    RpoDigest::new([
  24        Felt::new(0xee3d94db86d48dc4),
  25        Felt::new(0x3d13166c7aba0368),
  26        Felt::new(0x282e861f2936aa7),
  27        Felt::new(0xf0328a1745537b4),
  28    ]),
  29    RpoDigest::new([
  30        Felt::new(0x33174b312b730760),
  31        Felt::new(0x9d1e00c5b50352b2),
  32        Felt::new(0x16bf9ec4acef2e42),
  33        Felt::new(0x4263877e63c4cbe7),
  34    ]),
  35    RpoDigest::new([
  36        Felt::new(0xa8e039042672a8bc),
  37        Felt::new(0x1010d951d941d9d4),
  38        Felt::new(0xd3e8f0ecc866ac3b),
  39        Felt::new(0xb2dbbbb80da232ba),
  40    ]),
  41    RpoDigest::new([
  42        Felt::new(0xa0d2c1a3e455f299),
  43        Felt::new(0x648e8e13867dc8eb),
  44        Felt::new(0xe79f94ea61189847),
  45        Felt::new(0xb88a89e1f2765a31),
  46    ]),
  47    RpoDigest::new([
  48        Felt::new(0xe168133fd9ab570d),
  49        Felt::new(0x6fc7d0295ac5a3a2),
  50        Felt::new(0xc973ea026e9411c),
  51        Felt::new(0x63c29ea04552b532),
  52    ]),
  53    RpoDigest::new([
  54        Felt::new(0x27e57ecc0f9f196),
  55        Felt::new(0xc02f6e29fd19b059),
  56        Felt::new(0x4a42fbc436efb0b6),
  57        Felt::new(0xbff30574a98a1b29),
  58    ]),
  59    RpoDigest::new([
  60        Felt::new(0x18c32592a4f4d0b),
  61        Felt::new(0x6b9a08797252d5d5),
  62        Felt::new(0xdbfe48f00a088a2),
  63        Felt::new(0x16b4c3e485b173e3),
  64    ]),
  65    RpoDigest::new([
  66        Felt::new(0x26c8902938b831a5),
  67        Felt::new(0x66ee91b36943f92e),
  68        Felt::new(0x4e8deeafef9f5725),
  69        Felt::new(0xbb35751d5dfb0a33),
  70    ]),
  71    RpoDigest::new([
  72        Felt::new(0x74af678f8e020ff4),
  73        Felt::new(0xd4784cda0beed295),
  74        Felt::new(0x4380949d841d793c),
  75        Felt::new(0xdf587011d09d3bbb),
  76    ]),
  77    RpoDigest::new([
  78        Felt::new(0xa211d1da76aaef98),
  79        Felt::new(0xd904ccc6435e268),
  80        Felt::new(0x1c6f16a5d03b8416),
  81        Felt::new(0x87800f7f5da9c93),
  82    ]),
  83    RpoDigest::new([
  84        Felt::new(0xa00bbad0a52adeff),
  85        Felt::new(0xe22179c651da9d76),
  86        Felt::new(0x474f10493a3723f4),
  87        Felt::new(0x84397e6bd34a1f5b),
  88    ]),
  89    RpoDigest::new([
  90        Felt::new(0xe8f440afef4d082b),
  91        Felt::new(0x14fff8e329613cc9),
  92        Felt::new(0x78e984bc8b40f4f1),
  93        Felt::new(0x6ed8f02e5be1bab2),
  94    ]),
  95    RpoDigest::new([
  96        Felt::new(0xda824edf085b5f9f),
  97        Felt::new(0xc8a8f1c1b86d349e),
  98        Felt::new(0xe1bf6975afb7b2de),
  99        Felt::new(0xd7df51ea51028489),
 100    ]),
 101    RpoDigest::new([
 102        Felt::new(0xf64873d31456de99),
 103        Felt::new(0x1fc9cb920b6c72b),
 104        Felt::new(0x96613d9d71af4373),
 105        Felt::new(0x61d607eb097e76c9),
 106    ]),
 107    RpoDigest::new([
 108        Felt::new(0xca304d2b3b778719),
 109        Felt::new(0xa54d8602f37eed39),
 110        Felt::new(0xb4574db6dc09bcf2),
 111        Felt::new(0x5e42cd4f1de9587c),
 112    ]),
 113    RpoDigest::new([
 114        Felt::new(0x17575dfa689d8a07),
 115        Felt::new(0x1db9d374d7436444),
 116        Felt::new(0x21d1e8dca296f38d),
 117        Felt::new(0xbc4aad43a9d93f54),
 118    ]),
 119    RpoDigest::new([
 120        Felt::new(0x9fa0697330c054cd),
 121        Felt::new(0xd5d57fbf059452e8),
 122        Felt::new(0xe848fafb1c43414c),
 123        Felt::new(0xacb7754fd77c9d52),
 124    ]),
 125    RpoDigest::new([
 126        Felt::new(0x406af89b918e596c),
 127        Felt::new(0xb735a2c588ee87df),
 128        Felt::new(0xb40ff1dd1c3c6599),
 129        Felt::new(0x675a582b4c8a68ac),
 130    ]),
 131    RpoDigest::new([
 132        Felt::new(0x530ff6be0c86a2f6),
 133        Felt::new(0x5541fabfefd34c91),
 134        Felt::new(0x4af1579d212149ae),
 135        Felt::new(0x23962b7df862f27c),
 136    ]),
 137    RpoDigest::new([
 138        Felt::new(0x1676b694f41cfc0d),
 139        Felt::new(0x59b165ea5f354fd8),
 140        Felt::new(0x5b45ee14e2501f08),
 141        Felt::new(0xd0c8ca7bc2e01e18),
 142    ]),
 143    RpoDigest::new([
 144        Felt::new(0x2cff5d1e629ddc7b),
 145        Felt::new(0x5062be34e4351fe),
 146        Felt::new(0xfd76495b9d8ea67),
 147        Felt::new(0xb96453b1c8060ca8),
 148    ]),
 149    RpoDigest::new([
 150        Felt::new(0x860b00517d3de1ef),
 151        Felt::new(0xd609c82af07b9dad),
 152        Felt::new(0xa54a528b8f1cbddc),
 153        Felt::new(0xb4fff658ed97e635),
 154    ]),
 155    RpoDigest::new([
 156        Felt::new(0xd002cea8f347c347),
 157        Felt::new(0xa135cebffdf3ec10),
 158        Felt::new(0xb0200ea08da2cef4),
 159        Felt::new(0x4e6f2f75d627b137),
 160    ]),
 161    RpoDigest::new([
 162        Felt::new(0xc1983ce677cabbf4),
 163        Felt::new(0x58f0143480f44788),
 164        Felt::new(0xf8c23e4f84b6c6c1),
 165        Felt::new(0xc9ce41371c4900b8),
 166    ]),
 167    RpoDigest::new([
 168        Felt::new(0x837d99979bc9a5e6),
 169        Felt::new(0x7621559aa4af175a),
 170        Felt::new(0x6986737347c799c2),
 171        Felt::new(0x8cee99eb47c3e702),
 172    ]),
 173    RpoDigest::new([
 174        Felt::new(0x42e17ba02508a41f),
 175        Felt::new(0xb95e349bd55ba61f),
 176        Felt::new(0xcc2bfeb29c4c68b2),
 177        Felt::new(0xf268f57860a446b1),
 178    ]),
 179    RpoDigest::new([
 180        Felt::new(0xd3ffd4ccc6dda508),
 181        Felt::new(0x81db1910ef04ca07),
 182        Felt::new(0x5c698ee6c3aeab97),
 183        Felt::new(0x2ac1e2c2c5f237de),
 184    ]),
 185    RpoDigest::new([
 186        Felt::new(0x1f42a1ef25bd0aad),
 187        Felt::new(0x81b0f63e2760b8db),
 188        Felt::new(0xe9607c7061b018f9),
 189        Felt::new(0xf02a88202294a700),
 190    ]),
 191    RpoDigest::new([
 192        Felt::new(0xea5da09b39b60468),
 193        Felt::new(0xe48ea41d94fe91a7),
 194        Felt::new(0x24dde954ce08b32b),
 195        Felt::new(0xe1bb6e41bd0613e6),
 196    ]),
 197    RpoDigest::new([
 198        Felt::new(0xc5e9f7188b43a24f),
 199        Felt::new(0x8d7132abc9d901e4),
 200        Felt::new(0xdc09a33ff4d0eb03),
 201        Felt::new(0xa119bb1db594b4cf),
 202    ]),
 203    RpoDigest::new([
 204        Felt::new(0x589002afcbd4a233),
 205        Felt::new(0xe4eae44d3c2a308d),
 206        Felt::new(0x8bc0bca14b6b4dde),
 207        Felt::new(0x3716e0e86a7aaa6c),
 208    ]),
 209    RpoDigest::new([
 210        Felt::new(0xaa4ba9602230007e),
 211        Felt::new(0x2b2c3e14b888a3d4),
 212        Felt::new(0x90a36fb42ec2ba19),
 213        Felt::new(0x2e07ef26b078c4a7),
 214    ]),
 215    RpoDigest::new([
 216        Felt::new(0x32307da7aad33113),
 217        Felt::new(0x343ed87928b9ab0c),
 218        Felt::new(0x1c01d79482c021f0),
 219        Felt::new(0x6f866afccc595439),
 220    ]),
 221    RpoDigest::new([
 222        Felt::new(0x9780804b58b0d066),
 223        Felt::new(0x1329929c6dc19c09),
 224        Felt::new(0xc04add06dbaef6bf),
 225        Felt::new(0xf494a28db17c5c4),
 226    ]),
 227    RpoDigest::new([
 228        Felt::new(0xe9dbb1c64d55571f),
 229        Felt::new(0x663f0f716f28734),
 230        Felt::new(0x7285fd4b8e87a78c),
 231        Felt::new(0x2e152a4595b7597e),
 232    ]),
 233    RpoDigest::new([
 234        Felt::new(0x5531fabfa5960807),
 235        Felt::new(0x8afe79be96d903a4),
 236        Felt::new(0x24321cce4f1942f8),
 237        Felt::new(0xb1829ec9d60aac8f),
 238    ]),
 239    RpoDigest::new([
 240        Felt::new(0x9f7afc6634a82d1),
 241        Felt::new(0x496e26bc17af352b),
 242        Felt::new(0x8216f090e1d13381),
 243        Felt::new(0x610cf5a3b3e190f9),
 244    ]),
 245    RpoDigest::new([
 246        Felt::new(0xb5f8c141a9acd007),
 247        Felt::new(0x4430345ace970576),
 248        Felt::new(0x64d97e5533db3170),
 249        Felt::new(0x95c016d769b0fc2d),
 250    ]),
 251    RpoDigest::new([
 252        Felt::new(0x88820d6a7ba5a94a),
 253        Felt::new(0x27b614d79eb7b30b),
 254        Felt::new(0xff2751e904085d5f),
 255        Felt::new(0x752509a0860b37d),
 256    ]),
 257    RpoDigest::new([
 258        Felt::new(0x1070bc84bb53a855),
 259        Felt::new(0x1edad3d5da84e59b),
 260        Felt::new(0x8efd48a13e4dfe0d),
 261        Felt::new(0x3ab20af6203aba62),
 262    ]),
 263    RpoDigest::new([
 264        Felt::new(0xb4d6d3cc85438d08),
 265        Felt::new(0x5592639fb2792724),
 266        Felt::new(0x5939996ea4c52176),
 267        Felt::new(0xaa83a79236367ee7),
 268    ]),
 269    RpoDigest::new([
 270        Felt::new(0x4c08ac735aa1925a),
 271        Felt::new(0x84951e177ac84e86),
 272        Felt::new(0xd5b2657778d3271a),
 273        Felt::new(0x375f75333654a77c),
 274    ]),
 275    RpoDigest::new([
 276        Felt::new(0x2fcbd8fcd125e5),
 277        Felt::new(0xd8f711ed1b369d43),
 278        Felt::new(0x9688301695b6bcd4),
 279        Felt::new(0x52a010319401179),
 280    ]),
 281    RpoDigest::new([
 282        Felt::new(0x1c67f8fde4c9c070),
 283        Felt::new(0x438ccdf9d82b3a3f),
 284        Felt::new(0xb9324515d5547ff5),
 285        Felt::new(0x85ff37504c8230f0),
 286    ]),
 287    RpoDigest::new([
 288        Felt::new(0xcf8b6fabda4621f3),
 289        Felt::new(0x1df94bb4ea8aeb6d),
 290        Felt::new(0x8efffb7e8996b9e5),
 291        Felt::new(0xa9aef575e8a86c4d),
 292    ]),
 293    RpoDigest::new([
 294        Felt::new(0x6e20862a64baaaef),
 295        Felt::new(0xc54fbbfa034d6f1b),
 296        Felt::new(0x16d9fd099f5bba71),
 297        Felt::new(0xe4ac4cf3186fae83),
 298    ]),
 299    RpoDigest::new([
 300        Felt::new(0x12914625293d7f84),
 301        Felt::new(0xd3b46add4f77be8),
 302        Felt::new(0xaac8846e6eeb9acd),
 303        Felt::new(0xab6a69452b4b167b),
 304    ]),
 305    RpoDigest::new([
 306        Felt::new(0x69652e812cdfe03d),
 307        Felt::new(0x22731622b139de96),
 308        Felt::new(0xd7226e9a887f368d),
 309        Felt::new(0xe9bbf6ad8f51ee13),
 310    ]),
 311    RpoDigest::new([
 312        Felt::new(0xc39a01964af141d7),
 313        Felt::new(0xb5ab2062263dcaa2),
 314        Felt::new(0x1d7fbcd9204cbd34),
 315        Felt::new(0xd48c517d5543c163),
 316    ]),
 317    RpoDigest::new([
 318        Felt::new(0x44118fda0c2b4af2),
 319        Felt::new(0x487d307ce7444bb2),
 320        Felt::new(0x171b7c6a17d734b2),
 321        Felt::new(0xd9a737ddf65949d9),
 322    ]),
 323    RpoDigest::new([
 324        Felt::new(0xc2cdc1b940450fec),
 325        Felt::new(0x29864b9632eff0cd),
 326        Felt::new(0x9ae31f150850e78c),
 327        Felt::new(0xf9f9d0ef1092be87),
 328    ]),
 329    RpoDigest::new([
 330        Felt::new(0x1703dd34002f3862),
 331        Felt::new(0xf04b44446be81ea1),
 332        Felt::new(0x8da51598849beb99),
 333        Felt::new(0x8112e155f7f856a0),
 334    ]),
 335    RpoDigest::new([
 336        Felt::new(0x3d4da8351f41dc1c),
 337        Felt::new(0x682e55817f56f30b),
 338        Felt::new(0xf20cc7fe5b98b951),
 339        Felt::new(0x8297d3de042785d4),
 340    ]),
 341    RpoDigest::new([
 342        Felt::new(0x1f9d07a435a6d13e),
 343        Felt::new(0x789a1330825c199a),
 344        Felt::new(0x6e058e9dbc30f3a0),
 345        Felt::new(0xb09be46b59290984),
 346    ]),
 347    RpoDigest::new([
 348        Felt::new(0xaf2d49c9a3975d21),
 349        Felt::new(0xebd4d399fc30a751),
 350        Felt::new(0x224a3884ca353e5d),
 351        Felt::new(0xbebba344bbe055a7),
 352    ]),
 353    RpoDigest::new([
 354        Felt::new(0xdf576dc16b0abc3f),
 355        Felt::new(0x40439af403c36338),
 356        Felt::new(0x317b1f2308849c53),
 357        Felt::new(0x91e5c9d14107cb04),
 358    ]),
 359    RpoDigest::new([
 360        Felt::new(0x93af916aa15f97e2),
 361        Felt::new(0x50d4aec3e408fba7),
 362        Felt::new(0xd16bd5f71b6d6915),
 363        Felt::new(0x27b96db871be03ef),
 364    ]),
 365    RpoDigest::new([
 366        Felt::new(0x72fce6dd7d54e348),
 367        Felt::new(0x632a2e8b6177c670),
 368        Felt::new(0xefd897bebdc4ec2b),
 369        Felt::new(0xfe66bfe440033790),
 370    ]),
 371    RpoDigest::new([
 372        Felt::new(0xc581364aef408d6a),
 373        Felt::new(0xfcc7efb35cccae32),
 374        Felt::new(0xee0a97dded065fbf),
 375        Felt::new(0x2b1eb2c45fd0e633),
 376    ]),
 377    RpoDigest::new([
 378        Felt::new(0x9e460e8159152a88),
 379        Felt::new(0xcc5a2946f03bf507),
 380        Felt::new(0x95535e9cf29e4ab9),
 381        Felt::new(0x29b23d31ffe6df18),
 382    ]),
 383    RpoDigest::new([
 384        Felt::new(0xbae2c405d8ba715d),
 385        Felt::new(0xb886f0545ae16153),
 386        Felt::new(0x728d5965a4cdfc0b),
 387        Felt::new(0x86bd552048f3ebc4),
 388    ]),
 389    RpoDigest::new([
 390        Felt::new(0x3a4c6dbaa6feda93),
 391        Felt::new(0x8a32917885a3f22c),
 392        Felt::new(0xd6016ba7fc1a0717),
 393        Felt::new(0x3bfd41569497b156),
 394    ]),
 395    RpoDigest::new([
 396        Felt::new(0xa907fad371653f15),
 397        Felt::new(0x6be9ce6ac746f5bc),
 398        Felt::new(0x1bee5ac8750d2444),
 399        Felt::new(0x16050d83d4f7a90c),
 400    ]),
 401    RpoDigest::new([
 402        Felt::new(0x4b194182aa7e9324),
 403        Felt::new(0x813af49c845cea5e),
 404        Felt::new(0x6886f4d8628bab16),
 405        Felt::new(0xe3b6ef1419e2432c),
 406    ]),
 407    RpoDigest::new([
 408        Felt::new(0x3edc103de28f1fac),
 409        Felt::new(0xb6a05b8802d6ed5c),
 410        Felt::new(0xf320c3f130a175c8),
 411        Felt::new(0x326c8bb02f9a51f6),
 412    ]),
 413    RpoDigest::new([
 414        Felt::new(0x5b1ac27a49b5d1da),
 415        Felt::new(0x9e1fa75b04da7545),
 416        Felt::new(0x9a522396a1cd68af),
 417        Felt::new(0x91a4d435f3fcd43f),
 418    ]),
 419    RpoDigest::new([
 420        Felt::new(0x318ac5d8f1e489ce),
 421        Felt::new(0x339e7a0b2aec5843),
 422        Felt::new(0x38f15bf9832a2c28),
 423        Felt::new(0x5e3fef94216f72f1),
 424    ]),
 425    RpoDigest::new([
 426        Felt::new(0xc43e0723d2a7e79c),
 427        Felt::new(0xa06167cc0ebdf1e5),
 428        Felt::new(0xe62f10089af57ba6),
 429        Felt::new(0x838c863d60b859a2),
 430    ]),
 431    RpoDigest::new([
 432        Felt::new(0xd10456af5f30e5d5),
 433        Felt::new(0x235df7fe21fb912c),
 434        Felt::new(0xe5acc29d13d80779),
 435        Felt::new(0x580b83247a1f6524),
 436    ]),
 437    RpoDigest::new([
 438        Felt::new(0x2a8b1bf7e9bc5675),
 439        Felt::new(0x9e523f2d659a3e30),
 440        Felt::new(0x3ecfdb1615666b74),
 441        Felt::new(0xf53746b86fedee7f),
 442    ]),
 443    RpoDigest::new([
 444        Felt::new(0xa12095b3b22680a9),
 445        Felt::new(0x3010ad751585161d),
 446        Felt::new(0xfb9c0ea33c7437b2),
 447        Felt::new(0x9225d8151ec724a8),
 448    ]),
 449    RpoDigest::new([
 450        Felt::new(0x1b09eac8ad815107),
 451        Felt::new(0x33cb241ad41b562d),
 452        Felt::new(0xa04f457b4cd1ece9),
 453        Felt::new(0x84f27a45985d700e),
 454    ]),
 455    RpoDigest::new([
 456        Felt::new(0xe5598d92d1507185),
 457        Felt::new(0x84aa2bf7d87a26e8),
 458        Felt::new(0x158f0e13550dec2a),
 459        Felt::new(0x54d699e5eb65ee63),
 460    ]),
 461    RpoDigest::new([
 462        Felt::new(0x902e89f122f8f8f7),
 463        Felt::new(0xc2da7127af8c699a),
 464        Felt::new(0x75762e75b77a1662),
 465        Felt::new(0x7e683b3c116af130),
 466    ]),
 467    RpoDigest::new([
 468        Felt::new(0xabc2aa2ecd2316dd),
 469        Felt::new(0x44558fa721857f00),
 470        Felt::new(0xf61dd475fdbc23d0),
 471        Felt::new(0x22ba84332065a9e8),
 472    ]),
 473    RpoDigest::new([
 474        Felt::new(0x5aa94e045e4bb7ae),
 475        Felt::new(0xf6ddadbdd8747728),
 476        Felt::new(0xeeab65efab2a1d2),
 477        Felt::new(0xd12cc579c49b9db5),
 478    ]),
 479    RpoDigest::new([
 480        Felt::new(0x71ea68262a73196a),
 481        Felt::new(0x9612483af09f1bde),
 482        Felt::new(0x7fe5fd69bbf241a4),
 483        Felt::new(0x34de27c57b37975d),
 484    ]),
 485    RpoDigest::new([
 486        Felt::new(0xf29bc8ba140714f6),
 487        Felt::new(0xf0b44caca4f6561e),
 488        Felt::new(0x742695d702446774),
 489        Felt::new(0x7e1437b52ee16c0c),
 490    ]),
 491    RpoDigest::new([
 492        Felt::new(0x13f6180493eaa129),
 493        Felt::new(0x8fa2e77f499c911c),
 494        Felt::new(0x1223e5ccda975bf),
 495        Felt::new(0xc2a362e5449eac8b),
 496    ]),
 497    RpoDigest::new([
 498        Felt::new(0xcf1254ec733c8fb0),
 499        Felt::new(0x34359ae1e2272fc9),
 500        Felt::new(0xce928a65262d59d5),
 501        Felt::new(0xc84e1f72e2e78101),
 502    ]),
 503    RpoDigest::new([
 504        Felt::new(0x8841b659676a2df5),
 505        Felt::new(0x4c808c965135ff8f),
 506        Felt::new(0x374d574fd96ee7d1),
 507        Felt::new(0xa0ae0e5765bc8716),
 508    ]),
 509    RpoDigest::new([
 510        Felt::new(0xba3692cf34a6eb7a),
 511        Felt::new(0x384dce8b1fd8fcd5),
 512        Felt::new(0x248f1c83f6cf6055),
 513        Felt::new(0xbf50ca14b3c5b022),
 514    ]),
 515    RpoDigest::new([
 516        Felt::new(0x18611824fa468341),
 517        Felt::new(0xaab4187ff224ec04),
 518        Felt::new(0x4ad742d8a070d084),
 519        Felt::new(0xfa3bb42df7d86480),
 520    ]),
 521    RpoDigest::new([
 522        Felt::new(0x2ab25bf43fc462b5),
 523        Felt::new(0x6ac0cc243f54b796),
 524        Felt::new(0x2401eabf391a2199),
 525        Felt::new(0x62a71dae211b983),
 526    ]),
 527    RpoDigest::new([
 528        Felt::new(0xbc5e568df9f18772),
 529        Felt::new(0xee864850b75a99ba),
 530        Felt::new(0x2a53e3e6776ae456),
 531        Felt::new(0x8eb51bedbe483d7c),
 532    ]),
 533    RpoDigest::new([
 534        Felt::new(0xce8161f4c705bfbb),
 535        Felt::new(0xf1071a4e343a37e9),
 536        Felt::new(0xddc4878a9e5de00f),
 537        Felt::new(0xee33d737cd3c5dc8),
 538    ]),
 539    RpoDigest::new([
 540        Felt::new(0x9eadd43aebfcd43d),
 541        Felt::new(0xf35cec43429c0a95),
 542        Felt::new(0xcad253fc16b63e5a),
 543        Felt::new(0xea25dc9baaf21d38),
 544    ]),
 545    RpoDigest::new([
 546        Felt::new(0xa85a87fbf220f449),
 547        Felt::new(0x1db1c09109882161),
 548        Felt::new(0xab5139cb30eb2c88),
 549        Felt::new(0xe62f2ade31d95b14),
 550    ]),
 551    RpoDigest::new([
 552        Felt::new(0xad3fae6f7f635376),
 553        Felt::new(0x21e5dba9b8e21ac8),
 554        Felt::new(0x86506eeeba6c7151),
 555        Felt::new(0x6bf71fdffc8d9ae7),
 556    ]),
 557    RpoDigest::new([
 558        Felt::new(0x37ec52a9396f4574),
 559        Felt::new(0xf19404a514aa9285),
 560        Felt::new(0x3ed5ae669769c4e7),
 561        Felt::new(0x2286b493b85c9481),
 562    ]),
 563    RpoDigest::new([
 564        Felt::new(0xc37fc37b83940bd2),
 565        Felt::new(0xe3d67417540b620b),
 566        Felt::new(0x1495f7a7848dde0a),
 567        Felt::new(0xeaf4f9c053465ff),
 568    ]),
 569    RpoDigest::new([
 570        Felt::new(0x80131752569df8f0),
 571        Felt::new(0x30720a862b82f732),
 572        Felt::new(0xabed5fb95dbe678b),
 573        Felt::new(0x6cf7da37075ad45e),
 574    ]),
 575    RpoDigest::new([
 576        Felt::new(0xa318ea66909473fe),
 577        Felt::new(0x4a6c6ebc4bee8b3c),
 578        Felt::new(0xf0d622f04ce1b02e),
 579        Felt::new(0x92c2f8e192c000a1),
 580    ]),
 581    RpoDigest::new([
 582        Felt::new(0xb39d728756dca017),
 583        Felt::new(0x4f66acee5bcd7d98),
 584        Felt::new(0xf623331bed29e125),
 585        Felt::new(0xbcfc777f0eb03793),
 586    ]),
 587    RpoDigest::new([
 588        Felt::new(0x6cdabd98e067b039),
 589        Felt::new(0xd6356a27c3df3ddc),
 590        Felt::new(0xd5afb88820db9d2f),
 591        Felt::new(0x8203a7adfa667bfc),
 592    ]),
 593    RpoDigest::new([
 594        Felt::new(0x1ddef8e482da50e0),
 595        Felt::new(0x7fa3c9c0865609ec),
 596        Felt::new(0x6ca762886d4d6227),
 597        Felt::new(0x9a95160f2a4fe5d9),
 598    ]),
 599    RpoDigest::new([
 600        Felt::new(0x607230c3b366dbd5),
 601        Felt::new(0x5b996a7d876b7602),
 602        Felt::new(0xf61df5d15469c8ea),
 603        Felt::new(0x9bb4f5c06ac49403),
 604    ]),
 605    RpoDigest::new([
 606        Felt::new(0x6a27c9e7082595e7),
 607        Felt::new(0xbf93eb89e2090438),
 608        Felt::new(0xd2db18139bedc636),
 609        Felt::new(0x79710c33a1f1f612),
 610    ]),
 611    RpoDigest::new([
 612        Felt::new(0xf54e4461aa09608b),
 613        Felt::new(0x898a7b52804d88c9),
 614        Felt::new(0xbc548fab0257ea25),
 615        Felt::new(0xe783017a62b49474),
 616    ]),
 617    RpoDigest::new([
 618        Felt::new(0xf7efdb376a7734c9),
 619        Felt::new(0x2d4ded56d9ef2076),
 620        Felt::new(0xa17d90a509b879d0),
 621        Felt::new(0xcf012a20045b29e1),
 622    ]),
 623    RpoDigest::new([
 624        Felt::new(0x37e40a30232a4f06),
 625        Felt::new(0xfbd9877fb761052e),
 626        Felt::new(0xc4c41f56a70377cd),
 627        Felt::new(0x631e942f6680d4cc),
 628    ]),
 629    RpoDigest::new([
 630        Felt::new(0xcf868b6d54b515a5),
 631        Felt::new(0xa522edf7c43f7aee),
 632        Felt::new(0x66057652f34d479),
 633        Felt::new(0x59f4a86223bc80bd),
 634    ]),
 635    RpoDigest::new([
 636        Felt::new(0xb7214ce5a0ba8dfd),
 637        Felt::new(0x5c7a6e583e4e255e),
 638        Felt::new(0xabc8369f8bf38a1c),
 639        Felt::new(0xb5db79ae07f0689c),
 640    ]),
 641    RpoDigest::new([
 642        Felt::new(0x18c980169ef2d0bb),
 643        Felt::new(0x6526b64df8eb4eac),
 644        Felt::new(0xfe4d8327ca5bd91a),
 645        Felt::new(0xe36d607069c7dd85),
 646    ]),
 647    RpoDigest::new([
 648        Felt::new(0x602a97209948e5cc),
 649        Felt::new(0xb7d19db914da726),
 650        Felt::new(0xe4e43672c24d376c),
 651        Felt::new(0x8bb9f7465e019213),
 652    ]),
 653    RpoDigest::new([
 654        Felt::new(0x187bff077d393e3d),
 655        Felt::new(0x17fb9a97c5055580),
 656        Felt::new(0x618469c060eb2719),
 657        Felt::new(0xfc7be4b58477e5ac),
 658    ]),
 659    RpoDigest::new([
 660        Felt::new(0x1d40fcbc7a25cc97),
 661        Felt::new(0xaee142f7cebadbd5),
 662        Felt::new(0x22dbaed94300ddf8),
 663        Felt::new(0xe069c36278753a06),
 664    ]),
 665    RpoDigest::new([
 666        Felt::new(0xcd1e21c5f02ce44d),
 667        Felt::new(0x3b0ddbaa04daff25),
 668        Felt::new(0xbb55cd14f54818c7),
 669        Felt::new(0xc57f1b84ed302102),
 670    ]),
 671    RpoDigest::new([
 672        Felt::new(0x5c8e1f56cbdb0f87),
 673        Felt::new(0xeeeb31b4d317cf1d),
 674        Felt::new(0x8bf45cd3659a6d1),
 675        Felt::new(0x9e179aa20693175a),
 676    ]),
 677    RpoDigest::new([
 678        Felt::new(0x10f58975fbb0fca),
 679        Felt::new(0x5f35c19eb0f615c1),
 680        Felt::new(0x9870cdafe46a3d),
 681        Felt::new(0xcec9d9f3925df88b),
 682    ]),
 683    RpoDigest::new([
 684        Felt::new(0x89e90b2f029b50c0),
 685        Felt::new(0xd78a4223d0036c8a),
 686        Felt::new(0x996b326a1d5cd76d),
 687        Felt::new(0x5b314d29bb1694e3),
 688    ]),
 689    RpoDigest::new([
 690        Felt::new(0x1be6e6955ba0f3a8),
 691        Felt::new(0xc7e07c49076315ef),
 692        Felt::new(0x93e91de5c7849fb2),
 693        Felt::new(0xe81bc86fc641596f),
 694    ]),
 695    RpoDigest::new([
 696        Felt::new(0x5320464735f18522),
 697        Felt::new(0x1a741214432ca63d),
 698        Felt::new(0xaf3ed59d324bdbe8),
 699        Felt::new(0x2493eb414c91ac94),
 700    ]),
 701    RpoDigest::new([
 702        Felt::new(0x35897b61f231fa86),
 703        Felt::new(0xb1531e954332f229),
 704        Felt::new(0x92e950b1c1f874a),
 705        Felt::new(0x469de0412ca52491),
 706    ]),
 707    RpoDigest::new([
 708        Felt::new(0x1ecea76deca59ec5),
 709        Felt::new(0xe884b570f5d54e45),
 710        Felt::new(0x58939f3a1b5bc7e1),
 711        Felt::new(0xf14eab10f926958f),
 712    ]),
 713    RpoDigest::new([
 714        Felt::new(0x26251aa927a69723),
 715        Felt::new(0xb1808fe0795ab008),
 716        Felt::new(0xd195fe923d1944c9),
 717        Felt::new(0x2334a61c28dc63c),
 718    ]),
 719    RpoDigest::new([
 720        Felt::new(0xe4b659081d9cf4e4),
 721        Felt::new(0xf1174a5f72916819),
 722        Felt::new(0x1de902b42b3b4054),
 723        Felt::new(0xbe2bc215120367d0),
 724    ]),
 725    RpoDigest::new([
 726        Felt::new(0xfc87b8043d32428f),
 727        Felt::new(0x8f8cb244e3ddf6da),
 728        Felt::new(0xc7539186ece143a7),
 729        Felt::new(0xf28008f902075229),
 730    ]),
 731    RpoDigest::new([
 732        Felt::new(0xf76c24c9f86c44d3),
 733        Felt::new(0x97c7abcbb6d07d35),
 734        Felt::new(0x9d8e37a1697a0d4),
 735        Felt::new(0xa3f818e48770f5fa),
 736    ]),
 737    RpoDigest::new([
 738        Felt::new(0x885686c79c1cd95e),
 739        Felt::new(0xcdebe76fd203c23e),
 740        Felt::new(0xdf9b7cd5099673ed),
 741        Felt::new(0xe60438536ad13270),
 742    ]),
 743    RpoDigest::new([
 744        Felt::new(0x7790809942b9389d),
 745        Felt::new(0xa3d82432c31de99),
 746        Felt::new(0xaea11fece88c7d27),
 747        Felt::new(0x5cc764da96d0b2f0),
 748    ]),
 749    RpoDigest::new([
 750        Felt::new(0x80e555c41170427f),
 751        Felt::new(0x87e68144276d79c8),
 752        Felt::new(0xebdc63f28aa58a53),
 753        Felt::new(0x168dd22672627819),
 754    ]),
 755    RpoDigest::new([
 756        Felt::new(0xea1dc59c29da5b6c),
 757        Felt::new(0xa33188c0a077761),
 758        Felt::new(0xabd3c84cddbe1477),
 759        Felt::new(0xd28244bc92f36e0f),
 760    ]),
 761    RpoDigest::new([
 762        Felt::new(0xdadc2beb7ccfe3fa),
 763        Felt::new(0x218532461f981fb4),
 764        Felt::new(0xf0455f1d4e2f9732),
 765        Felt::new(0xa7338b43d2b7e62d),
 766    ]),
 767    RpoDigest::new([
 768        Felt::new(0x195d8bc1cfe2711a),
 769        Felt::new(0x44e392ba7e259f47),
 770        Felt::new(0x480120d41e18ab3c),
 771        Felt::new(0x2056ffb29c2d89d1),
 772    ]),
 773    RpoDigest::new([
 774        Felt::new(0x382e33ba5fe6ada3),
 775        Felt::new(0x45402a8903efebc9),
 776        Felt::new(0xb9b0d63a59c70da),
 777        Felt::new(0x7afebd4726d8cfe5),
 778    ]),
 779    RpoDigest::new([
 780        Felt::new(0xbf60bf6b45a4c9d),
 781        Felt::new(0xfb5b9b553646f19c),
 782        Felt::new(0x9949b60ce7639da3),
 783        Felt::new(0x9c62552c0d1868ff),
 784    ]),
 785    RpoDigest::new([
 786        Felt::new(0xdb2a0aba0fc5e4f8),
 787        Felt::new(0x8ee4f01d4b0fa49e),
 788        Felt::new(0xd70a17a77b5c4a03),
 789        Felt::new(0x57aaaa5b48fea66e),
 790    ]),
 791    RpoDigest::new([
 792        Felt::new(0x6d635940443564cb),
 793        Felt::new(0xc7fbf0e26b5e3ff6),
 794        Felt::new(0xa45bce664368b65e),
 795        Felt::new(0xd6c5c1a92be0c60d),
 796    ]),
 797    RpoDigest::new([
 798        Felt::new(0x6ea62d6033fb2dd3),
 799        Felt::new(0x1a37910cf90ec6d8),
 800        Felt::new(0x83d826e9933760b5),
 801        Felt::new(0xf8387c90d9c6b5a9),
 802    ]),
 803    RpoDigest::new([
 804        Felt::new(0x134766f1da2fbc91),
 805        Felt::new(0xcfaeea545df2c757),
 806        Felt::new(0xd0accefaed1eaa0f),
 807        Felt::new(0xec38d4053f84b163),
 808    ]),
 809    RpoDigest::new([
 810        Felt::new(0xb02ad1e757380aee),
 811        Felt::new(0x4538b8ea13112d4),
 812        Felt::new(0xb2d761fe842a2a85),
 813        Felt::new(0x8e98d58adf5a1f29),
 814    ]),
 815    RpoDigest::new([
 816        Felt::new(0x44603d9549ddee64),
 817        Felt::new(0x43de72d570967bbb),
 818        Felt::new(0x4a3e71144e62d0fa),
 819        Felt::new(0xffb2fdcb48965939),
 820    ]),
 821    RpoDigest::new([
 822        Felt::new(0x606f3ee12fe9ec0c),
 823        Felt::new(0xe7d494ab8e483d87),
 824        Felt::new(0x3b47f7c0d316cd4a),
 825        Felt::new(0x86f941c7fa834581),
 826    ]),
 827    RpoDigest::new([
 828        Felt::new(0x30c2385facf08b86),
 829        Felt::new(0x4446168e25ac2c21),
 830        Felt::new(0x61c6db1c3f283b21),
 831        Felt::new(0x2fdf6bc360bf803),
 832    ]),
 833    RpoDigest::new([
 834        Felt::new(0xeec8d9cc3e46d243),
 835        Felt::new(0x65bcae511dcce39),
 836        Felt::new(0xd3da5bbfdbd09cd3),
 837        Felt::new(0xe7c35fc3d11216a5),
 838    ]),
 839    RpoDigest::new([
 840        Felt::new(0x841fb6fb35e7b49b),
 841        Felt::new(0xfc4e2e1239caa7b8),
 842        Felt::new(0x37cb93ec88f102e5),
 843        Felt::new(0xa707a1556032152c),
 844    ]),
 845    RpoDigest::new([
 846        Felt::new(0x37c67bd7b7cef984),
 847        Felt::new(0x75bbe46da2ee5c90),
 848        Felt::new(0x3a5c568d1f71cab1),
 849        Felt::new(0x36939cdca2dc0b55),
 850    ]),
 851    RpoDigest::new([
 852        Felt::new(0x4f76756a55f3a644),
 853        Felt::new(0xd30f8fa45394aff4),
 854        Felt::new(0x65c55096158b202f),
 855        Felt::new(0x368a5fb0b0d475d0),
 856    ]),
 857    RpoDigest::new([
 858        Felt::new(0xa9b9acd256cabb0f),
 859        Felt::new(0xd8b1170f301208c7),
 860        Felt::new(0xab152f908d46bf8),
 861        Felt::new(0x1b7a10556730ec16),
 862    ]),
 863    RpoDigest::new([
 864        Felt::new(0xd967a72076e3059c),
 865        Felt::new(0xbd1015a08ffe8881),
 866        Felt::new(0xf72f186dde0c6e78),
 867        Felt::new(0xa58910205352895a),
 868    ]),
 869    RpoDigest::new([
 870        Felt::new(0x130333f2fd400a4d),
 871        Felt::new(0xf20104837a118d6e),
 872        Felt::new(0xda1e5d608fb9062c),
 873        Felt::new(0xb8ac5c76d60950b8),
 874    ]),
 875    RpoDigest::new([
 876        Felt::new(0x65d0deae6fb0c6cb),
 877        Felt::new(0x1b442ae344dcd9e7),
 878        Felt::new(0x1eedabab8fc07fa4),
 879        Felt::new(0xb0dc89b96f256189),
 880    ]),
 881    RpoDigest::new([
 882        Felt::new(0xef88de626968c17a),
 883        Felt::new(0x569a01072cdbbc2b),
 884        Felt::new(0xc99bbba6d083c68f),
 885        Felt::new(0x9ed4a176fe341849),
 886    ]),
 887    RpoDigest::new([
 888        Felt::new(0x5d49d1e9d17448a6),
 889        Felt::new(0x6974d510bc47ee66),
 890        Felt::new(0xbcbea4dec0b68586),
 891        Felt::new(0xdaa5457e0cfd3e61),
 892    ]),
 893    RpoDigest::new([
 894        Felt::new(0x9fceba739503cda0),
 895        Felt::new(0xb9daf271ac42c8ba),
 896        Felt::new(0x10fe3e8de8680d83),
 897        Felt::new(0xd7e1dc73ced7730b),
 898    ]),
 899    RpoDigest::new([
 900        Felt::new(0x93ec6c422d4271ea),
 901        Felt::new(0x73923813232b0e70),
 902        Felt::new(0xbbe6a4441a900b65),
 903        Felt::new(0x36b2164f37c9319b),
 904    ]),
 905    RpoDigest::new([
 906        Felt::new(0xce3ecb2eed624694),
 907        Felt::new(0xb7e1d75fff7a454c),
 908        Felt::new(0x86c24aa3a8d92d2b),
 909        Felt::new(0xb1ba74cafa9ce649),
 910    ]),
 911    RpoDigest::new([
 912        Felt::new(0xb5fae724eb357479),
 913        Felt::new(0x359532ddc4840cb9),
 914        Felt::new(0x4b111251e037e9fa),
 915        Felt::new(0xfcdab1cdd314c1d9),
 916    ]),
 917    RpoDigest::new([
 918        Felt::new(0xb3a89464d21c9ff1),
 919        Felt::new(0x8136e1b457a59ca8),
 920        Felt::new(0x88b0fa606b53c4d5),
 921        Felt::new(0x89645f8a9dfe97a2),
 922    ]),
 923    RpoDigest::new([
 924        Felt::new(0xfe115ef35b814cbf),
 925        Felt::new(0x63de467fb93b6851),
 926        Felt::new(0x17c73b03c9f44ad8),
 927        Felt::new(0x53742721f568b5be),
 928    ]),
 929    RpoDigest::new([
 930        Felt::new(0xd8110ea6e905cc2),
 931        Felt::new(0xd67b3c7cea25100),
 932        Felt::new(0x9e49b38ed51d1c60),
 933        Felt::new(0xe9e24f9b597c9bfd),
 934    ]),
 935    RpoDigest::new([
 936        Felt::new(0xefe9086b5bb5a504),
 937        Felt::new(0x991f92a90c9346a3),
 938        Felt::new(0xe4fab215a20f453b),
 939        Felt::new(0x4e4d4dde9146d61a),
 940    ]),
 941    RpoDigest::new([
 942        Felt::new(0xaa998c3b26497ffa),
 943        Felt::new(0x985bd5cf4ccefb3c),
 944        Felt::new(0xce44e80aa02424bb),
 945        Felt::new(0x75158a37503aed75),
 946    ]),
 947    RpoDigest::new([
 948        Felt::new(0xdb61760c917116f1),
 949        Felt::new(0xf378c9645174a832),
 950        Felt::new(0x1216aa71b73e7fac),
 951        Felt::new(0x8a4e7f0591a129fd),
 952    ]),
 953    RpoDigest::new([
 954        Felt::new(0xaf11a04daaf4ed67),
 955        Felt::new(0xd3e59f0d7dad9064),
 956        Felt::new(0x30c206089a2c294d),
 957        Felt::new(0xe104db59761e8a99),
 958    ]),
 959    RpoDigest::new([
 960        Felt::new(0x70b545ba7a6d447),
 961        Felt::new(0x6ac0e423ddf68913),
 962        Felt::new(0xf9b50997257bb033),
 963        Felt::new(0xdac37c7b1c18b48a),
 964    ]),
 965    RpoDigest::new([
 966        Felt::new(0xd182b9dff0fcd5c0),
 967        Felt::new(0xf87619ae86b6eb02),
 968        Felt::new(0x6838c1b612b17cb5),
 969        Felt::new(0x9b705d5b6bcf92c),
 970    ]),
 971    RpoDigest::new([
 972        Felt::new(0xfba622b3026c6193),
 973        Felt::new(0xdacde486f8129b96),
 974        Felt::new(0xd5acd22a7c2cf6aa),
 975        Felt::new(0xf5beb40535e6c0f2),
 976    ]),
 977    RpoDigest::new([
 978        Felt::new(0x59bde17b2d501969),
 979        Felt::new(0xb4abe1389123d3b9),
 980        Felt::new(0x683d8dd8635d9a67),
 981        Felt::new(0x347e01da4c07833),
 982    ]),
 983    RpoDigest::new([
 984        Felt::new(0x4e28956ab7162a06),
 985        Felt::new(0xccfcc7358f48c727),
 986        Felt::new(0x7b3485f20c979144),
 987        Felt::new(0xeeb27fa694f1c8fd),
 988    ]),
 989    RpoDigest::new([
 990        Felt::new(0x275b2c0ee883807b),
 991        Felt::new(0x8f68f2016c1391cd),
 992        Felt::new(0xb59fdccb20322765),
 993        Felt::new(0xeb9b902c5351d5d4),
 994    ]),
 995    RpoDigest::new([
 996        Felt::new(0xb767d8cb8816cc8e),
 997        Felt::new(0xbd29bb02cdcbc9af),
 998        Felt::new(0xeb1dca9bfebee6f),
 999        Felt::new(0x57597da8109c0354),
1000    ]),
1001    RpoDigest::new([
1002        Felt::new(0xeb32a8db8cf216),
1003        Felt::new(0xeb5532ac68f304c1),
1004        Felt::new(0x9bca72ffccb957ee),
1005        Felt::new(0x33d4b152ebedb841),
1006    ]),
1007    RpoDigest::new([
1008        Felt::new(0x439b20dce9810169),
1009        Felt::new(0x2b693e2530a1b88c),
1010        Felt::new(0x36b8898f4e900c7a),
1011        Felt::new(0x7bf5064dde3a0da1),
1012    ]),
1013    RpoDigest::new([
1014        Felt::new(0x8794201ce6158fe0),
1015        Felt::new(0xfcc53644557471f3),
1016        Felt::new(0xa66d87f6ae6f64d0),
1017        Felt::new(0x4e876d9d933b2ad0),
1018    ]),
1019    RpoDigest::new([
1020        Felt::new(0x6ff8f4900e43bab6),
1021        Felt::new(0x40014f298cb7b9a3),
1022        Felt::new(0x9d6b252ff946ee3d),
1023        Felt::new(0xb014d99ab8508072),
1024    ]),
1025    RpoDigest::new([
1026        Felt::new(0x9cdd5a4a37511cae),
1027        Felt::new(0x684444122d770c18),
1028        Felt::new(0x8982944b22a22577),
1029        Felt::new(0x50a58d944629de54),
1030    ]),
1031    RpoDigest::new([
1032        Felt::new(0x853f5b8ad557fac3),
1033        Felt::new(0xdab1743c03b8da56),
1034        Felt::new(0xc70d6683d4f4c086),
1035        Felt::new(0x2f1d0f67a5dfae4c),
1036    ]),
1037    RpoDigest::new([
1038        Felt::new(0xf3b6fe76eb11284),
1039        Felt::new(0xbeb9e98b146c63a8),
1040        Felt::new(0xc7e8824fce7777ad),
1041        Felt::new(0x5229918b04410d6a),
1042    ]),
1043    RpoDigest::new([
1044        Felt::new(0xc170c46601ffc4f3),
1045        Felt::new(0x1258e8e47103c39b),
1046        Felt::new(0x612e99da984aac99),
1047        Felt::new(0xc82fcfcf56d6dd94),
1048    ]),
1049    RpoDigest::new([
1050        Felt::new(0xf793819d04d5679d),
1051        Felt::new(0xb738b97ec0a52dd3),
1052        Felt::new(0x4df897389119a098),
1053        Felt::new(0xa5af45eb0d007785),
1054    ]),
1055    RpoDigest::new([
1056        Felt::new(0xfcf59c6c9d7280e7),
1057        Felt::new(0x662b993b320f3345),
1058        Felt::new(0xeb8e04ba28f156fa),
1059        Felt::new(0xe72233ee6a444749),
1060    ]),
1061    RpoDigest::new([
1062        Felt::new(0x7ad6b7badfc9e757),
1063        Felt::new(0x3332f340184af6f5),
1064        Felt::new(0xe92a736dcdf52022),
1065        Felt::new(0xf1759f8041119245),
1066    ]),
1067    RpoDigest::new([
1068        Felt::new(0x166382d3c8ca3a95),
1069        Felt::new(0x36c8c25f971d771a),
1070        Felt::new(0xe82cc977ee1402cc),
1071        Felt::new(0xe13f6dc2ab919177),
1072    ]),
1073    RpoDigest::new([
1074        Felt::new(0x41fb8b9d5a9ab5e8),
1075        Felt::new(0xb2a608f5d6fbc37d),
1076        Felt::new(0xe81719d9778c54b4),
1077        Felt::new(0xcc0d4373ef2bb8e1),
1078    ]),
1079    RpoDigest::new([
1080        Felt::new(0x60b3788c45c1bc29),
1081        Felt::new(0xcb38969a428c5423),
1082        Felt::new(0xca11f6b9d957f57c),
1083        Felt::new(0x7a166881648514cb),
1084    ]),
1085    RpoDigest::new([
1086        Felt::new(0x3548d7dcbe4af37f),
1087        Felt::new(0xb199194f25a6f55a),
1088        Felt::new(0x751017bda8f0d816),
1089        Felt::new(0x80117260c6525c4a),
1090    ]),
1091    RpoDigest::new([
1092        Felt::new(0x1d1d34d842e95671),
1093        Felt::new(0x38ab2833c4a2bded),
1094        Felt::new(0x3a53caf5f6e20f5f),
1095        Felt::new(0xfee946c5ebce837d),
1096    ]),
1097    RpoDigest::new([
1098        Felt::new(0x65dbb5d849e46f92),
1099        Felt::new(0x753679d0d09d1250),
1100        Felt::new(0xc539adf9062e7698),
1101        Felt::new(0xd76f4b13d2635af3),
1102    ]),
1103    RpoDigest::new([
1104        Felt::new(0x9eae446581f7076d),
1105        Felt::new(0x237138e3a1c55ee8),
1106        Felt::new(0xfb54da0b58969484),
1107        Felt::new(0x9a899375c4f10483),
1108    ]),
1109    RpoDigest::new([
1110        Felt::new(0x88b12578d3c36cc4),
1111        Felt::new(0x9cd868d6a29df146),
1112        Felt::new(0x5443d21524637821),
1113        Felt::new(0xceb3692fad9f76b9),
1114    ]),
1115    RpoDigest::new([
1116        Felt::new(0x4e45d3e34ebfcb0d),
1117        Felt::new(0xedca6a0f8d90eb2e),
1118        Felt::new(0x1a182dad4a914731),
1119        Felt::new(0xd89946f41f53f106),
1120    ]),
1121    RpoDigest::new([
1122        Felt::new(0x42a89e1abee8b12d),
1123        Felt::new(0x3af360678475225a),
1124        Felt::new(0x3e28a1cdede0c7a3),
1125        Felt::new(0x25cc76ad1c8788e),
1126    ]),
1127    RpoDigest::new([
1128        Felt::new(0xa6e955e3b0721737),
1129        Felt::new(0xbbd721b51cbc605f),
1130        Felt::new(0xfa537854669f20a5),
1131        Felt::new(0x2a1ab83bb24d43f7),
1132    ]),
1133    RpoDigest::new([
1134        Felt::new(0x1c289dc62c4e7907),
1135        Felt::new(0x186437cf1f8b3abf),
1136        Felt::new(0x929244addee54abf),
1137        Felt::new(0x42ec87a9141b58fb),
1138    ]),
1139    RpoDigest::new([
1140        Felt::new(0xf5ea743b81e59fee),
1141        Felt::new(0x32e2c826d0fc57d4),
1142        Felt::new(0xbc411bca1b745388),
1143        Felt::new(0xc9af8de5bc3b8692),
1144    ]),
1145    RpoDigest::new([
1146        Felt::new(0xf75129028d95ebab),
1147        Felt::new(0xf9d02d7713784ff2),
1148        Felt::new(0x944b5fea457c946b),
1149        Felt::new(0xa6645d6f5389a91f),
1150    ]),
1151    RpoDigest::new([
1152        Felt::new(0x236ce9e32fb0131c),
1153        Felt::new(0x92cac3a2b67600b8),
1154        Felt::new(0x437914d1d9e409bb),
1155        Felt::new(0x6bff102a4ea81e38),
1156    ]),
1157    RpoDigest::new([
1158        Felt::new(0x9906825ec6d45f25),
1159        Felt::new(0x1245ccf4121950a2),
1160        Felt::new(0xff82337f357949bb),
1161        Felt::new(0xe1f59f6b824f97af),
1162    ]),
1163    RpoDigest::new([
1164        Felt::new(0xd6030ea8046f0d1e),
1165        Felt::new(0x69fd3c732586f5db),
1166        Felt::new(0x765cccb10c151f30),
1167        Felt::new(0xd1bad2f1ba1bdc5b),
1168    ]),
1169    RpoDigest::new([
1170        Felt::new(0xd4a0cff6578c123e),
1171        Felt::new(0xf11a17948930b14a),
1172        Felt::new(0xd128dd2a4213b53c),
1173        Felt::new(0x2df8fe54f23f6b91),
1174    ]),
1175    RpoDigest::new([
1176        Felt::new(0xa891ab94552907b2),
1177        Felt::new(0xc64b69708f99b16e),
1178        Felt::new(0xb99d29be9af9df15),
1179        Felt::new(0xa452647d61bd3d7b),
1180    ]),
1181    RpoDigest::new([
1182        Felt::new(0xd339a7d5f35bdf7e),
1183        Felt::new(0x296127097a98dbdd),
1184        Felt::new(0x66d3eac876c1a984),
1185        Felt::new(0x2714db555ccbdca4),
1186    ]),
1187    RpoDigest::new([
1188        Felt::new(0x6ca87920a067acd6),
1189        Felt::new(0x55a102d742879de5),
1190        Felt::new(0xa3f57a4b6a56d7f3),
1191        Felt::new(0x18770879a832a177),
1192    ]),
1193    RpoDigest::new([
1194        Felt::new(0x1208793a0a77e984),
1195        Felt::new(0x89ed5a1f45b34219),
1196        Felt::new(0x8d74e6f75e77ef03),
1197        Felt::new(0xa78cc9b7d29a1ee9),
1198    ]),
1199    RpoDigest::new([
1200        Felt::new(0x345fffecefd56a65),
1201        Felt::new(0x23dec03b9f663006),
1202        Felt::new(0x66f452be070b34d8),
1203        Felt::new(0xe1c6aaaa54765dc),
1204    ]),
1205    RpoDigest::new([
1206        Felt::new(0xb7b714ca60c77011),
1207        Felt::new(0x5ffe9476baa10259),
1208        Felt::new(0xbea15cd2b4150dda),
1209        Felt::new(0x4467804ab919e3d8),
1210    ]),
1211    RpoDigest::new([
1212        Felt::new(0x21c65ff7a4185640),
1213        Felt::new(0x5d20fffcc7779035),
1214        Felt::new(0x92b571249fa728d5),
1215        Felt::new(0xe9e2eeca83b49342),
1216    ]),
1217    RpoDigest::new([
1218        Felt::new(0x2be46f9d0b431948),
1219        Felt::new(0xa5c1a12c95a56f44),
1220        Felt::new(0xc620adca5cd874),
1221        Felt::new(0x51c64b969c1dc0c9),
1222    ]),
1223    RpoDigest::new([
1224        Felt::new(0xae9e7f421ab12b3f),
1225        Felt::new(0x5f90e40cdb47bbec),
1226        Felt::new(0x3d2a6be00ce19d31),
1227        Felt::new(0x609632a98643a06c),
1228    ]),
1229    RpoDigest::new([
1230        Felt::new(0xde0f38c1d4cf5977),
1231        Felt::new(0x3d6f0f44105b0fb2),
1232        Felt::new(0x5f34005bed22db6f),
1233        Felt::new(0x377009a91543c872),
1234    ]),
1235    RpoDigest::new([
1236        Felt::new(0x8763f1c59420f662),
1237        Felt::new(0xbe15cc9b37fdbdb3),
1238        Felt::new(0xeed75857d5451487),
1239        Felt::new(0x10b3507901fcfb8b),
1240    ]),
1241    RpoDigest::new([
1242        Felt::new(0x2e40aeb53f7ba2f5),
1243        Felt::new(0xed598b103221e46),
1244        Felt::new(0xed943dae7f3be8f7),
1245        Felt::new(0x7115a61b37a95c30),
1246    ]),
1247    RpoDigest::new([
1248        Felt::new(0xef9bdb6947abe190),
1249        Felt::new(0xfe47c74c5ad62e2b),
1250        Felt::new(0xf85ee41bc6960d64),
1251        Felt::new(0x55e51b57d5990e2b),
1252    ]),
1253    RpoDigest::new([
1254        Felt::new(0x81798808c02cffe0),
1255        Felt::new(0x22df79cb29991e51),
1256        Felt::new(0x965714f831e09f90),
1257        Felt::new(0x67ac8aef55047894),
1258    ]),
1259    RpoDigest::new([
1260        Felt::new(0x321d58dfe138e326),
1261        Felt::new(0xee80b399b444c937),
1262        Felt::new(0x6cbc565ad3d69ccf),
1263        Felt::new(0x6ea9e44922bdc48e),
1264    ]),
1265    RpoDigest::new([
1266        Felt::new(0xf2a11cd35120f6c3),
1267        Felt::new(0x4e77378973b2ca8),
1268        Felt::new(0x1adb26e6c1630440),
1269        Felt::new(0x42e5495895baee92),
1270    ]),
1271    RpoDigest::new([
1272        Felt::new(0xe07020daabcdebae),
1273        Felt::new(0x2d5c6456b50a05c3),
1274        Felt::new(0x3050bdec1715085b),
1275        Felt::new(0xe4d05bce00c4f30d),
1276    ]),
1277    RpoDigest::new([
1278        Felt::new(0xe64d54038f19cbc3),
1279        Felt::new(0xde70db9c37ffc1a6),
1280        Felt::new(0xb4a54682fe025b15),
1281        Felt::new(0xcb4e28247a791f29),
1282    ]),
1283    RpoDigest::new([
1284        Felt::new(0x9cd2815cef52b092),
1285        Felt::new(0xd46fa4485d7aaf5c),
1286        Felt::new(0x275777fd3b9637f7),
1287        Felt::new(0x684317aab8bb48da),
1288    ]),
1289    RpoDigest::new([
1290        Felt::new(0xfef7ca5bc1a8531),
1291        Felt::new(0x66da24a709f70f60),
1292        Felt::new(0xc6d0048b0222dc8d),
1293        Felt::new(0xd82cc216eed266b4),
1294    ]),
1295    RpoDigest::new([
1296        Felt::new(0xc11007d4b20c68e8),
1297        Felt::new(0xb88dea2c92f105d1),
1298        Felt::new(0xfe885fceee959992),
1299        Felt::new(0x4d8c71eeb47c8f90),
1300    ]),
1301    RpoDigest::new([
1302        Felt::new(0x980fbe89dd050886),
1303        Felt::new(0xdb7ad3a9a9f39be1),
1304        Felt::new(0xf830b6439c7e9bc0),
1305        Felt::new(0xdd76938b7c686c07),
1306    ]),
1307    RpoDigest::new([
1308        Felt::new(0xb678629d183cf841),
1309        Felt::new(0x664f19c21a6465bc),
1310        Felt::new(0xba142578e79eb9d0),
1311        Felt::new(0x1d57cbcdb2bbcb18),
1312    ]),
1313    RpoDigest::new([
1314        Felt::new(0xc8822aae44990ed3),
1315        Felt::new(0xf7edce1d2a235ab4),
1316        Felt::new(0x8f35d229e981ca01),
1317        Felt::new(0x50dc4c673c8fc58),
1318    ]),
1319    RpoDigest::new([
1320        Felt::new(0x86edc215b92306e7),
1321        Felt::new(0xe333ce17fd0f40df),
1322        Felt::new(0xabcca6409bb48e29),
1323        Felt::new(0xa110affea61c2951),
1324    ]),
1325    RpoDigest::new([
1326        Felt::new(0x269d782ba380a2e4),
1327        Felt::new(0x32bdc65a619310cd),
1328        Felt::new(0x52895e02cb1df991),
1329        Felt::new(0x1749f76388896455),
1330    ]),
1331    RpoDigest::new([
1332        Felt::new(0x8f99ac4698f12102),
1333        Felt::new(0x9983407c99f948c5),
1334        Felt::new(0x7b89856f980cb407),
1335        Felt::new(0x8acff0a017e68367),
1336    ]),
1337    RpoDigest::new([
1338        Felt::new(0xe7983973c759318a),
1339        Felt::new(0xb389a6754d7976ca),
1340        Felt::new(0x1d7ded5044c6ede6),
1341        Felt::new(0x4290fc214bd001d7),
1342    ]),
1343    RpoDigest::new([
1344        Felt::new(0x2a1607db398812eb),
1345        Felt::new(0xbbaaed6d5de95899),
1346        Felt::new(0x53699ff1add9cc48),
1347        Felt::new(0x71c99c4c20a2cbe9),
1348    ]),
1349    RpoDigest::new([
1350        Felt::new(0x9c211abaf37beba7),
1351        Felt::new(0x44f91ee2c8f84830),
1352        Felt::new(0xdaf1ca95546ff105),
1353        Felt::new(0x4d15218eb972c855),
1354    ]),
1355    RpoDigest::new([
1356        Felt::new(0x47018b067647ff40),
1357        Felt::new(0xabd25bc93e3cd280),
1358        Felt::new(0x1e33fd9953262800),
1359        Felt::new(0x9b8f68c64db159c3),
1360    ]),
1361    RpoDigest::new([
1362        Felt::new(0xa20fb2bcf2636418),
1363        Felt::new(0xdc8996a5085ba820),
1364        Felt::new(0x349b49cddfc936d4),
1365        Felt::new(0x1d816c1d0bfef815),
1366    ]),
1367    RpoDigest::new([
1368        Felt::new(0xc19364d95b916e9b),
1369        Felt::new(0xdcb0cf99f9ca31b5),
1370        Felt::new(0x1b5493d83dca1621),
1371        Felt::new(0xf0758e5e3459a0f9),
1372    ]),
1373    RpoDigest::new([
1374        Felt::new(0xdf2cb895c1de5b3a),
1375        Felt::new(0xb7347b591512353a),
1376        Felt::new(0xfdbbce7837412eb7),
1377        Felt::new(0x893fa2af604d446f),
1378    ]),
1379    RpoDigest::new([
1380        Felt::new(0x75d2b8fc6043d11e),
1381        Felt::new(0xa6559eaebeed7d5f),
1382        Felt::new(0xa9379773dad056b3),
1383        Felt::new(0xf3bcf80d0748d3c1),
1384    ]),
1385    RpoDigest::new([
1386        Felt::new(0x35b731f6c583214a),
1387        Felt::new(0x26249962927dd05f),
1388        Felt::new(0x75fc431a3e7c9e93),
1389        Felt::new(0x170c1036d421083d),
1390    ]),
1391    RpoDigest::new([
1392        Felt::new(0x1d6fbabfdf0d9096),
1393        Felt::new(0x7d7c9687d9eca6cc),
1394        Felt::new(0xd62974b75d27af1c),
1395        Felt::new(0x93ed9a3825cc1c35),
1396    ]),
1397    RpoDigest::new([
1398        Felt::new(0xd30946664518ff6e),
1399        Felt::new(0xd3e54aedfb7ba7e5),
1400        Felt::new(0xb91107b2bfadfa1d),
1401        Felt::new(0x2f7b0b2cb06cc43b),
1402    ]),
1403    RpoDigest::new([
1404        Felt::new(0x47d1dc850260558e),
1405        Felt::new(0x8e5dbde02c522c39),
1406        Felt::new(0x3464d9fe9fd4a1e),
1407        Felt::new(0xf9e5bcfe534437be),
1408    ]),
1409    RpoDigest::new([
1410        Felt::new(0x83378fd3d8e8a235),
1411        Felt::new(0x5c12793119b6dfdb),
1412        Felt::new(0xfc6f110fe6acbc57),
1413        Felt::new(0x3138336422622a48),
1414    ]),
1415    RpoDigest::new([
1416        Felt::new(0x239c939a0a9787a0),
1417        Felt::new(0x6c0d389b75f1cfb4),
1418        Felt::new(0xc1947a136998e2a1),
1419        Felt::new(0x76c1779e38ffb573),
1420    ]),
1421    RpoDigest::new([
1422        Felt::new(0x7a266f705e62cd23),
1423        Felt::new(0x7246a2960a038c2),
1424        Felt::new(0xc1f47087a22fa2cb),
1425        Felt::new(0xf298d4651af0b8b2),
1426    ]),
1427    RpoDigest::new([
1428        Felt::new(0x623bcdb6cc15e3ad),
1429        Felt::new(0x8a6e820adf4725c3),
1430        Felt::new(0x48737f1587e13208),
1431        Felt::new(0xbf747c141bf3564c),
1432    ]),
1433    RpoDigest::new([
1434        Felt::new(0x14842ec18fe2348c),
1435        Felt::new(0x3701e593309841cf),
1436        Felt::new(0x8e85c9f1884fdf7b),
1437        Felt::new(0xa4cc06a6b8cae8e3),
1438    ]),
1439    RpoDigest::new([
1440        Felt::new(0xcfebb64f4bf4f79),
1441        Felt::new(0x54754d70569eeecd),
1442        Felt::new(0x50405a6b79d1ae83),
1443        Felt::new(0x9075f17ccebc056c),
1444    ]),
1445    RpoDigest::new([
1446        Felt::new(0x9a93d03d0f9c825f),
1447        Felt::new(0xf704fa1580fe53c7),
1448        Felt::new(0xf95df7a7d06a22b7),
1449        Felt::new(0x8462e18adf8b3607),
1450    ]),
1451    RpoDigest::new([
1452        Felt::new(0xb5210a5cbd9556b4),
1453        Felt::new(0x6fd4218ebf3c7336),
1454        Felt::new(0x19d661830be725ae),
1455        Felt::new(0x28a2862b49428353),
1456    ]),
1457    RpoDigest::new([
1458        Felt::new(0x93ceddc8a18724fe),
1459        Felt::new(0x4e3299172e9130ed),
1460        Felt::new(0x80229e0e1808c860),
1461        Felt::new(0x13f479347eb7fd78),
1462    ]),
1463    RpoDigest::new([
1464        Felt::new(0x86e4db88d39d4203),
1465        Felt::new(0x81c24ca37b068741),
1466        Felt::new(0x12b7d21371ca58f5),
1467        Felt::new(0xb6546d4722efcbb0),
1468    ]),
1469    RpoDigest::new([
1470        Felt::new(0x96ce1320155172c5),
1471        Felt::new(0xbf622c3a5ab86fba),
1472        Felt::new(0x5876a31266554836),
1473        Felt::new(0x4f23fd3646963922),
1474    ]),
1475    RpoDigest::new([
1476        Felt::new(0x48f59a613c9baa43),
1477        Felt::new(0x761de5ad2fd2c806),
1478        Felt::new(0x2db99e809e35728f),
1479        Felt::new(0x38b05ac131a0edc0),
1480    ]),
1481    RpoDigest::new([
1482        Felt::new(0x6e4fba2ef071cb8a),
1483        Felt::new(0x77c415814dc5a0e5),
1484        Felt::new(0xa0492c8344a64bb1),
1485        Felt::new(0xc6dd5e8dbc841fe5),
1486    ]),
1487    RpoDigest::new([
1488        Felt::new(0xa31e2e634187fec),
1489        Felt::new(0xa4c019c12457e4b1),
1490        Felt::new(0xa7b9de27a75ec6b4),
1491        Felt::new(0x990bacb76b218164),
1492    ]),
1493    RpoDigest::new([
1494        Felt::new(0x97c85363ab1c997e),
1495        Felt::new(0xa95cd8ccab0b41b3),
1496        Felt::new(0xb98b7ebc3680470b),
1497        Felt::new(0x22fe1b13640f19a9),
1498    ]),
1499    RpoDigest::new([
1500        Felt::new(0x113c9a5f0dfbf187),
1501        Felt::new(0x77f2dc9c46f3d699),
1502        Felt::new(0xc3d92d34c950f8f4),
1503        Felt::new(0x9cc6aaf7ffdaf2b6),
1504    ]),
1505    RpoDigest::new([
1506        Felt::new(0xa5f51bc68b62924c),
1507        Felt::new(0x54182d0b8b519f87),
1508        Felt::new(0x15b42760e2ad50a5),
1509        Felt::new(0x3b2d54cae046788),
1510    ]),
1511    RpoDigest::new([
1512        Felt::new(0xefec815078a58b7d),
1513        Felt::new(0x2d02bd88ae2b8a3d),
1514        Felt::new(0x7b3dee115eaac60a),
1515        Felt::new(0x8e659da09a00ffad),
1516    ]),
1517    RpoDigest::new([
1518        Felt::new(0x1987fb02253b4338),
1519        Felt::new(0xa7c1e3a856b329be),
1520        Felt::new(0x8d90defd305553e8),
1521        Felt::new(0xb132ee2f7526c94d),
1522    ]),
1523    RpoDigest::new([
1524        Felt::new(0x1556b5441e77734f),
1525        Felt::new(0xa2ceaf4b2822a233),
1526        Felt::new(0x41e5ee79d553e00c),
1527        Felt::new(0xf2cdc04fd67a69f2),
1528    ]),
1529    RpoDigest::new([
1530        Felt::new(0xd4a8d6025cb6e3a),
1531        Felt::new(0xd8d181277e183f21),
1532        Felt::new(0x3bf9725618de11d3),
1533        Felt::new(0xb26a0eb5a7d9c86e),
1534    ]),
1535    RpoDigest::new([
1536        Felt::new(0xcdc5ad1e45e351c2),
1537        Felt::new(0xf00b06807244caa6),
1538        Felt::new(0xbbb01495c9a7e17d),
1539        Felt::new(0xd9614df7e656a73f),
1540    ]),
1541    RpoDigest::new([
1542        Felt::new(0xfc61931c05c4a55f),
1543        Felt::new(0xcff6ce2372650a9),
1544        Felt::new(0x6e6c32ff4dc92c6),
1545        Felt::new(0x1b72d8c04b0e409d),
1546    ]),
1547    RpoDigest::new([
1548        Felt::new(0x77d6e2f32439dbf0),
1549        Felt::new(0xa1f8ce9eb02419a5),
1550        Felt::new(0xd3ad9fb0cea61624),
1551        Felt::new(0x66ab5c684fbb8597),
1552    ]),
1553    RpoDigest::new([ZERO; WORD_SIZE]),
1554];
1555
1556#[test]
1557fn all_depths_opens_to_zero() {
1558    use super::Rpo256;
1559
1560    // assert the length of the static constants is correct and will cover every possible depth
1561    assert!(EMPTY_SUBTREES.len() > u8::MAX as usize);
1562
1563    for depth in 0..=u8::MAX {
1564        // fetch the subtrees and reverse it so the path is leaf -> root
1565        let mut subtree = EmptySubtreeRoots::empty_hashes(depth).to_vec();
1566        subtree.reverse();
1567
1568        // the length of the subtrees set must be equal to depth + 1 as we also
1569        // include the root
1570        assert_eq!(depth as usize + 1, subtree.len());
1571
1572        // assert the opening is zero
1573        let initial = RpoDigest::new([ZERO; WORD_SIZE]);
1574        assert_eq!(initial, subtree.remove(0));
1575
1576        // compute every node of the path manually and compare with the output
1577        subtree
1578            .into_iter()
1579            .scan(initial, |state, x| {
1580                *state = Rpo256::merge(&[*state; 2]);
1581                Some((x, *state))
1582            })
1583            .for_each(|(x, computed)| assert_eq!(x, computed));
1584    }
1585}