diff --git a/pallas-primitives/src/framework.rs b/pallas-primitives/src/framework.rs index 497501b..15677ca 100644 --- a/pallas-primitives/src/framework.rs +++ b/pallas-primitives/src/framework.rs @@ -20,3 +20,12 @@ where minicbor::decode(bytes).map_err(|e| e.into()) } } + +#[derive(Debug, Copy, Clone)] +pub enum Era { + Byron, + Shelley, + Allegra, // time-locks + Mary, // multi-assets + Alonzo, // smart-contracts +} diff --git a/pallas-primitives/src/probing.rs b/pallas-primitives/src/probing.rs index 9d8cc27..cb1ffed 100644 --- a/pallas-primitives/src/probing.rs +++ b/pallas-primitives/src/probing.rs @@ -2,33 +2,34 @@ use minicbor::decode::{Token, Tokenizer}; -pub enum BlockInference { - Byron, - Shelley, +use crate::Era; + +#[derive(Debug)] +pub enum Outcome { + Matched(Era), Inconclusive, } // Executes a very lightweight inspection of the initial tokens of the CBOR // payload and infers with a certain degree of confidence the type of Cardano // structure within. -pub fn probe_block_cbor(cbor: &[u8]) -> BlockInference { +pub fn probe_block_cbor_era(cbor: &[u8]) -> Outcome { let mut tokenizer = Tokenizer::new(cbor); if !matches!(tokenizer.next(), Some(Ok(Token::Array(2)))) { - return BlockInference::Inconclusive; + return Outcome::Inconclusive; } - if !matches!(tokenizer.next(), Some(Ok(Token::U8(_)))) { - return BlockInference::Inconclusive; - } - - //println!("{:?}", tokenizer.next()); - match tokenizer.next() { - Some(Ok(Token::Array(3))) => BlockInference::Byron, - Some(Ok(Token::Array(4))) => BlockInference::Shelley, - Some(Ok(Token::Array(5))) => BlockInference::Shelley, - _ => BlockInference::Inconclusive, + Some(Ok(Token::U8(variant))) => match variant { + 1 => Outcome::Matched(Era::Byron), + 2 => Outcome::Matched(Era::Shelley), + 3 => Outcome::Matched(Era::Allegra), + 4 => Outcome::Matched(Era::Mary), + 5 => Outcome::Matched(Era::Alonzo), + _ => Outcome::Inconclusive, + }, + _ => Outcome::Inconclusive, } } @@ -41,18 +42,48 @@ mod tests { let block_str = include_str!("byron/test_data/test1.block"); let bytes = hex::decode(block_str).unwrap(); - let inference = probe_block_cbor(bytes.as_slice()); + let inference = probe_block_cbor_era(bytes.as_slice()); - assert!(matches!(inference, BlockInference::Byron)); + assert!(matches!(inference, Outcome::Matched(Era::Byron))); } #[test] fn shelley_block_detected() { + let block_str = include_str!("test_data/shelley1.block"); + let bytes = hex::decode(block_str).unwrap(); + + let inference = probe_block_cbor_era(bytes.as_slice()); + + assert!(matches!(inference, Outcome::Matched(Era::Shelley))); + } + + #[test] + fn allegra_block_detected() { + let block_str = include_str!("test_data/allegra1.block"); + let bytes = hex::decode(block_str).unwrap(); + + let inference = probe_block_cbor_era(bytes.as_slice()); + + assert!(matches!(inference, Outcome::Matched(Era::Allegra))); + } + + #[test] + fn mary_block_detected() { + let block_str = include_str!("test_data/mary1.block"); + let bytes = hex::decode(block_str).unwrap(); + + let inference = probe_block_cbor_era(bytes.as_slice()); + + assert!(matches!(inference, Outcome::Matched(Era::Mary))); + } + + #[test] + fn alonzo_block_detected() { let block_str = include_str!("alonzo/test_data/test1.block"); let bytes = hex::decode(block_str).unwrap(); - let inference = probe_block_cbor(bytes.as_slice()); + let inference = probe_block_cbor_era(bytes.as_slice()); - assert!(matches!(inference, BlockInference::Shelley)); + assert!(matches!(inference, Outcome::Matched(Era::Alonzo))); } } diff --git a/pallas-primitives/src/test_data/allegra1.block b/pallas-primitives/src/test_data/allegra1.block new file mode 100644 index 0000000..a276b1f --- /dev/null +++ b/pallas-primitives/src/test_data/allegra1.block @@ -0,0 +1 @@ +820384828f1a004f3c641a011e1523582008d4d3e0caf55d66233e1e3421f97ea7423c2a82666e22ae216e464ff431a85058203593d74edc6c343c9e9b9d329f8356aedda414992f2f97c2bef93cf606b7b87a58205cd4a875fd1317f8176a910c6705cfdc80308d031c9a3fa6b1bc2b4b4d5621468258407b7d4c4bb23bf66c8aca7ce4830b9f1cadaee5061f89fa57995a8d07ec59f126730368e2b03c754b143a38a31c7a39ca830fb6de287129a27496a48602d39df058500c8cdf0ccba508d39bb915018c420dd057cd5d94fd2cf17b1c3a5f4522581dbdecc54e9de4d1e61d12b4d09db5a5be92b145d1b63e563ee8039af378b69b2e81669daca047d5e34750c34542e3503f0c825840000607436ed04d36164ca57f0f70bfe10ddc3f276540750dff3c0ca399047292c3355e4a488d0f13e548134661056f434f4c966c52f20c6580252c8a25601ded5850cb50509a5659569e8a1881d77dc335a781b245a14a499a7c04cdb9f6ee04be3ab3bf096c42a6c817198477bd2f10a426f7a7cf70d579d2238fecc3ca4597f8793ca02b02574ceb45fe9892997509ed0f1908ae5820dc6af41ca2a4eeb3d2969e559ddb65d2672f1b9aaf901fe4af425407952e290958209d0d3abaefdf5a2ccad0832a80759b8f8eb3c0629e9dc8bda3d44ebf658ab97601188d584051977ef95fbb458fa81ddc7e1ca6345e3f5fc70ae5b80b47d95fd39ed2940d1751ca7ce6dd24901265c299bf1994b3830ca10e995d7fde4beab807cbce03470604005901c0750da95fc1de2debd8cbde31d7f658bb41170695319a9468cde8cf21a93124f7db032571299748da724cbfda88d5f79fd89ac2b3fbd0748e25129ec2e74da20f96364f691ca551f8a7e71305d225a810783947759bf28d580a51244029c290e7c27e1d249f52ed39ac65f66529240ab76e36a4001df5a24b971557475379b24a695a9529646eeb7f1681a3d215fd6fe550654a1e7b06089b68f525b0aba6d91adf229eef5af4a3d602c1d29ba5f18c8a93bd6c950134f37ccf0ebf1b78fa2909f98ed560220de39302f56453b979da7843f6b0cacbe1a33739aa272f193bf9de69d083c2c885c1e226c0e0a35a2400059cead716cfa8064fb98f20162b2b3586c5dd29ac557ad542c610dd6576669823c757353fd03208313d8715268b32ef8ab62e02edaad3ea9c96de888d5933ccfc13e757f92bba98b23a5deb1cb860550f272f685a5bb9b88e2f6bbf227c049f90aea4540347bdac041b09bb75c83352fcea02f91c648156aeada5877eb3adba690c073a6fc1372a48ce8115ba3537243938ce366078d07c2f9dfdd92db07e0047b8d78d32fb4b55fec8810fd9d128c88df3c5d435dc82e163f9275dac718d06f680a3be8db4dc8dd512b059b1631191f283a500818258201e8f5d41ab9915c4cb0fcf1c4127e18585d957ac95b2b4879c3e02b02205cdcf00018182583901495a5a4dd65a483a5eaf6630f59a2c33e02e2c15d1d1bc39d1708ac457fd410378da5864e6b313db03488a085ca56376af0ab5e9854376401a3b76264b021a00029eb9031a011e324b05a1581de157fd410378da5864e6b313db03488a085ca56376af0ab5e9854376401a0068d5dba400848258201f15d61fa4462dffdb330d625b1fcbec930ea633b7bff5fce23e969660702ef500825820cc59f188f8e4027e98fa33404a7ce69b76e0c6b211f11ad71b4daacf67906ec900825820da82abf561c83cffd8657c05d27244081739eacb880b3b5b4db03b1a411911fa0d825820e125166ebe2e0b7bc781b9e7aa886a032ec87cb40e0bdc1acb5058a0555a8f82000188825839015fa4a029126ea6679f6cf29d15369dde7206472bf0f9d63e12a88f575fa4a029126ea6679f6cf29d15369dde7206472bf0f9d63e12a88f571b000000019fbcb30c82583901785eb7eb6c8286b8011a0adbf3ca1b4d37589b80cc6e42fdb4679adc39bc6cf63c0f9dd4f03df80accce7246bea60d649de4a8c4d5c0dca41a16d9fbfb82584c82d818584283581cacf4df690f13b4eaf82b816f399b2e1d8ab86976da93009b813d7758a101581e581cca3e553c9c63c5c2eef54d43a2e23449490865698bb72b3b1c039082001afa0dcc441b00000067e78e120582582b82d818582183581c62d2399c601895246274b8068266fa3138fd09f79fe636aa432db929a0001a5d1abc701a1263562082584c82d818584283581c3cc42d469376e7a5cfba6823160d341b5867c66d009124bd000bb109a101581e581cca3e553c9c63c5e89765f8436cd338c66da66d119ab3c27738826333001a65307a281b00000004dc9ffb9982584c82d818584283581c05bd51fb87d91b5290ecf18958de205badec391e4d643740edb2f0dfa101581e581c735437123ef5c61d0591c67ef0c94a5dc5c18653d6c629949595edef001adf8508d81a2c932a0382584c82d818584283581c5acbd13c916ce291ac4f41b1df2c4c75b8e917622040b54e3376e42da101581e581cca3e553c9c63c5dd0255704321b81423e0ffb4018d237e8e9a96ce3e001af6cde4f81b000000095b4f070082584c82d818584283581c8c8a6f436c8b04fe1c682aa81d417f2e82b41ebb06bf9aeb8a65a198a101581e581cca3e553c9c63c5b7f725d5432632ff88fecdf5936a00291efb732202001a1ec13f971b0000003452024d88021a00036a91031a011e30d9a5008182582026571cc2e731014dfee8536a0be0b816cc38b10ce38501db0e1a5eec4f04ae860001818258390192da16a658a4ecdb2c18b01e464f4ce2924f8830a304648674c1c2756162cdee35822637a84e896c6a8b05214cf21947f91b69122eb985891a00495250021a00061a1c031a011e3123048183028200581c6162cdee35822637a84e896c6a8b05214cf21947f91b69122eb98589581cae66e56ab11ccb39e882669f220a37956c683e4ce84fefd910012d7a83a100828258205f6f43cb12b59a3e5bf242528c8ab85e4feeb2acb89aa08e4948968f7bf2d9e0584010d19b492320347d5b6adf2137ec89f9c13d3fc07cc9b32f86a71fe001fcb75f36e3958949ef2b7e37377d89246b4a39463846402fa870f81d1845ef7c5c1d04825820f49ae225837477663687484ce73ac607ab7fe78600ca08d61db09e2e35d8e1b6584096c80781bd34262ab6f7b12f6592f0b943021e97e9c70ffc23635272c742932a51e4a252341c47a79f4e698235ab22beb3a75256b6476fd46749a68c6e86f60fa102848458200915adaebbd25d0f9a3242bb83c14bf5b012967ab8462acdee1912062a76117f58407a9ebc40eefdbcb1586e9805043ccc3285ee3864686fb1fb0d6d8075a41abd026864d0e92224982acfef061da2765effb26c75faa62c5ef3b656386782987c065820aa35c675609419a21a79ed83318278cbe669d4a4dadbfdcd6234e1315ba7c9685822a101581e581cca3e553c9c63c5a59118f7438117a8d6603837bc193303b5001b095b8458202f84330afbe6ab81c368ab0a850e8b6fa02daacc91709faf6bbdc811b4b5f82e5840bb878822cb198b1d245e2c46c20c930996067fbcb3469a8d36b68d6531add3e3e5081200890d906c70b1bd9e4333115a7c17df8da18eb19148a88a431993900f5820e91eab0e2dae5b26ff019c4b1d56183bfd8f5abd1fd258e4f58b13d55cba36f55822a101581e581cca3e553c9c63c5c0e20ac0433519070b0d32e51dbf04b191a57d44b3845820894b8d96727c3d68a30a7165c67c9bff346260628ee624268dc35d660e55794b584062b68793ff855c0b11a0c0e147de91a9f0631c565d28d270fdc146571d0c23839c970996188bf4e86b7a2d529e694b4301de1692366349913b4966f06be9df01582033aacbefeda60713a90163575735e391b5a1a00fe8629e52875657ed5c93ecba5822a101581e581cca3e553c9c63c58681fbd14353af0a213e5ab85001e4e2cbad09ec518458208e2c6fc08234b2a3437e5bae310f6957c69a62143318c562bc1b72c85141df6d58402f02c6375f5074b287aa72e940a3280f39d6fd2c24240b087f208fb92cb2abaf911657eb06b6e24756dea333628972c611da12aad9cc8dfa6b15a41f1e4bb70258201d6ed1791e5bb28ead7bcc582d7e5e70d264cf5293222352597bf0c2a773e9925822a101581e581cca3e553c9c63c5f777eddd432f2063462cf96a64e586148173444979a10082825820036dc0c351864d35c3d8fb72a0acbd0efb343e005f457b0a845e3a82a48bdaee5840ef6eaf7713acfa2623a589e6a5764f93fff7bed4d60d549a0e47d985bcccdba34e79b6954768b423db879e99be2ea205a151974072734fa996d240dd876bf600825820f2acaa3d79a96db3f8cfbf87792b62e39fa74a4d9ba1bcb82ba1562ca524c0a158406da704b6ca04547fd8fda632d1acdc1f15c5efaaee4e1d92f35c714b59148511828870dce8602de968da15263e938c6f71b37e6db9b47fa217661efc1c117b01a0 \ No newline at end of file diff --git a/pallas-primitives/src/test_data/mary1.block b/pallas-primitives/src/test_data/mary1.block new file mode 100644 index 0000000..7d71682 --- /dev/null +++ b/pallas-primitives/src/test_data/mary1.block @@ -0,0 +1 @@ +820484828f1a0055b4ac1a01a1eabe5820e9aac7ed907b246dda5548cf8d78269ddc5006368eac3d6d953800e4531ba7855820cca475e401893077582e74e5f694e741e5ec78df16f5ca4f979a2f297d02c54e58202a20b39a975102c19ea1d145df120579a2595ce6d696753424b13eeceb157fdf825840ec7d0f21df996a302d64f5700d24c11595d95cf30e755295575d9a33bdc9e0a49f777c501e0018161595b8d417e2ef3643f0315dc5f1ff63a2806a7c5c635eb85850aeba5ff94a58858ba358c540ec6fc7cccf4e55af1b45ea0b6f67a20d5def696d3d42cfb1571fe6b282bba6480d407b933d90228f4d9a5a1aa1a7da41e4464e5a9163c8a4ea5b1c95f41dffd9b905680982584000063af76ceade8a17009a28ae666fc90d59b42e0c0a37d4f4537755a66bf2b76d8b7dac1b8bba2b09a5784ca6878d95cee62b6e9987cf3c8d7d22f71526313f5850e584c25e328ce17b61038b33295e1317bf1b0b6b193a9e6f9d9ab455047dd6b5163db4d0a54de492e61a5fc36757880556369522326b2439e14ccc7bdf78eee3f0edae0d2900c38910a0d64d8f8d6509194c4958207cdc18ac07604d453229464652123b6b51c137abe9279e2eef9c0621d504423d58206dc1e500ee69ee4f02d67254ca3fb8ede4c592f4dc145ba4a9a001225913ad5d0418af58407d82457cde034555f832f7a2e01623b0b5f519d54b643e87add08cd6192a161a05dd0da2979d9b547ffcff442372d30e1df19e3c2e5179e4a04de4931fc1430204005901c0b37b5e3b093ef3082bdd548bd5f931f6621a2eca32a6358b38a42a296f2bd4c5600839e7e504fa340812e45337065007fcd5e1e41e1c4ecbec52c33895d187034b970683ab069478692cf6b98fcac79530c2c9bfe2295203e228a8809ba3f9208084a984e5588274ed0a26c6942ef729df8faaf644f7173c68ab986bfdc20f6108d7b3586c7bca66c5e9caedb0b021a23f2131b8f37a030be68e56d52761d8be70493151d0c6c1905e33701b8e7d1ada6a08e4fb410c8c5fda62fccba93d5da1d01477969f12ed67e981961b1a3cbd6cf981bdd593ff28fdb753a5f11ceb62621dc2e87472def58d90742c8a26b5b64573cbbfd32d317b3d77e08c3883f75b148af2784e0c1b5cc84b5b3266cab7bda13c3a893e05ef85d8b063ad239aca2c6018c10ce411aa8bd96abb0be37dd3b629d4aa4ddcded309a6a4cf8e1771aa97b943ffe352719145859c78e07409ff8893802bc1e492486566892c5c48b508423aee0890b940bab42014f9f6d29165a1fb8b53098f995a45e112a0bc66d3d9ce11ddb31739878295fe07db1e66b425cc52a5d73e9088ac1cedf6f3cb832b5fba8ef878cfb5e61813d2d56c6219ef54e2ce0f29c6ffae6f4a776a2ddc70a08be9d58ea50081825820790feaca64576990e3b2ed9cafdb8d2b874c561019f767827e685164577974b30001818258390111aca4f4fe84f5d89a30e8bd1697b52d0620c6b8e2a243c07e226f58f2971be702006ff49954fb5c064347451746ffb7e619bd2774caf59c1a3b7ca69f021a0002ac21031a01a2068e048282008200581cf2971be702006ff49954fb5c064347451746ffb7e619bd2774caf59c83028200581cf2971be702006ff49954fb5c064347451746ffb7e619bd2774caf59c581c024dcb42f0aa6d81a7e26ccdd525a2ed3e9665d126b38ba0f8b77b50a400828258205ed7d5280841f21b89d7d4885e0f4a3fec1d0d05856b68735ed5982677414a9603825820792c27f11f603e2a580847d42f4efc35c23492ae44ae3fd4a5f0deb7bcd8143803018482583901105d5846c4d6054a032092ab231ced9d9ec1cd381c685ecdb15a18eb105d5846c4d6054a032092ab231ced9d9ec1cd381c685ecdb15a18eb1a05ffd451825839015a06e23444ea5af6480d86f01d593cd2c061a1002db515a36df3fbf05a06e23444ea5af6480d86f01d593cd2c061a1002db515a36df3fbf01a126cab0282584c82d818584283581c4bb5beb1813d875ef62a2d8fc47674812a361f1834994e9cd5cbf0eda101581e581c9b1771bd305e4a22633e79a9257cf2458a580a65a4647d834268213d001ae8f33c161a0c66eca582584c82d818584283581c2a224ea8eb307e51dc1c9d3287dd5b73fff36ed2f318d34e4fe73204a101581e581c9b1771bd305e4a615d497aa98e87cc5b8bc918de283f0d9fc265d865001a4954b2701a25f6df28021a0002e715031a01a206c4a40082825820b34f463a8a91f91c207cf3148cfb253b2795eea8643b89281fb1bd043bf35cc700825820911ee5b314df7fa744ea47231bc42ddf3bcee2c910e19fdc3ecfa087912e78a101018282581d613dc0992a980257fbf7e6ae1e9b43af62932885f1e119279f1ce43f511a1a18ff2782581d61d91ef01b73f3010bb173945cf5417257c00c002715a13052015ab54f1a08655352021a0002bf35031a01a1ee84a40082825820861d31b11b125f78a88aea42a81a5463cec8bba58f6671227436822cf79506970082582017949570550c96e1d58abb5a4f07861ebde9472de865e56f0bdf04ba5165e86d00018282584c82d818584283581cbdcd97d67a94fc9e1af08ba34fd47405631a62362482b5c63aefaedda101581e581c7111304fa69dc398fa2055a1b012921e540374ca44f739beb09131c8001ab1e823421a03ea796c82581d610237be10f5ec0ccb6cbd226b112f0940fed44ae0466d9b53962ba8b11a2381e19a021a0002bf35031a01a1ee84a50082825820f74dccfef00ea5dd7a5360f4870de9f664bcbe8c0bf4611ba4d8f5dec687cc9f00825820f74dccfef00ea5dd7a5360f4870de9f664bcbe8c0bf4611ba4d8f5dec687cc9f010182825839012250f08ab10f7bf12f49291e78527f35a4f66ebd03e66524ed9ac8dd2250f08ab10f7bf12f49291e78527f35a4f66ebd03e66524ed9ac8dd1a000f4240825839012250f08ab10f7bf12f49291e78527f35a4f66ebd03e66524ed9ac8dd2250f08ab10f7bf12f49291e78527f35a4f66ebd03e66524ed9ac8dd1a85e84858021a0003096c031a05f5e100048182018200581c2250f08ab10f7bf12f49291e78527f35a4f66ebd03e66524ed9ac8dda40081825820900c833fd9754d4f65d7a1493ce62aaa943c887dc39921d0975976896bbd4e8a00018282581d61dfb778ad19859d22c8909f541b570dd4c386efb78d72173e4af2d2481a04c4b40082583901e683340376e5d57ab9af32493fc8f40c21682621432ebc85ffb4af4eee0df6c2ebfe5d3648def953480b811698b54c9a38164dcf0bf6c0eb1a2ee6c16d021a00028c81031a01a20663a40083825820750a3eab714b04bc4718f43407fee903b996700aa3b0e171f840602b608ce52e00825820d57e3d99a481cdc928a82d2a39b689f49a54044c6cd12239a8e5b2376536659b008258204316395f1f1421863c5faa3590d5cfa91eab9f8c5737afd0e6df8914b8ca5b5700018282583901b46bdb5502435a418fcc35273339c218300e0d633e4c532d98133907cb970842e16c849f65ffb4c0d88243289cf7519aa90bc57b3c3597a0821a00160a5ba1581c73ed4b685261a41c66ba62193572c3ce78652793df0a2d4a75c127cda144574545440182583901306fc9574d0f8c774fa8fde9b5d540e2d4f22c67e1ccdb862f8bc6d1f68419a027bf56bf179f07acdf872cd78e0d6ce129772028dd2d1a81821a002a804fa2581c36e8f59542d444e3afca00cecca881cbdf8257c1b07a2fd84ed25730a1574570737465696e4469646e744b696c6c48696d73656c661a000dbba0581c73ed4b685261a41c66ba62193572c3ce78652793df0a2d4a75c127cda14457454544195d5b021a0002b5c1031a01a206b7a400828258206c027d63a875e6ab52abc975594f6060dc8d8d9342a42899ff64e4b5a8041cc4018258207c1cc2472c9808612e77b75d2c253c9aa05d0a83cf1d72b929fb41cc2b8054ff00018282583901a9274ec0157902ffe776bca9a7b24aac3373044a3c71e0c27ec8f741a9274ec0157902ffe776bca9a7b24aac3373044a3c71e0c27ec8f7411a0e99550c82584c82d818584283581cfa4589909bc695cb0c7fbf23c37b5206fb180f4c5216a6d86c5caa40a101581e581c2b0b011ba3683d5a9b32802aa60b6f471a2bdab01598f0fa5d3ee332001ae706cac71b00000004d4f8ee05021a0002cb3d031a01a206c8a500818258207b9c5b2a8da20bdedb61f836c802ddf361fcc363faa7f64ecebcd3a5fcf8936105018182583901d3b46b29180c65567b03fcbdf0b897f4d3e58ee5ac9c7eb7b7a128e368b887d2e2b58bbb0c238406b77270089d0f370d9e28ab87c57d29f01a0049a28f021a0002a8b1031a01a20672048282008200581c68b887d2e2b58bbb0c238406b77270089d0f370d9e28ab87c57d29f083028200581c68b887d2e2b58bbb0c238406b77270089d0f370d9e28ab87c57d29f0581ce811a4b2f8ef3ec84143e3026d706564bc1cc98dc199a305e0fbb8e3a400818258200cda8d6a05ed90f3618b9a1d69cbaa112d7f508df405b3f7da7e4e348011219a01018282584c82d818584283581c9db8ac183b28b32e9fc70bb83345ff3f02cb6822086bccf9b272a56ea101581e581c6c62a9e3a4d9cc731469d72e5e097859162fe94cfb1149f980d46e36001a2c0ef42d1a12d1332082581d61d91ef01b73f3010bb173945cf5417257c00c002715a13052015ab54f1a166f4db4021a00029cd5031a01a1ee84a500818258204254c7128386731cdb4c709cb10c15080f0bb25a2e00ebaa7c4ba808811a5ece000181825839017c8c932fe58987c54752b4592ae73a9fccafa15553174ca7397eac61193e0d9a2f810bec4a2632006bba910de6dafb246ff3f6829fe3c8f81a755bc688021a00029e09031a01a206cb05a1581de1193e0d9a2f810bec4a2632006bba910de6dafb246ff3f6829fe3c8f81a0058a159a60081825820cd0bd822e080672736f6e10af4053eb7f5b36120fa154dfe647ada2a2a68e08e00018182581d71a5f1baef9bf194a48068c2545d5dd58e93da01a5c395a2f595c955ea821a08e513dba1581c5d2c310ba30ee79a9139defb690af87a110444492c9caf4b2038e0f1bf5443617264616e6f4b69647a303033384643323236015443617264616e6f4b69647a303033384643323237015443617264616e6f4b69647a303033384643323238015443617264616e6f4b69647a303033384643323239015443617264616e6f4b69647a303033384643323330015443617264616e6f4b69647a303033384643323331015443617264616e6f4b69647a303033384643323332015443617264616e6f4b69647a303033384643323333015443617264616e6f4b69647a303033384643323334015443617264616e6f4b69647a303033384643323335015443617264616e6f4b69647a303033384643323336015443617264616e6f4b69647a303033384643323337015443617264616e6f4b69647a303033384643323338015443617264616e6f4b69647a303033384643323339015443617264616e6f4b69647a303033384643323430015443617264616e6f4b69647a303033384643323431015443617264616e6f4b69647a303033384643323432015443617264616e6f4b69647a303033384643323433015443617264616e6f4b69647a303033384643323434015443617264616e6f4b69647a303033384643323435015443617264616e6f4b69647a303033384643323436015443617264616e6f4b69647a303033384643323437015443617264616e6f4b69647a303033384643323438015443617264616e6f4b69647a303033384643323439015443617264616e6f4b69647a303033384643323530015443617264616e6f4b69647a303033384643323531015443617264616e6f4b69647a303033384643323532015443617264616e6f4b69647a303033384643323533015443617264616e6f4b69647a303033384643323534015443617264616e6f4b69647a303033384643323535015443617264616e6f4b69647a303033384643323536015443617264616e6f4b69647a303033384643323537015443617264616e6f4b69647a303033384643323538015443617264616e6f4b69647a303033384643323539015443617264616e6f4b69647a303033384643323630015443617264616e6f4b69647a303033384643323631015443617264616e6f4b69647a303033384643323632015443617264616e6f4b69647a303033384643323633015443617264616e6f4b69647a303033384643323634015443617264616e6f4b69647a303033384643323635015443617264616e6f4b69647a303033384643323636015443617264616e6f4b69647a303033384643323637015443617264616e6f4b69647a303033384643323638015443617264616e6f4b69647a303033384643323639015443617264616e6f4b69647a303033384643323730015443617264616e6f4b69647a303033384643323731015443617264616e6f4b69647a303033384643323732015443617264616e6f4b69647a303033384643323733015443617264616e6f4b69647a303033384643323734015443617264616e6f4b69647a303033384643323735015443617264616e6f4b69647a303033384643323736015443617264616e6f4b69647a303033384643323737015443617264616e6f4b69647a303033384643323738015443617264616e6f4b69647a303033384643323739015443617264616e6f4b69647a303033384643323830015443617264616e6f4b69647a303033384643323831015443617264616e6f4b69647a303033384643323832015443617264616e6f4b69647a303033384643323833015443617264616e6f4b69647a303033384643323834015443617264616e6f4b69647a303033384643323835015443617264616e6f4b69647a303033384643323836015443617264616e6f4b69647a303033384643323837015443617264616e6f4b69647a303033384643323838015443617264616e6f4b69647a303033384643323839015443617264616e6f4b69647a303033384643323930015443617264616e6f4b69647a303033384643323931015443617264616e6f4b69647a303033384643323932015443617264616e6f4b69647a303033384643323933015443617264616e6f4b69647a303033384643323934015443617264616e6f4b69647a303033384643323935015443617264616e6f4b69647a303033384643323936015443617264616e6f4b69647a303033384643323937015443617264616e6f4b69647a303033384643323938015443617264616e6f4b69647a303033384643323939015443617264616e6f4b69647a303033384643333030015443617264616e6f4b69647a303033384643333031015443617264616e6f4b69647a30303338464333303201ff021a000bbda5031a01a4b0cb07582020203a2d332f99480ab1a242d20ab11fe4a3fe1deb7be47dd65d0605e260633709a1581c5d2c310ba30ee79a9139defb690af87a110444492c9caf4b2038e0f1bf5443617264616e6f4b69647a303033384643323236015443617264616e6f4b69647a303033384643323237015443617264616e6f4b69647a303033384643323238015443617264616e6f4b69647a303033384643323239015443617264616e6f4b69647a303033384643323330015443617264616e6f4b69647a303033384643323331015443617264616e6f4b69647a303033384643323332015443617264616e6f4b69647a303033384643323333015443617264616e6f4b69647a303033384643323334015443617264616e6f4b69647a303033384643323335015443617264616e6f4b69647a303033384643323336015443617264616e6f4b69647a303033384643323337015443617264616e6f4b69647a303033384643323338015443617264616e6f4b69647a303033384643323339015443617264616e6f4b69647a303033384643323430015443617264616e6f4b69647a303033384643323431015443617264616e6f4b69647a303033384643323432015443617264616e6f4b69647a303033384643323433015443617264616e6f4b69647a303033384643323434015443617264616e6f4b69647a303033384643323435015443617264616e6f4b69647a303033384643323436015443617264616e6f4b69647a303033384643323437015443617264616e6f4b69647a303033384643323438015443617264616e6f4b69647a303033384643323439015443617264616e6f4b69647a303033384643323530015443617264616e6f4b69647a303033384643323531015443617264616e6f4b69647a303033384643323532015443617264616e6f4b69647a303033384643323533015443617264616e6f4b69647a303033384643323534015443617264616e6f4b69647a303033384643323535015443617264616e6f4b69647a303033384643323536015443617264616e6f4b69647a303033384643323537015443617264616e6f4b69647a303033384643323538015443617264616e6f4b69647a303033384643323539015443617264616e6f4b69647a303033384643323630015443617264616e6f4b69647a303033384643323631015443617264616e6f4b69647a303033384643323632015443617264616e6f4b69647a303033384643323633015443617264616e6f4b69647a303033384643323634015443617264616e6f4b69647a303033384643323635015443617264616e6f4b69647a303033384643323636015443617264616e6f4b69647a303033384643323637015443617264616e6f4b69647a303033384643323638015443617264616e6f4b69647a303033384643323639015443617264616e6f4b69647a303033384643323730015443617264616e6f4b69647a303033384643323731015443617264616e6f4b69647a303033384643323732015443617264616e6f4b69647a303033384643323733015443617264616e6f4b69647a303033384643323734015443617264616e6f4b69647a303033384643323735015443617264616e6f4b69647a303033384643323736015443617264616e6f4b69647a303033384643323737015443617264616e6f4b69647a303033384643323738015443617264616e6f4b69647a303033384643323739015443617264616e6f4b69647a303033384643323830015443617264616e6f4b69647a303033384643323831015443617264616e6f4b69647a303033384643323832015443617264616e6f4b69647a303033384643323833015443617264616e6f4b69647a303033384643323834015443617264616e6f4b69647a303033384643323835015443617264616e6f4b69647a303033384643323836015443617264616e6f4b69647a303033384643323837015443617264616e6f4b69647a303033384643323838015443617264616e6f4b69647a303033384643323839015443617264616e6f4b69647a303033384643323930015443617264616e6f4b69647a303033384643323931015443617264616e6f4b69647a303033384643323932015443617264616e6f4b69647a303033384643323933015443617264616e6f4b69647a303033384643323934015443617264616e6f4b69647a303033384643323935015443617264616e6f4b69647a303033384643323936015443617264616e6f4b69647a303033384643323937015443617264616e6f4b69647a303033384643323938015443617264616e6f4b69647a303033384643323939015443617264616e6f4b69647a303033384643333030015443617264616e6f4b69647a303033384643333031015443617264616e6f4b69647a30303338464333303201ffa400818258206ee70506daa57d2de6544d9c0790beafe592a4daf124f8046ce22859fdd3c1a901018282584c82d818584283581cde35879ae16e897627eb20baf26be7e7bd325583bd17aa9c67713b0aa101581e581ce378ee30d5681449869d426d33e11d95dc7896854fefac8feea15d66001a7d335c381a08583b0082581d6179e67550b2ff311da1883ad0ccc6fb2bb7c75e5489acff735fcc68781a53a6fb32021a00029cd5031a01a1ee84a40083825820a396e38605b4b3fee941a69ca1736e17516be67d6b596ef7e854557cf918738900825820c9f12ee2577895339a74d286bf77134dbcca5f806dc955c3fa94567a0118cfdf0b8258207807540ef1577df8d3282fb18e157d1480535dd6f39648207bea759a28f3cdf217018282584c82d818584283581cdcfe05e2cb99a7e14c0142d453115ebc1ce1d00e68149eb762c47fc5a101581e581c7111304fa69dc3f1644da7a1db41603fa288f170bb5dc225f80da24b001aa9adf1101b00000002363e7f0082583901f765168cd378460d748f14d32cc462c62ef882f74bee0cc3fb38ecfd55ecd0372bb6dad0892a5154802adfe36be613d2c1690498059a8f631a813a2d36021a0002c45d031a01a206878ea10082825820e120d1e68b27660a9346947d2a3f79f5f702b66e58dfd542edc1443923ca89e058409c4e5759292092a773a2a14623f9a83799bd7297291f29e82cb552544765ba8c961dc12872067671e47fa141d2048a237407def2f6756cabfa682cca1c96960e825820b186a878bc2f6aae02a288abcbe1da7ebf6bd9125dc5a5e8e2addaf461c01a1e5840367d70340c36a58756fad5f2a25aef4317444b90cc96d5cbc7aab7c872c204ed7d3273f35fd75606a4b57124e2943e0ee87dedcd1f2c259e3d2a72684556e506a102828458201a66c53814b9b716280d25e928e28281984cecfa644a83cdabb5f2d9fdcdd5d258407ebe78a4009731b6ad5803147b086d7269c2727b4e21685de04f14b0b0a33b93159b167f180414d1696b779057ead145eb053f1bdd4a9a38948c5139aa4374055820deef140087f9cca73b50452ff9afe31fa179959cf7da3b341f7248a5d03d0fff5822a101581e581c9b1771bd305e4a4407f82ca9ce993f8be1c0f19a30307d6de3b5391c84582006334624d8da907649c765188d197b23e561c122c4b42835f26a91412c3e24865840f58e48db026fb30c3f2ac65cfb169ca31276eb73897c5ef495d1582cec422bf6e60efb69690199a9edaf424be7161bc24bd8a53a004662e990a11212f4d1e8025820dbd18cf22cb5c42e86e1dcc1a5d16fe24f2422e57be7a45f1b83e8c4ef18221f5822a101581e581c9b1771bd305e4a339d86c8a93fe0e379c4c7a24c04024e34b9a6659ca10082825820be12a95cfcd1011bfb59bd760ef683e040de4cb0355843683dfac00312b3535d58401ece9f0d7ea618e840bb8eeb2657baf19139d9b1c467e91345930ecf167a42e5ccd92ec95bf26038dc0a8b8cb404f5074990dffeda4d76bc61d9c7eac23965048258200d197b7eeef1b961962a2911d4b553f0d9c3114b8d3e61de3beb4f39dc348eb05840d3fc852714c1c741ab5effeaf50a47b449291d0613d4dd538aea58870a13819f05491726ccea72fc76407ee253f4aff23229a45604523fd5ced2c85dabfaf10ea10082825820d85a190eb4f193ae18c5395bf9d5493ceef6cffde1923fc3d41a3549f68f314b58400847fc53c36acf1f68f4de7b99afcea8706984958c4093d6db7d8e53c86e4daec7cb3ea313acc48b171ed6c3bf0c88951c4e62b1c80f43d72af54dbbeef0ff05825820c2aad03f77eb131a808e04efde662e7fb84034e811810c866cece5462b6dfc7b5840ec86663c28c1494d8ef004202c31747b038e36f7f0a446803bcf0c09f1b98f7ac3b539234b925292c6b88c96529501d3f614c92f83fb3d3eed0abef870cfe208a10083825820a080d8e4a44af1c986d93975807cf10f5d3670b7892f4c34cf91d7f12bbb4e6d5840156631a0c031bcc40e281b2f5405670cd8f87a2b04218a1d577337d1695d20319b6bd6490797b1be5abbc9d2c120469ce1f55fdffb6959bea43d1bb336bb1603825820a080d8e4a44af1c986d93975807cf10f5d3670b7892f4c34cf91d7f12bbb4e6d5840156631a0c031bcc40e281b2f5405670cd8f87a2b04218a1d577337d1695d20319b6bd6490797b1be5abbc9d2c120469ce1f55fdffb6959bea43d1bb336bb1603825820a080d8e4a44af1c986d93975807cf10f5d3670b7892f4c34cf91d7f12bbb4e6d5840156631a0c031bcc40e281b2f5405670cd8f87a2b04218a1d577337d1695d20319b6bd6490797b1be5abbc9d2c120469ce1f55fdffb6959bea43d1bb336bb1603a10081825820dbaa64dac9db1e42c8e7a65cb0a19b0d5bcd9d7492fbbdffa4aa1c6eeefef6055840134ddda8c219f15fcfc5a5760c51dd192d6e6c5765373b49c1f61b03e281ae65c702f53976f2e3ddf604e66dd5601edfa9b76cf7b7744bd56e99eb21ec3ac106a10081825820fa10a8aad3525bae5e6fc86f002a29fdeacf7e2c3adbbd42fb18ce37f46d6da758400b9c109eee0f20b17c2182c4b4356fe27ce61585a7b87c4454133ab9b4eeefa822290eb02210a6faa466113788e74f0b6f15dbd7564ad146b341b5d89aa34800a10282845820ca29c439ebe4e46749b5cd58ccd4a80c3e63590532b5e3e47929dcffadfe6f915840234f256bdaebabc73069dae65682f2bfd642854f37a901532d542537716f14445e4516cb7116d8fcf62b8dfe8d358ef76b3a8877b9e33f8e0ec49cc151b49d025820b5fa70b1f92b6f51f40a1214c83d072ee3463d37dd5a4ab93fd3880c1c2b78705822a101581e581c2b0b011ba3683d3b39e26d2a2a7538c41e52733b9a31fd976489dceb84582090f9faab0162b29b4ae704ec6b34b907ff4b460d95067416847c9de869fcffbd58402cc2a20369497238a6eafc0a73a9b20d0616a9b37769b1ca1f4b85fc0c787d0bb360255bd5008adc6a731b712886e13631f05ca293b1a0c7f0d6402e0e35800e582042273fb0f6b6eeae752bfa1efa18d3a52fe906cad33d9789f42875dccf122b3d5822a101581e581c2b0b011ba3683d6727811e2a7055eba994d24d6d5dbe938c685b65b1a100828258201bf61889f47fb0c57f000efc792c108058abd09ded1b92c8e321d5157dcc0b03584031ef0ade7e1c6aef0020f252650cc1e4278378d8292f68fef83c3cecb7d147fcb11dd12eddd16140ce3bc074f8ef96514558c7c031d7096da5eb9a8bb81c190282582068afabddeff38f0274543bdeca22982ba317c80534e2087b6e9ebb5bcbee2d255840dfc59eb00d76baed7333f8cf737fa9906b28bca9002a5484f0fb982d5458989536d6b5267d2d43cb7a032e166bb4df86a042c44f1c5a9c8fafd88dade88b8002a100818258200d197b7eeef1b961962a2911d4b553f0d9c3114b8d3e61de3beb4f39dc348eb05840d6863f876b33fb84a0f5ae757495136c1d38776a3ce3b7ce45ec4d19d51463fce731ce1d266e35c354ccee3e23b8f539c3122a6185594c2bca8530839f63620da10082825820c936c5031dfe7302a9577d20f39121a05186da762040ea7930ba40b4e75117095840dff4972a083973d9e4393520ab2263d47a8e9fd081e77215ba059eeaf188e3bbcd54f3efd20d6d711d9d29106b2d0ab484e37c24b72f82feb6adfe91eadc5901825820f9b39400c618265f9ba86e002b8df2eb114f2c5129a6c8cad4c749d024bcf73c584098147dd4e497e9aefcca6229e5ca1a28d43e2c6291d0ff627e9f4939341ebd80494fab7bad689f187c03b3d7fcbbf24fa7a04aabcd0c77455756f6ee4708560ca20081825820b58007aa837902c5f9deb45b0720ce9edb90231ab51d8d8a04223abbe91660c15840c592e5a6f8cc80c5897680120a23744aff93bdda1c39008090f5103d758dbe5284125ff5a2b8c060a4fceab1b2a86f5ececfc8ae016c7b352a0fe18d5778cc0e01828200581c026786de9ea6d7de570eb20d7bcb3c815bf88a46cdd9bcf7b5b357158201828200581c026786de9ea6d7de570eb20d7bcb3c815bf88a46cdd9bcf7b5b3571582051a01a4b0cba100818258206687a36f0a4b8abf2671f8affb7febeb8940e9ee83548d2a2924dbc74679c46658403523bc8f616d9e7e7035fbade81505c88d1ea80e1c6e47412b1024c79f20a1221ffbadc68fbc8bca68ba1818d5f5c0446691e409958e43e64993cba32b8d170aa100838258201e148f63439d8482ac734d737dd4bf1d0f2c7053ed9810beea3151f3f4545356584063945f682dd36acc2ba795588b6bd501a1809869d9f7f6106fd12e4bf2ed0b891e875915938c8cca59da16cfe8fe07f414a98923cc3a29e0495193c6a1aa6c008258201cb6da608e12fbed48e93574274838bd855d965661874e734eba54ab138517b15840da0fee21f01f79738d37dc995e9bb2b009e037e652a48742a16d8af9598ddaf800273d35d65a0ac110644dd6e06798592b43025f1a0c2802790c27374599b7028258207b42a33d3b1cc39f54db7273d589c66146f55d2fc3ec784ed596b5b737f8ee7d584094948408e251b18f1ffe93eff189b3bdfb033dacbd1fa8ca3dc8c76e19b6a44598db9968a77480feddd34dabdc8d41e18872e4f085840c5a8cba14dfa9765c03a10b82a11902d1a478383564326333313062613330656537396139313339646566623639306166383761313130343434343932633963616634623230333865306631b84d7443617264616e6f4b69647a303033384643323236a362696418e265696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3232365d7443617264616e6f4b69647a303033384643323237a362696418e365696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3232375d7443617264616e6f4b69647a303033384643323238a362696418e465696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3232385d7443617264616e6f4b69647a303033384643323239a362696418e565696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3232395d7443617264616e6f4b69647a303033384643323330a362696418e665696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233305d7443617264616e6f4b69647a303033384643323331a362696418e765696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233315d7443617264616e6f4b69647a303033384643323332a362696418e865696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233325d7443617264616e6f4b69647a303033384643323333a362696418e965696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233335d7443617264616e6f4b69647a303033384643323334a362696418ea65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233345d7443617264616e6f4b69647a303033384643323335a362696418eb65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233355d7443617264616e6f4b69647a303033384643323336a362696418ec65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233365d7443617264616e6f4b69647a303033384643323337a362696418ed65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233375d7443617264616e6f4b69647a303033384643323338a362696418ee65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233385d7443617264616e6f4b69647a303033384643323339a362696418ef65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3233395d7443617264616e6f4b69647a303033384643323430a362696418f065696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234305d7443617264616e6f4b69647a303033384643323431a362696418f165696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234315d7443617264616e6f4b69647a303033384643323432a362696418f265696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234325d7443617264616e6f4b69647a303033384643323433a362696418f365696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234335d7443617264616e6f4b69647a303033384643323434a362696418f465696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234345d7443617264616e6f4b69647a303033384643323435a362696418f565696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234355d7443617264616e6f4b69647a303033384643323436a362696418f665696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234365d7443617264616e6f4b69647a303033384643323437a362696418f765696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234375d7443617264616e6f4b69647a303033384643323438a362696418f865696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234385d7443617264616e6f4b69647a303033384643323439a362696418f965696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3234395d7443617264616e6f4b69647a303033384643323530a362696418fa65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235305d7443617264616e6f4b69647a303033384643323531a362696418fb65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235315d7443617264616e6f4b69647a303033384643323532a362696418fc65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235325d7443617264616e6f4b69647a303033384643323533a362696418fd65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235335d7443617264616e6f4b69647a303033384643323534a362696418fe65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235345d7443617264616e6f4b69647a303033384643323535a362696418ff65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235355d7443617264616e6f4b69647a303033384643323536a362696419010065696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235365d7443617264616e6f4b69647a303033384643323537a362696419010165696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235375d7443617264616e6f4b69647a303033384643323538a362696419010265696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235385d7443617264616e6f4b69647a303033384643323539a362696419010365696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3235395d7443617264616e6f4b69647a303033384643323630a362696419010465696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236305d7443617264616e6f4b69647a303033384643323631a362696419010565696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236315d7443617264616e6f4b69647a303033384643323632a362696419010665696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236325d7443617264616e6f4b69647a303033384643323633a362696419010765696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236335d7443617264616e6f4b69647a303033384643323634a362696419010865696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236345d7443617264616e6f4b69647a303033384643323635a362696419010965696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236355d7443617264616e6f4b69647a303033384643323636a362696419010a65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236365d7443617264616e6f4b69647a303033384643323637a362696419010b65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236375d7443617264616e6f4b69647a303033384643323638a362696419010c65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236385d7443617264616e6f4b69647a303033384643323639a362696419010d65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3236395d7443617264616e6f4b69647a303033384643323730a362696419010e65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237305d7443617264616e6f4b69647a303033384643323731a362696419010f65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237315d7443617264616e6f4b69647a303033384643323732a362696419011065696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237325d7443617264616e6f4b69647a303033384643323733a362696419011165696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237335d7443617264616e6f4b69647a303033384643323734a362696419011265696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237345d7443617264616e6f4b69647a303033384643323735a362696419011365696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237355d7443617264616e6f4b69647a303033384643323736a362696419011465696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237365d7443617264616e6f4b69647a303033384643323737a362696419011565696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237375d7443617264616e6f4b69647a303033384643323738a362696419011665696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237385d7443617264616e6f4b69647a303033384643323739a362696419011765696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3237395d7443617264616e6f4b69647a303033384643323830a362696419011865696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238305d7443617264616e6f4b69647a303033384643323831a362696419011965696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238315d7443617264616e6f4b69647a303033384643323832a362696419011a65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238325d7443617264616e6f4b69647a303033384643323833a362696419011b65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238335d7443617264616e6f4b69647a303033384643323834a362696419011c65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238345d7443617264616e6f4b69647a303033384643323835a362696419011d65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238355d7443617264616e6f4b69647a303033384643323836a362696419011e65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238365d7443617264616e6f4b69647a303033384643323837a362696419011f65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238375d7443617264616e6f4b69647a303033384643323838a362696419012065696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238385d7443617264616e6f4b69647a303033384643323839a362696419012165696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3238395d7443617264616e6f4b69647a303033384643323930a362696419012265696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239305d7443617264616e6f4b69647a303033384643323931a362696419012365696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239315d7443617264616e6f4b69647a303033384643323932a362696419012465696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239325d7443617264616e6f4b69647a303033384643323933a362696419012565696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239335d7443617264616e6f4b69647a303033384643323934a362696419012665696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239345d7443617264616e6f4b69647a303033384643323935a362696419012765696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239355d7443617264616e6f4b69647a303033384643323936a362696419012865696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239365d7443617264616e6f4b69647a303033384643323937a362696419012965696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239375d7443617264616e6f4b69647a303033384643323938a362696419012a65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239385d7443617264616e6f4b69647a303033384643323939a362696419012b65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3239395d7443617264616e6f4b69647a303033384643333030a362696419012c65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3330305d7443617264616e6f4b69647a303033384643333031a362696419012d65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3330315d7443617264616e6f4b69647a303033384643333032a362696419012e65696d616765783a697066733a2f2f697066732f516d6232704e3454536f4363333476687a6f59534363444b357936593833344c44794e6843715837556f55627752646e616d65781b43617264616e6f204b69647a204e46542030303338205b3330325d69636f70797269676874782f436f707972696768742043617264616e6f4b69647a20323032313b20616c6c20726967687473207265736572766564697075626c69736865728267636e66742e696f6f63617264616e6f6b69647a2e636f6d6776657273696f6e0180 \ No newline at end of file diff --git a/pallas-primitives/src/test_data/shelley1.block b/pallas-primitives/src/test_data/shelley1.block new file mode 100644 index 0000000..66da341 --- /dev/null +++ b/pallas-primitives/src/test_data/shelley1.block @@ -0,0 +1 @@ +820284828f1a004723dd1a007949425820c175f470d30216341423a98a6087175642250acec7d9f53a311cf2e0a1c9c7b258208b53207629f9a30e4b2015044f337c01735abe67243c19470c9dae8c7b732798582090561cf5fb4eada778f0564060b9b5138fbfa50c0e74fc496956c8c3507301a6825840d266d923d59fc8a1b7e964dab2b6db804b494c202586eae8e2db929ca2361d9f01154c4a78b95a2e6bf19ebe98e775f894ad53971bd1ceeee125ee8473747d60585011614e11e284d28aa303da9ca3a37bfde35f931d308ae3da36e381ac42910d36dc26d91bfa726d7b4a7ae1fb263e037e8f9e80e3411a8754863b8b5601047b9e04d0f72f00206ea616c6cffc75fc48018258405620f9239d562aed34442b72c8bc840bb9a5ef897b470132430a02cd0ce69052a6ebb17896177180c1d88afed3d7614878549c5573c0f281d5dad2f29bda5a6d5850f349597045cc5f65a9724770f971e6964e09fd85db8e36ef789f390afd4629a3f5e96b4e5ee8280ec26236a6323cbc16867a1868645566e0607d7a474fd7d06b44c3afbcd85a41098a80ba6faeb7400b190596582000ef8e1bebe7d404a910c7c467fb5aafbc7dee7fcaac94cb9693e08ea9dd7d2a5820674617ebe299bcba144026e4342e9f54c861165c1dde1373fd1206e654f985b800183758405befdeffa73bc8b4a1cd22aa2c896f189a698175e5bfc4a562e3a15b5f6580953e6fcc72a37386816031e36fdf19718351417f01af02c7314fbe9f2792b29e0c02005901c0c597caba74923b7901d5b8162f27338413b12941e411e9371b06a01375b8690aab067a42dde22db909bf77db373ca8645b751711256ba5f360e2935f64d14104cfdfb6c7865c6f4219e67af060cdcf4dc3d874ede00c394e9ecac7ba1f663b367e0f482e1bfaff08808d6567590cd6bf43c849ebacfb5fb185f4592ff3bf0a479d5a1f3f19f819b59f662cad2b6ff2187ec94b4c5fac6b8375b02d6b52d229ae24b389ff2d72b584f47f77cbc62a43f1880e486fda30ac1600f475dc4857e66090fe7399f4e3bff4929ea1c1929371846a34391473c79f9409f05f65fe8d2acb6f5eceb84474555d163db96d809aa77b9c2f80156d0356e75204ab5032e833bbacecf407038c8a28da4900c1c63a5bb32672dd345c37e1c866b15da5d2c41ab76c214bc8e3efd9e34cf092f1166edc2de2b03ccaca01b2c0261bfaf3f166f3937c21128c3ebb96ceefab6c80897da9f096a7cc113c4b9c0cd8b97fe3d29f6a2c9960005d2f1ce2e8bfeca9b1f8ebe80637f59133692e11ad9f9c557c10102472aef7f472d72920bbff7a7f4e344988c2d5f98482fbbae7a081d7f10b55b33a7c4dea90483223bea2093cb068b2db39973dd06700ea4eb65fa3210d7d53430c9c84a5008182582050eba65e73c8c5f7b09f4ea28cf15dce169f3d1c322ca3deff03725f51518bb200018182583901f53fd6f6b96f74cc90fd995afad1bfdbd49ff7d04fc9e7a2f81285b75c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef1b0000021f05a734bb021a0002a389031a0079652c048183028200581c5c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef581c6b5180a258275c671690c94c704f074190e90ea900ed565b4c29abe8a50081825820368f24c09763ee846f68c60f987eeca4d9a7e9cb537cea2cc593e77dd9c0ac67000181825839019a5d1ab9ca1eb592973a0d3f5ffdd006e7e4c0be6a7b43211325168932dd8b472ba9876597a01259896cdb4650a62402aa9737175d539fe81b00000045d92911df021a0002a389031a0079652c048183028200581c32dd8b472ba9876597a01259896cdb4650a62402aa9737175d539fe8581c76e80e1b3f622c7051f222453497b0667e12892f5d94ee565d17dc52a40081825820cffac1e93f583d1f272142df5b793666e613c66cea4e500b18437aded85febbc00018282581d614497e18047e5c891ead6a215b3f5dce026921a8b76c7fe27a2ba9f681a000f424082583901a76b7122a3773792b6275c9a0fb0bf4ae0c17c52363de66062eca50c13ce7fae17ab762c4390c4d77bd74f7d4651af480508ea237b1dd0b51a0086a7f3021a0002ac4d031a007950a4a400828258201c3b9c2016d9ae6b3e86e1888296e6bc180e6bcfd344711b7305651ae90f87e60182582038d2f2cf6a2ce8563cc3b84b4b0e003404363a352fe1ac7ef5a6b5bb014c3d6c07018282582b82d818582183581c5f6712df165e03b5eb5e72e50058a181777696b222c54d844944da14a0001add85ea5a1a22dad5bd82581d614db3b10bedda3b9dd3d3a8886ca9d8a581162b874a7460edaab406fb1a032fcbef021a0003447f031a0098968084a10082825820e3968f45134a774f66b011c2c463ad64a5ba7e17f4774be460d08477a07e31f458402c551fc904b8e55a58d437e744566d0307a186af8f08d51a637456e0eb8247a0b639441a4fb25807b46edd60766a9e766b19e7c33caf5eea1752fc017b840100825820590a7c4229d9aede28c43f2626fcd36bc383cc3e622a654ad962e4c49570938c584042f3ed22755c5523a66864cb644330b82ace0b7cd483f4ea4e4c4d3ff88e62785811bf6a7da08e386f218301ff50bf8d000ca3df07dd831b9160b469ac95110ca10082825820feef653d2ba57531b9a442258cc0ad12feda29141b3e2a05e4a037262c4bb34d5840def966f7d8ea6e9ceb519606a9b7076b85677b6edcebd386f42f71c5c942c6ef90cbfad2265634cf5ebae00f8b86760151c6559bc82b52c130547eed5414120b825820d91dc0521946003bc7ded1a54938a04bee80a860382c51ef7c9e4563346979345840ab999c3cbb8edd48da9b884a4dcb86a8e7b7110ee08f312264a018fa6d50e4a0635f124916be7773c38c8bec8a0fa7f2ac5058a776932ebfd557a8a263552409a100818258205ee8a66efac254382955ec4d643a9f24015d0ac1ed32480b1b7235f10e87a0e458400fc033349c1a9ecf966902e05f35b7459a642f7b3818c80003b08179631521c810a8a52e30c5211a38a88732369fdf07d96c83963564f11b14048c060a2d410ea10082825820a1ecd258e4f23d09803873e6b8a5ed21107738e12004ed7b1fe1bf89c9c49e5a5840789070b47a7d4bf6ee4d56773ace2faaed2f76905848d65e5c35bfb75339060ec9c6e904b9a8fc54cf861a6da4aa3d8f607cb325b1f1cc266e49fb8a6dc3ef01825820a1ecd258e4f23d09803873e6b8a5ed21107738e12004ed7b1fe1bf89c9c49e5a5840789070b47a7d4bf6ee4d56773ace2faaed2f76905848d65e5c35bfb75339060ec9c6e904b9a8fc54cf861a6da4aa3d8f607cb325b1f1cc266e49fb8a6dc3ef01a0 \ No newline at end of file