diff --git a/Cargo.lock b/Cargo.lock index f63eca0..b514653 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,8 @@ version = 3 [[package]] name = "aluvm" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04c1d697d7f5b86d935bfe06cfd0310fd8a6c491b043118bec228597dcede9" +version = "0.11.0-beta.9" +source = "git+https://github.com/AluVM/rust-aluvm?branch=develop#bedd86c160bab2398c07901728fd06b6bab13ddc" dependencies = [ "amplify", "ascii-armor", @@ -34,7 +33,6 @@ dependencies = [ "amplify_num", "amplify_syn", "ascii", - "rand", "serde", "stringly_conversions", "wasm-bindgen", @@ -101,9 +99,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -135,9 +133,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "baid64" @@ -173,10 +171,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] -name = "bitcoin-private" -version = "0.1.0" +name = "bitcoin-io" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] [[package]] name = "bitflags" @@ -214,8 +222,8 @@ dependencies = [ [[package]] name = "bp-consensus" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "chrono", @@ -228,8 +236,8 @@ dependencies = [ [[package]] name = "bp-core" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "bp-consensus", @@ -246,8 +254,8 @@ dependencies = [ [[package]] name = "bp-dbc" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "base85", @@ -260,9 +268,8 @@ dependencies = [ [[package]] name = "bp-invoice" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29c4f672b4b82ce7a218b2900254ac8e4b15b0022ed13abffa722571e73d375" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-std?branch=develop#b83739dc1ee3299a85f4cb040e061597dd9be2db" dependencies = [ "amplify", "bech32", @@ -272,8 +279,8 @@ dependencies = [ [[package]] name = "bp-seals" -version = "0.11.0-beta.8" -source = "git+https://github.com/BP-WG/bp-core?branch=develop#6ae56d5a005f0e0fc761516fb96c2c47bb13de46" +version = "0.11.0-beta.9" +source = "git+https://github.com/BP-WG/bp-core?branch=develop#0f591b4bcbd16d4bab3c9fe7134b9eaf8d397023" dependencies = [ "amplify", "baid64", @@ -300,9 +307,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.1.16" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "shlex", ] @@ -330,9 +337,8 @@ dependencies = [ [[package]] name = "commit_encoding_derive" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea07c5ad73a637276dc4f8a957f8285764018d45bdefef35eb9137f32d0e3c81" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify", "amplify_syn", @@ -343,9 +349,8 @@ dependencies = [ [[package]] name = "commit_verify" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a1982dc6c54d2dcfa2bf4398d97e4e80a93f24d2537e58d6110b2b272cff0c" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify", "commit_encoding_derive", @@ -372,9 +377,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -411,12 +416,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "fast32" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ea9bdb2356e5a92403cf23ac493f9b43bd71e4ffd0f800862b841dd723994c" - [[package]] name = "fluent-uri" version = "0.1.4" @@ -461,9 +460,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -471,11 +470,20 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -496,12 +504,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", "hashbrown", + "serde", ] [[package]] @@ -512,18 +521,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.158" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "log" @@ -537,12 +546,6 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "mnemonic" version = "1.1.1" @@ -551,9 +554,9 @@ checksum = "f2b8f3a258db515d5e91a904ce4ae3f73e091149b90cadbdb93d210bee07f63b" [[package]] name = "nonasync" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a84b7c873630913f738950f17412b9d5b24cad6866b98b802253f8cbbefabb" +checksum = "4b1005555d351f593bf72ffc3a89a0d42e243df004d2c4ded17699f10b562b98" dependencies = [ "amplify", ] @@ -569,9 +572,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "paste" @@ -596,9 +599,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -644,18 +647,17 @@ dependencies = [ [[package]] name = "rgb-core" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-core?branch=develop#0450760dbae554de0d7623691aed7630f1b60a60" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-core?branch=feat/asm#ba885579fae1c1c4966c9bb4f68fa7b48db5da91" dependencies = [ "aluvm", "amplify", "baid64", + "base64", "bp-core", "chrono", "commit_verify", "getrandom", - "mime", - "secp256k1-zkp", "serde", "single_use_seals", "strict_encoding", @@ -666,14 +668,16 @@ dependencies = [ [[package]] name = "rgb-interfaces" version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=develop#673e970f5655ac5f7bd577a410ef4ad02bf3f62e" +source = "git+https://github.com/RGB-WG/rgb-interfaces?branch=feat/fungible-nonconf#f44cb123bb48a6e0a79f1a23d7e1dd6c038a66d0" dependencies = [ "aluvm", "amplify", "bp-core", "chrono", "getrandom", + "rand", "rgb-std", + "serde", "serde_json", "sha2", "strict_encoding", @@ -683,14 +687,13 @@ dependencies = [ [[package]] name = "rgb-invoice" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-std?branch=develop#796312c89122607ff77dd41c5cffeb34db472d34" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#355b9516c3c3bfe69208d33ecea7fed0acb20d17" dependencies = [ "amplify", "baid64", "bp-core", "bp-invoice", - "fast32", "fluent-uri", "indexmap", "percent-encoding", @@ -698,7 +701,6 @@ dependencies = [ "rgb-core", "serde", "strict_encoding", - "strict_types", ] [[package]] @@ -721,8 +723,8 @@ dependencies = [ [[package]] name = "rgb-std" -version = "0.11.0-beta.8" -source = "git+https://github.com/RGB-WG/rgb-std?branch=develop#796312c89122607ff77dd41c5cffeb34db472d34" +version = "0.11.0-beta.9" +source = "git+https://github.com/RGB-WG/rgb-std?branch=feat/fungible-nonconf#355b9516c3c3bfe69208d33ecea7fed0acb20d17" dependencies = [ "aluvm", "amplify", @@ -761,10 +763,11 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "secp256k1" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ + "bitcoin_hashes", "rand", "secp256k1-sys", "serde", @@ -772,61 +775,38 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-zkp" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a44aed3002b5ae975f8624c5df3a949cfbf00479e18778b6058fcd213b76e3" -dependencies = [ - "bitcoin-private", - "rand", - "secp256k1", - "secp256k1-zkp-sys", - "serde", -] - -[[package]] -name = "secp256k1-zkp-sys" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6eea7919e0cab992510edfbf40bd9342c0a3c2bb910f2c51355c2cb2d69839" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", - "secp256k1-sys", ] [[package]] name = "serde" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "67d42a0bd4ac281beff598909bb56a86acaf979b84483e1c79c10dcaf98f8cf3" dependencies = [ "itoa", "memchr", @@ -836,9 +816,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -885,9 +865,8 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "single_use_seals" -version = "0.11.0-beta.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a4c51f21507cf63984c367507f281215073e85b08711ed7da4fc63dbd709e0" +version = "0.11.0-beta.9" +source = "git+https://github.com/LNP-BP/client_side_validation?branch=develop#4015f1fb9e99fdc536c69b957fa5727da9cfa6a9" dependencies = [ "amplify_derive", ] @@ -920,9 +899,8 @@ dependencies = [ [[package]] name = "strict_types" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f16e8855a575633815f01482ac927ebaca3d2485aec8e17226c6826de29154e" +version = "2.7.1" +source = "git+https://github.com/strict-types/strict-types?branch=develop#9a2041a9b1988b17608564725d47b39f442e5062" dependencies = [ "amplify", "ascii-armor", @@ -962,9 +940,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -973,22 +951,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] [[package]] @@ -1014,9 +992,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", @@ -1033,9 +1011,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unsafe-libyaml" @@ -1067,9 +1045,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -1078,24 +1056,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1103,22 +1081,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "windows-core" @@ -1195,9 +1173,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -1220,5 +1198,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index 18c216c..a21f630 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,19 @@ readme = "README.md" [[bin]] name = "rgb-schemata" -required-features = ["fs"] +required-features = ["fs", "log"] + +[[example]] +name = "rgb20" +required-features = ["fs", "log"] + +[[example]] +name = "rgb21" +required-features = ["fs", "log"] + +[[example]] +name = "rgb25" +required-features = ["fs", "log"] [lib] name = "schemata" @@ -22,11 +34,11 @@ name = "schemata" [dependencies] amplify = "4.7.0" strict_encoding = "2.7.0" -strict_types = "2.7.0" -aluvm = "0.11.0-beta.8" -bp-core = "0.11.0-beta.8" -rgb-std = { version = "0.11.0-beta.8", features = ["serde", "fs"] } -rgb-interfaces = "0.11.0-beta.8" +strict_types = "2.7.1" +aluvm = "0.11.0-beta.9" +bp-core = "0.11.0-beta.9" +rgb-std = { version = "0.11.0-beta.9", features = ["serde", "fs"] } +rgb-interfaces = { version = "0.11.0-beta.8", features = ["serde", "rand", "fs"] } chrono = "0.4.38" serde = "1.0" serde_json = "1.0" @@ -43,11 +55,16 @@ log = ["aluvm/log"] fs = ["rgb-std/fs"] [patch.crates-io] +commit_verify = { git = "https://github.com/LNP-BP/client_side_validation", branch = "develop" } +single_use_seals = { git = "https://github.com/LNP-BP/client_side_validation", branch = "develop" } +strict_types = { git = "https://github.com/strict-types/strict-types", branch = "develop" } +aluvm = { git = "https://github.com/AluVM/rust-aluvm", branch = "develop" } bp-consensus = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-dbc = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-seals = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } bp-core = { git = "https://github.com/BP-WG/bp-core", branch = "develop" } -rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "develop" } -rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "develop" } -rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "develop" } -rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces", branch = "develop" } +bp-invoice = { git = "https://github.com/BP-WG/bp-std", branch = "develop" } +rgb-core = { git = "https://github.com/RGB-WG/rgb-core", branch = "feat/asm" } +rgb-invoice = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } +rgb-std = { git = "https://github.com/RGB-WG/rgb-std", branch = "feat/fungible-nonconf" } +rgb-interfaces = { git = "https://github.com/RGB-WG/rgb-interfaces", branch = "feat/fungible-nonconf" } diff --git a/examples/rgb20.rs b/examples/rgb20.rs index d2777b9..3a55daf 100644 --- a/examples/rgb20.rs +++ b/examples/rgb20.rs @@ -2,13 +2,13 @@ use amplify::hex::FromHex; use bp::dbc::Method; use bp::{Outpoint, Txid}; use ifaces::Rgb20; +use ifaces::stl::Precision; +use rgbstd::XWitnessId; use rgbstd::containers::{ConsignmentExt, FileContent}; -use rgbstd::interface::{FilterIncludeAll, FungibleAllocation}; -use rgbstd::invoice::Precision; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::Stock; -use rgbstd::XWitnessId; -use schemata::dumb::NoResolver; use schemata::NonInflatableAsset; +use schemata::dumb::NoResolver; #[rustfmt::skip] fn main() { @@ -33,12 +33,11 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); let allocations = contract.allocations(&FilterIncludeAll); - eprintln!("\nThe issued contract data:"); - eprintln!("{}", serde_json::to_string(&contract.spec()).unwrap()); + eprintln!("{}", contract.spec()); - for FungibleAllocation { seal, state, witness, .. } in allocations { + for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount={state}, owner={seal}, witness={witness}"); + eprintln!("state {state}, owner {seal}, witness {witness}"); } - eprintln!("totalSupply={}", contract.total_supply()); + eprintln!("totalSupply {}", contract.total_supply()); } diff --git a/examples/rgb21.rs b/examples/rgb21.rs index 11212c3..a319f04 100644 --- a/examples/rgb21.rs +++ b/examples/rgb21.rs @@ -4,15 +4,15 @@ use amplify::confinement::SmallBlob; use amplify::hex::FromHex; use amplify::{Bytes, Wrapper}; use bp::Txid; -use ifaces::rgb21::{EmbeddedMedia, TokenData}; +use ifaces::rgb21::{EmbeddedMedia, NftAllocation, TokenData, TokenIndex}; +use ifaces::stl::*; use ifaces::{IssuerWrapper, Rgb21}; use rgbstd::containers::{ConsignmentExt, FileContent, Kit}; -use rgbstd::invoice::Precision; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::Stock; -use rgbstd::stl::{AssetSpec, Attachment, ContractTerms, MediaType, RicardianContract}; -use rgbstd::{Allocation, GenesisSeal, TokenIndex, XChain}; -use schemata::dumb::NoResolver; +use rgbstd::{GenesisSeal, XChain, XWitnessId}; use schemata::UniqueDigitalAsset; +use schemata::dumb::NoResolver; use sha2::{Digest, Sha256}; #[rustfmt::skip] @@ -41,7 +41,7 @@ fn main() { }; let token_data = TokenData { index, preview: Some(preview), ..Default::default() }; - let allocation = Allocation::with(index, 1); + let allocation = NftAllocation::with(index, 1); // Let's create some stock - an in-memory stash and inventory around it: let kit = Kit::load_file("schemata/UniqueDigitalAsset.rgb").unwrap().validate().unwrap(); @@ -53,16 +53,16 @@ fn main() { "RGB21Unique", ).expect("schema fails to implement RGB21 interface") - .add_global_state("tokens", token_data) + .serialize_global_state("tokens", &token_data) .expect("invalid token data") - .add_global_state("spec", spec) + .serialize_global_state("spec", &spec) .expect("invalid nominal") - .add_global_state("terms", terms) + .serialize_global_state("terms", &terms) .expect("invalid contract text") - .add_data("assetOwner", beneficiary, allocation) + .serialize_owned_state("assetOwner", beneficiary, &allocation, None) .expect("invalid asset blob") .issue_contract() @@ -78,5 +78,11 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); - eprintln!("{}", serde_json::to_string(&contract.spec()).unwrap()); + let allocations = contract.allocations(&FilterIncludeAll); + + eprintln!("{}", contract.spec()); + for Output { seal, state, witness, .. } in allocations { + let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); + eprintln!("state ({state}), owner {seal}, witness {witness}"); + } } diff --git a/examples/rgb25.rs b/examples/rgb25.rs index 3925cd1..eb301a5 100644 --- a/examples/rgb25.rs +++ b/examples/rgb25.rs @@ -1,14 +1,14 @@ use amplify::hex::FromHex; use bp::dbc::Method; use bp::{Outpoint, Txid}; +use ifaces::stl::Precision; use ifaces::{Rgb25, Rgb25Wrapper}; +use rgbstd::XWitnessId; use rgbstd::containers::{ConsignmentExt, FileContent, Kit}; -use rgbstd::interface::{FilterIncludeAll, FungibleAllocation}; -use rgbstd::invoice::Precision; +use rgbstd::interface::{FilterIncludeAll, Output}; use rgbstd::persistence::{MemContract, Stock}; -use rgbstd::XWitnessId; -use schemata::dumb::NoResolver; use schemata::CollectibleFungibleAsset; +use schemata::dumb::NoResolver; #[rustfmt::skip] fn main() { @@ -41,12 +41,17 @@ fn main() { // Reading contract state through the interface from the stock: let contract = stock.contract_iface_class::(contract_id).unwrap(); let allocations = contract.allocations(&FilterIncludeAll); - eprintln!("\nThe issued contract data:"); - eprintln!("{}", contract.name()); + eprint!("name {}, details ", contract.name()); + if let Some(details) = contract.details() { + eprint!("{details}"); + } else { + eprint!("~"); + } + eprintln!(", precision {}", contract.precision()); - for FungibleAllocation { seal, state, witness, .. } in allocations { + for Output { seal, state, witness, .. } in allocations { let witness = witness.as_ref().map(XWitnessId::to_string).unwrap_or("~".to_owned()); - eprintln!("amount={state}, owner={seal}, witness={witness}"); + eprintln!("state {state}, owner {seal}, witness {witness}"); } - eprintln!("totalSupply={}", contract.total_issued_supply()); + eprintln!("totalSupply {}", contract.total_issued_supply()); } diff --git a/schemata/CollectibleFungibleAsset.rgb b/schemata/CollectibleFungibleAsset.rgb index fcc0299..39f2340 100644 Binary files a/schemata/CollectibleFungibleAsset.rgb and b/schemata/CollectibleFungibleAsset.rgb differ diff --git a/schemata/CollectibleFungibleAsset.rgba b/schemata/CollectibleFungibleAsset.rgba index 63bb96d..de4ce54 100644 --- a/schemata/CollectibleFungibleAsset.rgba +++ b/schemata/CollectibleFungibleAsset.rgba @@ -1,217 +1,224 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:KD9m3Bvw-xSwmLRp-np1dZCs-nykPCCf-zaSAmZG-guvbqL8 +Id: rgb:kit:7WWaE4wW-zBdMw2d-CAxTCVP-3HgkNfZ-8DH8XB1-759zW7c Version: 2 Schema: CollectibleFungibleAsset; - id=cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence; + id=Yjx26J5Aat5JMoaQa9dn7a1LOQCVCMxB7A3mSp0AXHI#sheriff-impact-native; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB25Base; - id=BdKiMHub-RZTYrbS-13G3wt6-4uIchyP-MQF0Kmm-sYgeMkY#prism-cobalt-airport; + id=xCgpButl-IG39Nk!-aynmAEm-Od5vc99-5WGtRbI-ej5!FiY#edison-secret-elvis; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: b$VleYX0-Sun70zM-PFtyB!L-lb3gyqi-l9MarXo-HZioH6U#hippie-private-optimal; - interface=BdKiMHub-RZTYrbS-13G3wt6-4uIchyP-MQF0Kmm-sYgeMkY#prism-cobalt-airport; - schema=cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence; +Implementation: 65xZ42cb-xOPCpo5-8LECvrA-eJ3TNFs-LbXN63b-a7Jt9s8#gyro-emotion-gopher; + interface=xCgpButl-IG39Nk!-aynmAEm-Od5vc99-5WGtRbI-ej5!FiY#edison-secret-elvis; + schema=Yjx26J5Aat5JMoaQa9dn7a1LOQCVCMxB7A3mSp0AXHI#sheriff-impact-native; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Type-System: sts:X6MVH82h-MpI0B4a-XkYvSlO-6ex93XI-7jqe9pk-wx8znCg#slang-love-detail -Alu-Lib: alu:q$CZ0ovt-UN9eBlc-VMn86mz-Kfd3ywu-f7$9jTB-k6A8tiY#japan-nylon-center -Check-SHA256: 334fc7130c24478e8d5ecc1730d73f03fc548d3abd553cdd27b6b4917fea3e96 +Type-System: sts:hQ3sGk1s-$D8bwJB-5bkN6SH-hnmsRlT-NVfos6W-lYK!RrM#kermit-infant-nova +Alu-Lib: alu:ax9LrFdw-0yf5CUg-jNGrMHj-dsgpedC-i4CK44c-7q63x!g#cycle-bruce-bison +Alu-Lib: alu:4bu5IYlo-jEdOZ3O-1RWr6SB-TXxn24U-7bnKgWq-KOhfPRw#zoom-crimson-jargon +Check-SHA256: 3907638bff15cc820cd7a8edf188aaf3cc9a670daeba265ac171aebfd41d6dc8 -0s#RDQb$5EH9}!?WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=8%{dOaKyPp>`{W+ev&_Ht^T -vI2G1Jtsm#HCZ5u7Cwae0cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H +0s#RDQb$5EH9}!?WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=5=Yl+T7onDsqJ)(GyQzUOj0 +_|udNLf4!^9@NX6Lz#s60cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6H WMy<=X>4-=KPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SETceV>000312V`Y*VQFl000031 -3~6(7b!B8zb#QQOc>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC21$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j -|Nj614rz09b!B8tX>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU -{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQO -c_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQO -c_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_E -AYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~ -cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z=0000OLvL(sWn*+{Vr*qbb#7;A -Vr*qWb8}^Mkc}T^00000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7i -EjUU=H+KLA(FXuqi^o(rG6hNWEqzLQbX$v{o}M{Qm$Q$u|-NIF?wSZw1n#FngOtl-RAbwcKs+x2`TB$Z|Zy1<00000xeEktVQpmq +zLX+s=TnOlIwpu5x<(TMczEDkZ1({G0SaMrb7gc-cWz~J0f>xPWn((=JC(Q18jXtb+QHlu3zu?H+0@$e +$59-Pga7~l0RR911_NPobN~PW00(4cbYW?1a{vGV01Rn!b9H58Q+04~Y)0BZUF!R00neqa&2<~009623So0|Wpqz>Ze?-+0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~WpV%j +0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-cWz~J +009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UM +XmdGNHD)b1N<}w!0RR917(;JtY-M9~X<}?;Ms;pyX<}?;L349ubdZf7W&i*H05kw|b7?wET2nD~cr9mY +L^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z<2GIuqTZ_k3I5GuF9U{JzB5UVUixWB~ +h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK0JsYPcK`4_D#7Gw +X~6yKc4{fCnyi?lPLTMGtH94V>wGO=0RRBG3jly##k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hT! +0K5wTKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SE=M^0yRwMA=M^0yRwMAOVp2J2-YZT&V+n#y^A5@Vg__dWNOhP4*R +dOm&@CXkIEW&i*H000Kj2L*Ixa&2<}0002m2MlR*b9H58Q+04~Y00000xeEktVQpmq 0002I3kPInbYW?1a{vGU0KE$daB^j1X>)0BZU6uP00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p07 0000000ICHZf|ZyadlyAL2Yk!Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_ -Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK}%c009|og(=AP+C)tiPK}(5y`B$^i2_%Xzy^d7vHg1k5 -H90tF4%ya@=dSJu9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0000002eXhT -bJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2nrdH*HiKem1Z9kJM|+?(>Td5ZgsqT;~+(zt2h~^9t!qf)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHiJR3zs -QCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000is8ao+<`1M~J|HmdBRUd1sOY#QI#7OY62ZUYgq2{$1_f|(Z*OMux+H)Wo_#t<{Qxj6 -AK!qv;}MSmqFbhQEq%{{?+7>(hMvn1>teUKtq)w3djjO=VIO}{ZUl?%h%j{$al(PgiY{guVo`3y4;ZoR4bMl2=SA)CVSp@=R0aiogNR0FM -6f^;O*CpsE^1w^{LCiZR_61McH**~s>*k#ka7f`30f1DQOuZYLozrIk|g)X!BI_ij=PW`wtZb#W)+fmD4=t_vsg|0>!+0*ge47SbQGZx1W$+q -KmuPd00Lhz0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{> -G!6q_F*OeZUokci179&W5d&W_I1&S2F*y?hUotQh179*R6$4)~G8O}0GBXzgUotcp179*V83SK3HW~w8 -GB+CoUotox179*Z9Rpu8FdhS6Gcg|nUo$cw179;UAp>7CG$I3EGc_XvUo$o&179;YB?DhGI3@#MGdU*% -UoTDFa_LGAaXKG&3s$UoXEdyUPHZB8SG&e5;UobF#}&UFfs#QH8C>-Uo|o` -179^WH3MHYG&TcYH8nQ_Uo|#3179^aIRjrcI64DgH90#2Up6p2179{VJp*4hGCl)eHZwmV<32;hs$B9Z -CsU(1!DsC|W1LOd&b_IRG-(&Q$wPGo0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*CF=5_dDaL -dt&GbF`L!K1nFKt0{aJ@L|V|mt8Tf>F%PuK$$b1 -YykvwZ*650hMRP8oyjwdxaIA{*p){f_{?k9xNjB5_YJg;9E|1`d*r&;qSS3+uh -`0YNLave-Im;)LDUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{ -UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_r!TdJ&3iT??W6$?l# -{@A?G8j--)v|TbGZq;_HaqHa&9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pbAOI|^*z*)x7;xa( -tX?xs7r@Kg%_4VyXL*^e2SZaPaSj6l0$(ry0$(u!F8L$l9*O2>K7sxkdlq2ufW04X5gsKGR|FM8lquF* -1AqcwFaQEyF#!T!G6Di$GXnx&Gz0=)H3b4+HUSC<9+KF)0IIG%_j!UoWECXLOH7x^QG&U{+UoaFauvSIWYrYH83&*Uo|l^179^V -Gy`8XGc^NWH8eH@Uo|y1179^ZI0IibH#q}eH8?s0Uo|;9179{UJOf`gF+BrcHZnc~Up6y8179{YKm%Vk -H9-SkHa0>7Up6;G179{cL<3(oIYk3sH!wy6UpFyF179~XNCRItGf4wqH#ABEUpF;N179~bOaosxH%$Xy -H#klMUpF~V17A2WPy=5$F;N3wI5JWLUpO;U17A2aR0Cf)HB|#&I5t)TUpO~c17A2eSOZ@;Iavc=IWSrS -UpX;b17A5ZTmxS@GhG8;IW%4aUpX~j17A5dU;|${H(>)`IXGeiUpYBr1Ya>QFk}Q@F)%S@1Ya>QGG+u{ -F)%Y{1Ya>QG-w20F)%f01Ya>QHfjW4F)%l41Ya>QIBW!8F)%r81Ya>RFm422F)=Z31Ya>RGH?W6F)=f7 -1Ya>RG;#!AF)=lB1Ya>RHgp7EF)=rF1Ya>RICcbIF)=xJ1Ya>SFn9!CF)}fE1Ya>SGI|7GF)}lI1Ya>S -G<*bKF)}rM1Ya>SHhu(OF)}xQFWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM1OfmAZf|a7*gwAD -FAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td -370XB%Aj(G3)xaIsZm;LsuY+jte!uyUZPTtus~8Lr=bP`3SxC~ZcuV>Z)S5xvr`~b_&>p|I=+ZSHXzGn -eTL3nwYeMx0j1CTGIbLNeor6CU~-az -M4%p_jBMKVnA!_hHLM3-*En?qu}gdoMr}u)7e{?0bR>WH17z$yORD!eAooFZYXt!%tM$1O6c@UqIn-Z! -6?La^OW}HT7+ugYHG0&^E$N0l(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zgEd*tFV{9P=Xkl|` -BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV= -Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQJ=g3U`2=>B -EOVuo?yi;C-IS|dY*_VV1lmKM$SNfJhg}MqW}N^00000 -0RR90{{R3006!~ox5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ipxYy=<4kft^@4w~Gv0~@0t9q@L|V|mt8Tf>F%PuK$$b1 -YykvwZ*67D|BtS-iU6QaHX&1wj$zkYg`{Q63JyraSw4QMY+uJld#r&uvGo)EH?tmeMV*EUvi5K@+M3jI -=Gr|U^NM>00SIzsb7gXNWphWfQy^3LKf$d!zKBIOAj@QZhR$B(b98cVaA;*G2x4+!V{2t}OehFqa$#d@Wpq+02w`({ -WpZhAYbpeAY;|)h1!He*ZDA}0ZE0?Gb1eg8Z*(pNb8KOAXfFhMWpZyY18;6+F#~jWZ!!gRXmVv`GX!RD -b#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7Z)|UFItg=SZD~VqY;SHm1Z-tay|%gb!BsOX>V>n0%3GO0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l> -0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM -3UhHna$#d@Wpqqi31VSmYg24tb7))&b8$j)VPk7$bW&XfV_|Y-bY2E*Z)9O}XkQ3oVPk7_X=7_(0byYQ -VqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@G -cL8{K0eN`=dU^?CLULhaYh`pydjxQ4aAkZ6V?uIaV{2t}Qhfz4R=en`QSWqM5o5hmSFWPZ$<(8bMF ->h<^zx3zarVM*##!3G2eVRCe7V{Bz1_P_T#MJ -mc=|AqG3>FHibBhS)2n10$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(==Rt=W-qYp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmMzZ000000RR6000000 -09$t~jeJj&GE~o3bsJMXYO0?^NT%k!=UF9_Hk+b8VFt_j2 -&9|DqsTD5}A2(UF#~}_M00>4q10|{hhV`)ukY;0)+3S(t%bZJd#Y;0)-1#M|#a&HC+WMyM%O=)9tZwCrv -Wo~q7O=)9tZwLf#VQy~;2xMhrX-;8oZwd)xWo~q7PGN3u3j}a!V{Z%yWMyM%P-$at4GCjqZggo-X=85= -1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7MrCbuZxIAxbaZbLUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O& -C5asm1puYQ&j^#1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2 -W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c* -0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G -0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8w -a&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU|1oBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Dur<1!iGv -b7cSobaHiN0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG%;Guz -yszPjx|liD+IRr~000000093000000003nHRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~%Z%rO*2^ -brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#W-{7jyY;+0$@L;dFH?7@I0Vhjl>lqRXQ4Sv!J@Q}07Pb3 -aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9->y0X3z7pM0$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(== -0$(@?0$(`^179&P3Iks;F$)7HT;&p7LREnfuzip)Flw(%El5GL~%R*K7_!!LEI$d#tw{C^XqS1c9FcxiZMvTM3t -Q2*(p5s~Z{6V3QiK&W#-F~+s6raGiL13v_0VRL9L1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8 -c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i< -0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K -0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X8 -0d;i&c6I@GcL8{K0eN`=dU|?ChNTZrwV~w-1E;$H-a1RJ5%B|vt^+e;7P&d4QEUSw1bSt1Z!iOIZe=k8 -ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T# -0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A -0$){C0$)~E0$*2G0$*5I0$*8K0$*BMfL_JCQxeEQkVIXfYN5c23F83hGCI$$Y9m4lDXjoK1p&l5eV)0q -0(o=Ek6qT`tOWJT(?USNzPt(#xCj&gl+=PFfb@0n?X0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*4 -0$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLg -YH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU}H!%M3Dx2=n>P7GpdX -sOF_A!yI|05JJA4hD*uxp!Wkc0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@ -0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+ -VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X8 -0d;i&c6I@GcL8{K0eN`=dU}YASY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VmPT%k!=UF9_Hk+b8V -Ft_j2&9|DqsTD5}A2(UF#~}_Mip)Flw(%El5GL~%R*K7_!!LEI$d#tw{C^XqS1c9F1p+ej~gaa -D&)?_rinzLQ&_n0fy*YdyZ9}hJM#tt1$JR}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v| -P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_W)yWMOk?UjboZ0b*hS -V`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7J -cma8N0eX6u_16YMt|~K?(>Td5ZgsqT;~+(zt2h~^9t8nC*X$hm1a_7zbETK=u9eu`l&fBB -SoLHC+C!en&kq5f6wKzah0LUPxz%0|H+( -1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{>G!6q_F*OgPf5CnQcV%pLWn&0*XlZhEWo2$;2xf0}a&%>7Ze<5%X=Zd~Wo~Aue8zcXXXRJdMCHk1I^Yb;mDw5%F9Y9n -z;zN&zQ>*g0cJAVWV`jeJjwMUMK4o#s5k`8&6NOa#Al&7Ou?eGkFXNpQ!`6G?!Ho2{+j3`z?yGA&iMs7 -h0FMkOYwAlAOnB{Zgp$`19NX^0RwY%cme}uba(>;Wp8u@17&V;1p{GYYX$>iWo!omVsi)rXmkkzY-S1q -c618@W@ZcmV{#1wb8ij;b7>C)WNc*+17u?{5d&mnG71&2WMecG1a4ttYZU`?d2SX1WprW}17l%s -7y@N&83S{5Vj2Twb7LCZ)|K~ -awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T -1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8 -c4ajKb7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m> -bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@ -OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxo -V{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qU -WMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MM -c>#KQ31dQXVPk7$bWD2$aA|O5dWMyoBuyE6l_RFpca|tEc|RrSB7Cz4ZX^fET;C?Pugo?TPqd@iwKZAWN>+ej~gaaD&)?_rinzLQ&_n0fy*Yd -yZ9}hJM#bl0000000960|Nj60006mze&;~0k`vnNG-Q(frCuPoqJv316u7g@bjO{C`L6>T0$)Kv0$)Nx -0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);6 -0$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+VRL9-yeN^e#%jg&<`7wAOx^Y=h@bX)}iC9Czh5)>D@qdC-Hdlhx3aZBNPbr@aH -F*SPB$t~%IzmLo5#W`0ornJpr`vBkPrPe7nQ#r+2>fnc?xeBUA2t3iEoy@J9k$WaEUx}!s`ym)GDo%67 -tO|Gy=Bof+a{vGU0000006zc#000000K__dp1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)CB@az9SbZ -=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#tjtrsCg%+lRr?B`GL`xImylWKs$pvgYJmvV80iF~}oa%+!| -DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BY0R-k)e=PQRzk^xih<3e>RP8oyjwdxaIA{*p){f_{?!|i{ -n!oosZgNI|twmNZeC(lYZa*g7-2eQ3Yy;-pLV?*e8zcXXXRJdMCHk1I^Yb;mDw5%F9Y9n -z;zN&zQ>*hX>M?JbaMx@kSBB1e&`i(d1FY^)J0gqR@5msD^SqOKF=c%C58uYb#!obbaS$Tt)Lc}<}Cbd -N>_$qQw_b!lPsq8*H7AOVOuK}28#%6Z)0mzX>DaS+8q@+Aa1+e+@!-jhcW8%o2S}z-#y5JARJB>wYeP1 -|BtS-iU6QaHX&1wj$zkYg`{Q63JyraSw4QMY+uI(0Y58px5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip -f1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r -#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoYJq*Jt8?Abrta^#~Iw-!oZ%zqO(A&rh^vGm~ -tg_w%8wPA|WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~ -0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7Z{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|z -V{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIb -u4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1N -sg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12a -ef}sT&vZN~;BKL%dw1uayIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G> -00000000009{>OV00000;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3i -Z1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nI_ -!lFWr>>#WOli~|dBypgSgz~Xa6?rHQsbOQ%PR|1b0$(ry0$(u!0$(x$0$(!&=xRXCTqXIv;)MTcr4cfx -K`S9uy$)6q!N22#m0-mN1_A_hcxhy#f%$n -#j0HLDJN5-IKgM_J7b(p+0MPGk2Gl)y2(Rz?%u=estEf54=2x#JO! -0is)`buE3*f$s=72pp@w!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI3~&000000RR60000000QIdG -Awf_VvG%;GuzyszPjx|liD+IRs000RR-OjQU%P((>bMN?D*Qb$4|01E&B0MMWh0S5~J -0RRgK000XC0szR`2LU-S0MVci0S5#C00961000 +Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cj3FaA&F>=M^0yRwMA=M^0yRwMA%Xz +y^d7vHg1k5H90tF4%ya@=dSJu9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0 +000002eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2nrdH*HiKem1Z9kJM|+?(>Td5ZgsqT;~+(zt2h~^9t!qf)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjN +CgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}00000000L700000000is8ao+<`1M~J|HmdBRUd1s +OY#QI#7OY62ZUYgq2{$1_f|(Z*OMux+H)W +o_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>(hMvn1>teUKtq)w3djjO=VIO}{ZUl_}jZxWNw7!I9y+{RnQn@2DI{;m7yr3U)7OiEGa`mzoq#(6;V_f>*k#ka7f`=3qD6)+-@ +LI6MnH0sEektM3d!V}o0nEa3l8<>f1KA&4t&LI4m}^5aI1iE}_s79e +O?HmEkRY~wU07xnl6NSebG@@zP5bMol^ld64P|r`p%Da6hyy?ZUoZdyUoim!Uorv$Uo!&&Uo->)Uo`~+ +Up58;UpEH=UpNQ?UpWZ_UokKW179&Q3j<#F*6MVUokWe179&U4+CE@HV^|}F*gwdUokim179&Y +69Zo|Fcbq{GBFhcUotWl179*T7Xx21G#CS4GBp_kUotit179*X8v|c5I2;3CGC3UsUo$Ws179;S9|K=A +G9UwAGczFrUo$i!179;WBLiPEHY5XIGdCpzUo$u+179;aCj(zJFen3GG%+ayUoVD+6CNG%N#O +G&L;)UoZF9TmRI4}cWG&wN?Uo|i?179^UGXq~WGBg8UH8V8>Uo|u~179^YHv?ZaHaG)cH8(i} +Uo|*7179^cI|E-fFgycaHZeT|Up6v6179{XKOy5jL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqbp-*X +&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU19_P_T#%Xzy^d7v +Hg1k5H90tF4%ya@=dSK2gwc#^4#qsMUl{*1zNe>I^CwqAYJB+ZKALhJOg5MU8UkNIK>}YwLIPhyLjqq! +L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9 +R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS}I$rtWb&n35^vCNG$%?ywDnvz}K{0G9hl&cB^sg-3J`2zr)xj +z`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU}5;EUeh`6j~T?;MuHRGffx3%iGN&cYkMjnXLyyQzmf^0|EkH +FaQEyF##_5BjX;4=4U>E{u+B0VDNywA8rvIB@tHy6+)CL)>{LB0$(ry0$(u!0$(x$0$(!&0$(%)0$()+ +0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7UDg$3MGb;mMG&C#& +Uo179>YE(2dQH!lNUG&nE=Uo<%}179^TG6P>VF*5^SH8L~F1Ya>QF=Yf_F)%V_1Ya>QGiL-}F)%b}1Ya>QHE9H2F)%i21Ya>Q +H){l6F)%o61Ya>QIc)@AF)=W11Ya>RF>eH4F)=c51Ya>RGjRl8F)=i91Ya>RHFE@CF)=oD1Ya>RH+2MG +F)=uH1Ya>RId=qKF)}cC1Ya>SF?j@EF)}iG1Ya>SGkXMIF)}oK1Ya>SHGKqMF)}uO1Ya>SH-9hK@_H91 +5|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Yf(H00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->V +o@@aGb8l^BuyE6l_RDb4RmNAXE51!L2&Jh($Ia%Vd3q&R*o>-d45AI6^+T%{AH`6*(YoyWQNR +!##&F>hhbX+H~JN$bujoP8PMf90dWT&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU1Wbp)|Xd=5r! +N1hi)eI#@wfA|Ar>^)1W_c|c=L3C>c0VS*Txe^o?x}!PNUwajGr*TW+dUY6G&@nZ7)X6RBhCI=toy@J9 +k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1b1MX7VRL9L +17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01 +IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{ +0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`$A>>T+7c9tx2rI+rmmDt^st6pqa^<)IvL!Qac4*>|o +a%+!|DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BT0000000030|Ns900000#D{{BQuNq?vw$uLzi?1~h +lkP@ao_$9uVE}^UN!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N<*rD#rE}NPvxSnUK**8 +Le1-kltSZ7azFKgf3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN224rbxWpi{Y +TdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>R +0ssVVZ*FDSKfd5E4dt|K_z&S8_xV!Z000000RR600000007$+g7b@t4MVjY>G@u4Q3HlB(d+LiL +Jm-R=h;`?dxC37Wb8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?EWpZO>ZgeFHVQp|_a&uvB +WF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l +17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(< +bT|ZVX>MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BMZa)HHbU*@M +K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2 +QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7kY+-X~Tnck> +LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|# +0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5 +dQuo71P5VqbZKL3Wg+&z +_dDaLdt&GbF`L!K1nFKt0{aJ2Bz={du0O&G0&#r1CLJBFZ +06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mGT?51yjj4`)KRWY6 +OEBma9j3W?1hVa-5?E;$Xa_D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~}Y-IohWMyM%0R>}aZggn^1#M|;Y-s}tWMyM% +O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxwWn*bhVQy~< +31ek$bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC3S(t%bZJIq +ZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8k=}EVt)knr +bu3H13mOG^S@OiTh_O-%w{ +PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzl +WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ +VTK~nd#>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RR9100000{{R3000000 +WdT-0|38j$F|Rkm*bpSUudIqf?x3%){`Y*0L^k;^s;1_A|i +Z);_4WdT-0vn1>teUKtq)w3djjO=VIO}{ZUj+e*%scV6@fU9pCi53oip!$I +FLkNNm8RePe-orvEEUUmX?SL`Yr0-g|LLOUrS2@UrbB_UrkK{UrtT}Ur$d0Ur8 +UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdU{8Or4LWFq2&q#r@H{&I!mq*@dJpi +12bb5xjCg#Yy%_&dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiUrS2@UrbB_UrkK{UrtT} +Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_s#Ud6mq639W2L|vh3p}>j> +;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@ +UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGc +VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H +0eE-;d3gbPdV?Fw3^IlY^ZCsdV>}k9=A|mb9C@Y?LcX1bOUd-0_X9NoUqL|vUqV6xUqeFzUqnO#UqwX% +Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8C +UshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdWeizWn((=JC(Q18jXtb+QHlu3zu?H ++0@$e$59-PgarXyp-EU>L0b>G|!rXoSC?n5wJSpIAp{09w=bpP+ +&ZWGMAfo&23(WIz3XnTwaCwA}8zxgKAOx^Y=h@ +bX=9gy~#}iVEJ)s5j^%uEnQ9{n2s|9Fa^ps+HG#`XS4%91bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+J +Gz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f- +0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I +0$*8K0$*BM25fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{ +0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU}`j*9JnaDl?KLJE%?_&cu`BzdqA(v4?YpHBQWkf@=i< +T%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_MomG>py7|rEn>a@Jg9&ldILR+=b-aAzAVr?5I2ooM +1pz(R>>T+7c9tx2rI+rmmDt^st6pqa^<)IvL!Qac4*{MO%;vF$%%pd^L}N?(ELd@=ehf0VuEF1Glu{~_ +8OH+<0$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7KHujTH+>EdJQM&>E4z +*R)+SA#T-nt8weyrO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#00gEkI7$;ygcv)Wrnz}*2I!1+ +#(*(7-8m6R>I9nO*Wm*Y1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bG +Woc(MgX19W9>VFqPvWp-t5Vg__~Wo&k3V+eF;X>xRBWo~2$W^Z+JbY*33Wd~+yW^`p`Zf2-_ +#(89ClqRXQ4Sv!J@Q} +uoB=?GfO`1zEW5In&>0Inr}bO`2{(J%lM8<@pOG41Aqf=b!-3wb8lz?19NnE0t01qcmo4vZ*&9$Wo~f= +17Txp1_NScYzG2ja|i-xbO{1%W(op!bPEDzW()#jat#7=Zw>-;X%7QrY-JDwWMeTA17u?|5(8voGZO=3 +V>A>5Zee3<6$5j5ZWaS&bYd3+V_|L>0%dI(19Np^8Utl>V;cfya~uL^a~%S5a~=Y9a~}nBaA9L*AOvN2 +V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$ +bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLH +WibPEcW*KUbZByAWite3Z*_7s1ZHV=WiCg +Z)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+& +Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjD +RsvsFR{~#HSOQ;JSpr{LS_*SetH31dQXVPk7$bW(i +Wo&=2aMO?W(hOSV*asELF;pE|QoG*E(^8!{=H0e(APJWR0UWS(jugTGj1K^e=F-$2o*6gc%@3Ir#hQL8 +;m&)YyRi-4{(vB@*r3V?DIrj+u{=>tcHU8F!O3w2qJC#)UJ{2Xl2|ba`-PFWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM2V-bqa&u*LFWB;W +7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfMvVyIk7MbQO{A@~BhGA0;y~>j;ruNrQ+G}B3D;5Te2#`Bu +aCwA}8zxgKUrS2@UrbB_ +UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)_@ +D3P(oYQ^>D5Lu%jciN~UGoeFU(?$rh3j_QCeU(K63Iuv(a&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^H +X?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IllZJ{AQ&Y{bW*VIunOL=kX9N3%>t4!A4H=_ds@ZTm=Co +tM$1O6c@UqIn-Z!6?La^OW}HT7+ugYHG0&^E$N28kIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUm3 +Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000#5#SRxw8U!bIFfg*5RxK +^~=*jK)}Ad3JH<(%oY0=TGqa +6l5KfYJkC@$v(fAa&d%-e7wYRYmbj8(R#s`$Q_Oip_^hvoaWGEUH-@Ecs#X-@uLL+1m;+OEcST6gIVN= +cD;^N?KWkFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&jRjKPz&##IG7- +47St%2#c>Z5R>jkTb_MKDq#SEVo@@XB+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`SsKFP7nY +4g;Flf93~qr!XIkUWl1p1!rpm5CnQ7Zbb)XX=Zd~ +Wo}0Dx+H)Wo_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>u9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5Vlzr +Fd~pb0000000000|Nj6000000^{p2nM9k9NV(jNn@cR^G9g}K+!Jx@Lzn5}xgo%8-2uQvo7b@t4MVjY> +G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE0000004D$d000000QnaP1l_I#dHB_@bgMhk0_N&La@nc5HwP6O ++keCip#vHLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL5 +0d#Z$b#(!Db^&*H0eE-;d3gbPdi$wZavD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmVbMN?D*Qb$5L01E*C01J5n0Kv@z3sC?7 +IWw;T3xNax1tI_d3jhWH8F_I52Md7&00jU500kld01E&B02zUC0S5;F007ztpbr57YadIjS8&rO`3XoP +G-}KqH*A8JoeC}jD~=rQuD8eN00 -----END RGB KIT----- diff --git a/schemata/NonInflatableAssets.rgb b/schemata/NonInflatableAssets.rgb index 3f095a8..e8abd72 100644 Binary files a/schemata/NonInflatableAssets.rgb and b/schemata/NonInflatableAssets.rgb differ diff --git a/schemata/NonInflatableAssets.rgba b/schemata/NonInflatableAssets.rgba index c1857d0..019a5c3 100644 --- a/schemata/NonInflatableAssets.rgba +++ b/schemata/NonInflatableAssets.rgba @@ -1,213 +1,220 @@ -----BEGIN RGB KIT----- -Id: rgb:kit:$Rniyeda-KT4Rnce-aN9gKgA-xkhhVMC-y4SEO8L-KQd9DYI +Id: rgb:kit:zME$NvMw-qn9HLZQ-wnp4nH7-aS4Krra-cYvNVjz-d3Ik4ZA Version: 2 Schema: NonInflatableAsset; - id=RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana; + id=M$wG5!zriCs4FDuckpXmrw7085bfkl5RSpx2XaVz7Zo#water-blitz-lava; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w Interface: RGB20Fixed; - id=$iUnO9aO-1xhqUd6-1Jm5S5!-wM3ngby-5GVEylQ-ZTAMYDk#tornado-pioneer-bucket; + id=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Implementation: 2$SQla8Q-YZzjUiY-zzMFd!b-mBm95Os-tMpPHji-GFGp$xE#oberon-joker-bernard; - interface=$iUnO9aO-1xhqUd6-1Jm5S5!-wM3ngby-5GVEylQ-ZTAMYDk#tornado-pioneer-bucket; - schema=RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana; +Implementation: szshf43t-4TmwNlZ-cm$SBdi-EQdzLqC-DmG!v8h-Qmo$D9Y#brigade-eric-transit; + interface=Oq2rlfVG-m!!reli-q10Jxut-FBhzKXQ-mxtfYzg-Td1qVfQ#club-factor-montana; + schema=M$wG5!zriCs4FDuckpXmrw7085bfkl5RSpx2XaVz7Zo#water-blitz-lava; dev=ssi:LZS1ux-gjD9nXPF-OcetUUkW-6r3uSCS6-aQhs9W5f-8JE7w -Type-System: sts:X6MVH82h-MpI0B4a-XkYvSlO-6ex93XI-7jqe9pk-wx8znCg#slang-love-detail -Alu-Lib: alu:q$CZ0ovt-UN9eBlc-VMn86mz-Kfd3ywu-f7$9jTB-k6A8tiY#japan-nylon-center -Check-SHA256: 4464a9c061ee8a2a5aa35dff7bf0266a6d5e50112e36a929e4fc527f1c1ea667 +Type-System: sts:hQ3sGk1s-$D8bwJB-5bkN6SH-hnmsRlT-NVfos6W-lYK!RrM#kermit-infant-nova +Alu-Lib: alu:ax9LrFdw-0yf5CUg-jNGrMHj-dsgpedC-i4CK44c-7q63x!g#cycle-bruce-bison +Alu-Lib: alu:4bu5IYlo-jEdOZ3O-1RWr6SB-TXxn24U-7bnKgWq-KOhfPRw#zoom-crimson-jargon +Check-SHA256: 13ec8063d882f1667994d6482b84988f718fdea6ade8aa85e70a34d32f3116cf -0s#REQb$5EFh*&3Wn=_aPh8{kau)pw>ewj^T{#F%_1b`zh4BqG=$aXZ#JgYDb9y}-6Hl)`6lNs{1@>}k -p0WaU);%XeLp50-i55Pcp=$y71}Xc$1Lrp{=EDDrH7#OLSAsA5t*+o5+Hc0ga^&>OcYv#ZpPZ9ol}3X? -1Ej4f_QBBl7W$iHE8VSx`2l7C000000}N?%b9H58Q+04~Yewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyG +JowX;3qseNLLSu1oI{zd+?yZx(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr +-$vuP2+&Ta#sc9uF^R^6`2l7C000000}N?%b9H58Q+04~Y)C1bYo}%2y}8`ZgXa3asU7T -009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+ -0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2 -av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5 -Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwX -Aa7Rb7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h; -b2(QvW-T~MMK^Z=0000IPH%2WZf0y@bYWs_WkGXuWpt2@A7%gm001-qb8~4rOj=Vhb$BgjYD771SWreS -Ph(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00Ynm0N4D!;~wy+U0;_w+8Yauo__nw#aAVFI4rEw -y|f{U0RaF2(FXuqi^o(rG6hNxG{{R82@R`z!?NHxd -23Hj_e>$5opLcw)x&Ht5G{KXgJhmnY0003HCjbBepbr56|NjA?4*>xG{{R82@R`z!?NHxd23Hj_e>$5o -pLcw)x&Ht5G{KXgJhmnP00000000000099+HX$)Ie)bFeV_}QG)eQtfwS~&UnbN}+Pf&N4=R3*%B_})9 -j@KA!QQoyCZc^v$4BmJf%aN56DNtoF3}88sjUQ$J000001JDNqb8uy200000(FX-|WpZtE00000+6N42 +9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRCCVRLh3bWe9~WpV+Cj96u3I`KP|x6K-jit^gQ+!PC!a#7jT ++VjUz9FBwl009920009FX>)URWn@!zaBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?-- +0RR600S;+%b9H58O=)v&VRU0?0SI(*VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k +|Nj614{mR6MR9duY(Z^rb#8QX0SaMrb7gc-cWz~J009Vea$#)C1bYo~_b9HcV +YK5Ib#!obbaONSb8~4rOj=Vh +b$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0RR915>9V!Np5CrVRT_)Y-K@n +b7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~ +cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~ +h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VaK00E#60EmoOWn((= +JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu0RRD@4*>xG{{R8uySX8WXpBcr +XLGehYWheN*T#LgQ?}xG{{R8uySX8WXpBcrXLGehYWheN +*T#LgQ?}xe5j6g!-fmFBMw^z)YAl3r0toOWHMbM2Zst*e#w +Mw{=edRVI0LUFp$L5DJzLTqh)jNnb(YE|@*jUQ$J000001JDNqb8uy200000(FX-|WpZtE00000+6N42 b8~fNWK(r;aBO)100001pbrXRb8}^MPj_x*asU7T0003HCkS+MVQzC~WpV%j0000201s|&Zbfl*VQfKd Z*^{Ta{vGU009nZb8~fNWKC&vZDDj{XaE2J05kw|b7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{ -Q$tfWEn!h;b2(QvW-T~MMK^ZZeT05|jA;vvYupWm60j1CTGIbLN -eor6CU~-azM4%p_jBMKVnA!_hHLM3-*97KRe=PQRzk^xih<3e>RP8oyjwdxaIA{*p){f_{?g$*Kzr)xj -z`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU{_e0000000960|Nj60000NGkSBB1e&`i(d1FY^)J0gqR@5ms -D^SqOKF=c%C58wJ8Iadg@(Pt^9}_$EBT6NY{!7T+2`8i*bZ~Wa=xRXCTqXIv;)MTcr4cfxK`S9uy$)6q -!N22#m0-mN33F*@Q)6;zaCA6z1hGqe4n}Q9o)<@bBy=Qy_yc6@Jxi+hIw1E!bZZE6WpQ<7ZewKu8Eu6r -$oASqO%+a!oQ%Dm4~>ZeT05|jA;vvYupWm8cWHEPWpi_#RgA7(M}`c+nSQQ?~8eK|KYU^Omy3ihUZZTUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$ -7U5G>00000000002LJ#7000004$>Ms8HM=uUmE|%CLL8DYpYB02F=7s{mYlP#7GIv1_A_iba-#*YCz3g -CHcMLg#T%!5i+MiDNX7aiufEJ#8I!OHhFfAY7fVtxlj{%}vrgbfS&w=j< -I1`4ThN&e7_DZhZ(?s#4rR#ml%=s=!TEN-zci9R$fdv6}|L{F3!Q^Ra!2RoXYALLmteB)ukob+Oz|T1A -d@WxXaP7yr3U)7OiEGa`mzoq#(6;V_f>*k#ka7f`=3qD6)+-@LI6MnH0sEektM3d!V}o0nEa3l8<>f1KA&4t&LI4m}^5a -I1iE}_s79eO?HmEkRY~wU07xnl6NSebG@@zP5bMol^ld64P|r`p%Da6hyy?ZUoZdyUoim!Uorv$Uo!&& -Uo->)Uo`~+Up58;UpEH=UpNQ?UpWZ_UokKW179&Q3j<#F*6MVUokWe179&U4+CE@HV^|}F*gwd -Uokim179&Y69Zo|Fcbq{GBFhcUotWl179*T7Xx21G#CS4GBp_kUotit179*X8v|c5I2;3CGC3UsUo$Ws -179;S9|K=AG9UwAGczFrUo$i!179;WBLiPEHY5XIGdCpzUo$u+179;aCj(zJFen3GG%+ayUoV -D+6CNG%N#OG&L;)UoZF9TmRI4}cWG&wN?Uo|i?179^UGXq~WGBg8UH8V8>Uo|u~179^YHv?Za -HaG)cH8(i}Uo|*7179^cI|E-fFgycaHZeT|Up6v6179{XKOy5jL&d6G@+l`%qd385?K@+fP1(-9sgE>i -7rMzqbp-*X&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU19_P_T#%Xzy^d7vHg1k5H90tF4%ya@=dSK2gwc#^4#qsMUl{*1zNe>I^CwqAYJB+ZKALhJOg5MU8UkNIK>}Yw -LIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795 -QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS}I$rtWb&n35^vCNG$%?ywDnvz}K{0G9hl&cB^sg --3J`2zr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU}5;EUeh`6j~T?;MuHRGffx3%iGN&cYkMjnXLyy -Qzmf^0|EkHFaQEyF##_5BjX;4=4U>E{u+B0VDNywA8rvIB@tHy6+)CL)>{LB0$(ry0$(u!0$(x$0$(!& -0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7UDg$3M -Gb;mMG&C#&Uo179>YE(2dQH!lNUG&nE=Uo<%}179^TG6P>VF*5^SH8L~F1Ya>QF=Yf_F)%V_1Ya>QGiL-}F)%b}1Ya>QHE9H2 -F)%i21Ya>QH){l6F)%o61Ya>QIc)@AF)=W11Ya>RF>eH4F)=c51Ya>RGjRl8F)=i91Ya>RHFE@CF)=oD -1Ya>RH+2MGF)=uH1Ya>RId=qKF)}cC1Ya>SF?j@EF)}iG1Ya>SGkXMIF)}oK1Ya>SHGKqMF)}uO1Ya>S -H-9hK@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Yf(H00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9 -t?BNfyg->Vo@@aGb8l^BuyE6l_RDb4RmNAXE51!L2&Jh($Ia%Vd3q&R*o>-d45AI6^+T%{AH` -6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf90dWT&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU1W -bp)|Xd=5r!N1hi)eI#@wfA|Ar>^)1W_c|c=L3C>c0VS*Txe^o?x}!PNUwajGr*TW+dUY6G&@nZ7)X6RB -hCI=toy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1 -b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYx -XmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~vo -Zf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`$A>>T+7c9tx2rI+rmmDt^st6pqa^<)Iv -L!Qac4*>|oa%+!|DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BT0000000030|Ns900000#D{{BQuNq?v -w$uLzi?1~hlkP@ao_$9uVE}^UN!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N<*rD#rE}N -PvxSnUK**8Le1-kltSZ7azFKgf3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN2 -24rbxWpi{YTdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn;XgI|zJmp* -01;Q@0XT>R0ssVVZ*FDSKfd5E4dt|K_z&S8_xV!Z000000RR600000007$+g7b@t4MVjY>G@u4Q -3HlB(d+LiLJm-R=h;`?dxC37Wb8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?EWpZO>ZgeFH -VQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1 -ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~ -Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BM -Za)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<} -Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7k -Y+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3c -XlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$ -bWD2$aA|O5dQuo71P5Vq -bZKL3Wg+&z_dDaLdt&GbF`L!K1nFKt0{aJ2Bz={du0O&G0 -&#r1CLJBFZ06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mGT?51y -jj4`)KRWY6OEBma9j3W?1hVa-5?E;$Xa_D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~}Y-IohWMyM%0R>}aZggn^1#M|; -Y-s}tWMyM%O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxw -Wn*bhVQy~<31ek$bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC -3S(t%bZJIqZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8 -k=}EVt)knrbu3H13mOG^S@ -OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d -0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+ -cz6MMc>#KQVTK~nd#>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RR9100000 -{{R3000000WdT-0|38j$F|Rkm*bpSUudIqf?x< -LRg@~V42^pIs*%m10VulFaQEyF#!T!G6Di$GXnx&Gz0=)H3b4+HUwGO=1p$i8JMp&h7jF7x;m>=zTw_)OG^S@OiTh_O-%w{ -PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -dPjz(4^OqB|1Bk8zGh-IHIi*o-10)1`WpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQW -W@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO+0K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)- -Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsI -Sy=*KT3Uc!#k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hf(#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad -3JOG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9C -R#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>s -aBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQgB!~XGKL8A`OOw%JQk?tr7FW5d8QCTzMY0k$@HN2 -12qC)K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40 -P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QBdZ)9O}XkP(gVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -h>TceV>4NmyOwH13hJd4!J}CQ~Zp&c>#RM4(exxbT6?CbPTv -EuK5`1_A|kVQh6}m-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le%!q<(40B_0X>fEt4!A4H=_ds@ZT$RJU$xQ-a`EhCyJoZT~T}~sIjxz)>1UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rQY;R;?b7)@yVPOGcVgX}g0c2zWWn}?oW&vks0cdCe -X=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdYARr212eXGm<4c -s7@Wu#FOK{KGSirhjWHCPRxjcYXt#Zp-EU>QYw=f#{&=oUoZdyUoim!Uorv$Uo!&&Uo->)Uo`~+Up58;UpEH=UpNQ? -UpWZ_UokKW179&Q3j<#F*6MVUokWe179&U52J!Y^UK%K(4i9Ajp1M~R@C@!4#dQE#lUD;OiKi1 -Rs{hnTdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHcs&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I) -2VU0z1g0)HN)u6p7(1P&xp`{_=!|v7fH67UIT1+e1e)X5;R6r^dS!BNFavLHWibPEcW*KUbZByAWite3 -Z*_7s1ZHV=Wi7 -Ze$2%Z*_8XWo2$<2WDwzbY*33W~h9|d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo&^DBGTLOj^}IaE -^&&+tQ+KF11kKHr0Bgi&p*c*!qO^~&65vxaOFr(tQdj<(=p(?IZ$HlY1v!Pw_>N2QbbTNLfCFxIYybmu -Z)gDnb98tD17&o00|RAmbOZxsZgB+zVPk6s17c-t2LfVq2m)wy2?A_p3IcX?3j$_l3<6_v4FYp-4gzy& -4+CUuWe@{oV=)l}WMeWC17u?}69Z&pG!z7GVPk6*19N$976WB;ViyBrVQv@#Wo;P)b9G`G17&k#8vb98cVaA;*G2x4+!V{2t}OehFqa$#d@Wpq+02w`({WpZhAYbpeAY;|)h1!He*ZDA}0ZE0?G -b1eg8Z*(pNb8KOAXfFhMWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&B -XJ~Xd1a4_=WjO_7Z)|UFItg=SZD~VqY;SHm1Z-tay|%gb!BsOX>V>n0%3GO -0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&2 -0$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM3UhHna$#d@Wpqqi31VSmYg24tb7))& -b8$j)VPk7$bW&XfV_|Y-bY2E*Z)9O}XkQ3oVPk7_X=7_(0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLg -YH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU^?CLULhaYh`pydjxQ4 -aAkZ6V?uIaV{2t}Qhfz4R=egkA>Y=5wD(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td36}){9I$nc -6v6J{u?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN21_K0i -d2nSMuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!V}qb9G{Ld2nSf*z$T8ClZi8YCe|m_*?{lv>_T7 -tkE!8{87}TyWT7ZV`yP=b7gcd*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT9af~}wyndU6~Y)V&# -VN(sg%9AXn_Sa9^Yhha}76yw5kUL~>d4!J}CQ~Zp&c>#RM4(exxbT6?CbPTvEuK5`0000000000|NsC0 -00000xr2V^K(3M#+UqoAlKrJ#Ah@D~Njwy|v&?kIorn3a0~-QgK|umvLP7#xLqh^zL_`8#MMVN%Mn(c( -M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOE -S62dGSXcsISy=*KT3QBdZ)9O}XkWZ2k+H^V#r5V8S)(9#+NdKlp+j5KMhLSD1N;Gfl|=&z1bSt1Z!iOI -Ze=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgXzWg5iW~CYZWKwE6 -6Nf4v|L%jv~AS23ov -&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000# -000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiL -Jm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);?_c?BIMu4qFRxf<)p=@qH -Cf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo(5@daCLNZ2eXhT -bJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~BhGA0;y~>j;ruNrQ+G}B3 -D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQXuCs~&piVX+Q;&{e*II?7 -Wy=Z1DQOuZY -LozrIk|g)X!BI_ij=PWr0{IsR1l_I#dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$F{ZT5Vfz5z -=cU#uHd8spTI%43qqz#IM$tVC!zvrCdYr6!iTFAwzPoQu2~p77$P4tyWQVM>-UAy3Y;R;?b7)@yVPOGc +Q$tfWEn!h;b2(QvW-T~MMK^chySX8WXpBcrXLGehYWheN*T#LgQ?}=M^0yR +wMA= +M^0yRwMAZeT05|jA;vvYupWm6 +0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*97KRe=PQRzk^xih<3e>RP8oyjwdxaIA{*p){f_{ +?g$*Kzr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU{_e0000000960|Nj60000NGkSBB1e&`i(d1FY^ +)J0gqR@5msD^SqOKF=c%C58wJ8Iadg@(Pt^9}_$EBT6NY{!7T+2`8i*bZ~Wa=xRXCTqXIv;)MTcr4cfx +K`S9uy$)6q!N22#m0-mN33F*@Q)6;zaCA6z1hGqe4n}Q9o)<@bBy=Qy_yc6@Jxi+hIw1E!bZZE6WpQ<7 +ZewKu8Eu6r$oASqO%+a!oQ%Dm4~>ZeT05|jA;vvYupWm8cWHEPWpi_#RgA7(M}`c+nSQQ?~8eK|KYU^Omy3ihUZZTUtT8V#RWVYMMP0s#-L?ApehHE +`!Nx1aisd$7U5G>00000000002LJ#7000004$>Ms8HM=uUmE|%CLL8DYpYB02F=7s{mYlP#7GIv1_A_i +ba-#*YCz3gCHcMLg#T%!5i+MiDNX7aiufEJ#8I!OHhFfAY7fVtxlj{%}v +rgbfS&w=j30f1DQOuZYLozrIk|g)X!BI_ij=PW`wtZb#W)+fmD4=t_ +vsg|0>!+0*ge47SbQGZx1W$+qKmuPd00Lhz0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj- +FbV@-F)<4RUokQa179&S4Fg{>G!6q_F*OeZUokci179&W5d&W_I1&S2F*y?hUotQh179*R6$4)~G8O}0 +GBXzgUotcp179*V83SK3HW~w8GB+CoUotox179*Z9Rpu8FdhS6Gcg|nUo$cw179;UAp>7CG$I3EGc_Xv +Uo$o&179;YB?DhGI3@#MGdU*%UoTDFa_LGAaXKG&3s$UoXEdyUPHZB8SG&e5;UobF#}&UFfs#QH8C>-Uo|o`179^WH3MHYG&TcYH8nQ_Uo|#3179^aIRjrcI64DgH90#2Up6p2179{V +Jp*4hGCl)eHZwmV<32;hs$B9ZCsU(1!DsC|W1LOd&b_IRG-(&Q$wPGo0j1CTGIbLNeor6CU~-azM4%p_ +jBMKVnA!_hHLM3-*CF=5_dDaLdt&GbF`L!K1nFKt0{aJ@L|V|mt8Tf>F%PuK$$b1YykvwZ*650hMRP8oyjwdxaIA{*p){f_{?k9xN +jB5_YJg;9E|1`d*r&;qSS3+uh`0YNLave-Im;)LDUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y- +Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZI +Us+iKUs_r!TdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHa&9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX +5VlzrFd~pbAOI|^*z*)x7;xa(tX?xs7r@Kg%_4VyXL*^e2SZaPaSj6l0$(ry0$(u!F8L$l9*O2>K7sxk +dlq2ufW04X5gsKGR|FM8lquF*1AqcwFaQEyF#!T!G6Di$GXnx&Gz0=)H3b4+HUSC<9+KF)0IIG%_j!UoWECXLOH7x^QG&U{+Uoa +FauvSIWYrYH83&*Uo|l^179^VGy`8XGc^NWH8eH@Uo|y1179^ZI0IibH#q}eH8?s0Uo|;9179{UJOf`g +F+BrcHZnc~Up6y8179{YKm%VkH9-SkHa0>7Up6;G179{cL<3(oIYk3sH!wy6UpFyF179~XNCRItGf4wq +H#ABEUpF;N179~bOaosxH%$XyH#klMUpF~V17A2WPy=5$F;N3wI5JWLUpO;U17A2aR0Cf)HB|#&I5t)T +UpO~c17A2eSOZ@;Iavc=IWSrSUpX;b17A5ZTmxS@GhG8;IW%4aUpX~j17A5dU;|${H(>)`IXGeiUpYBr +1Ya>QFk}Q@F)%S@1Ya>QGG+u{F)%Y{1Ya>QG-w20F)%f01Ya>QHfjW4F)%l41Ya>QIBW!8F)%r81Ya>R +Fm422F)=Z31Ya>RGH?W6F)=f71Ya>RG;#!AF)=lB1Ya>RHgp7EF)=rF1Ya>RICcbIF)=xJ1Ya>SFn9!C +F)}fE1Ya>SGI|7GF)}lI1Ya>SG<*bKF)}rM1Ya>SHhu(OF)}xQFWB;W7bg;sK59Oe@c3K=fV3eR7p&1R +S^QDdq`TfM1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj3|i&b +2NlXOR2^DUyWY#wQk^*F-L`Td370XB%Aj(G3)xaIsZm;LsuY+jte!uyUZPTtus~8Lr=bP`3SxC~ZcuV> +Z)S5xvr`~b_&>p|I=+ZSHXzGneTL3n +wYeMx0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*En?qu}gdoMr}u)7e{?0bR>WH17z$yORD!e +AooFZYXt!%tM$1O6c@UqIn-Z!6?La^OW}HT7+ugYHG0&^E$N0l(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I* +cn#*O0A6zgEd*tFV{9P=Xkl|`BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPE +cW*KUbZByAWite3Z*_7s1ZHV=Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE +0e5!+cz6MMc>#KQJ=g3U`2=>BEOVuo?yi;C-IS|dY*_VV1lmKM$SNfJhg}MqW}N^000000RR90{{R3006!~ox5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ipxYy=<4kft^@4w~Gv0~@ +0t9q@L|V|mt8Tf>F%PuK$$b1YykvwZ*67D|BtS-iU6QaHX&1wj$zkYg`{Q63JyraSw4QMY+uJld#r&u +vGo)EH?tmeMV*EUvi5K@+M3jI=Gr|U^NM>00SIzsb7gXNWphWfQy^3LKf$d!zKBIOAj@QZhR$B(b98cVaA;*G2x4+! +V{2t}OehFqa$#d@Wpq+02w`({WpZhAYbpeAY;|)h1!He*ZDA}0ZE0?Gb1eg8Z*(pNb8KOAXfFhMWpZyY +18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7Z)|UFItg=S +ZD~VqY;SHm1Z-tay|%gb!BsOX>V>n0%3GO0$)Kv0$)Nx0$)Qz0$)T#0$)W% +0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C +0$)~E0$*2G0$*5I0$*8K0$*BM3UhHna$#d@Wpqqi31VSmYg24tb7))&b8$j)VPk7$bW&XfV_|Y-bY2E* +Z)9O}XkQ3oVPk7_X=7_(0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{ +0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU^?CLULhaYh`pydjxQ4aAkZ6V?uIaV{2t}Qhfz4R= +en`QSWqM5o5hmSFWPZ$<(8bMF>h<^zx3zarVM*##!3G2eVRCe7V{Bz1_P_T#MJmc=|AqG3>FHibBhS)2n10$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-; +0$(==Rt=W-qYp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Th +m^szjcmMzZ000000RR600000009$t~jeJj&GE~o3bsJMXY +O0?^NT%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_M00>4q10|{hhV`)ukY;0)+3S(t%bZJd#Y;0)- +1#M|#a&HC+WMyM%O=)9tZwCrvWo~q7O=)9tZwLf#VQy~;2xMhrX-;8oZwd)xWo~q7PGN3u3j}a!V{Z%y +WMyM%P-$at4GCjqZggo-X=85=1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7MrCbuZxIAxbaZbLUS7zOPjk(3 +#3Edlt4DceSnnHhoTCQfV7#O&C5asm1puYQ&j^#1bSt1 +Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX0$)Kv0$)Nx +0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);6 +0$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&% +YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU|1oBGG%U@MZ$v=XJ?|;InIP +y66cFfOYp#JM2r7_Dur<1!iGvb7cSobaHiN0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N(lR@ +SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRr~000000093000000003nHRzu`SjPv&tGy!?nCFm&f +z)So=%sVIc1y9;Ha~%Z%rO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}TtOs7#W-{7jyY;+0$@L;dFH?7@ +I0Vhjl>lqRXQ4Sv!J@Q}07Pb3aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9->y0X3z7pM0$(ry0$(u!0$(x$ +0$(!&0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7V>B>*k#ka7f`}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+ +NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#H +SOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHy +b8`W7bOCjB0d{r)cXt7Jcma8N0eX6RM~0;jPqm@t3InIR0Ny%Ft`YGAh^_-OV-~qNrBQ4HBm{b8a&IsL +Z*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IRalnK>}YwLIPhy +Ljqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7 +QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LT7X`~yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJp}>8 +I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(xqT91|EKCMyQK|uB0+zx9 +Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1 +Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-Lu +XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6a8_Ntbh6wZd +%@$)k7O3W>D#ILkrVv8DorX)v^q}_xH3DBjK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL= +N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{L +S_W)yWMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHy +b8`W7bOCjB0d{r)cXt7Jcma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;SY72b +?vbOG^S@OiTh_ +O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QBdZ)9O}XkP(g +VF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE +0e5!+cz6MMc>#KQm-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le%!q<(1p!>4NmyOwH13hJBEOVuo?yi;C +-IS|dY*_VV1lmKM$#Kd;Rz-U=aO9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC +2Yyc<$zXDlf<&Mmp^R+W^_bcVS2e5$Ue^EwrY<;26H$a1JDsMvd20sfjCICqGWM}19*F@#XVmjaq%az$0 +4KD-Vbij2IPrk>V1p#I<+GM-+ygbSEB1JD#cc?f7&CQhnYs6=vIZVN#w2!b7;8Qb8KJLC!SN@vlBfy$( +KhF6DIfcvkj!W@$eINsX18#L}00VPxXaNIrba(;-WpsE017&Y?1OsJmaRmcmV`~NjVr6Ux0%CIr0%&vz +0&Hdq0(Nu@0%m3m0%LLw0&{N;0&{5(17vJv5CddmF%bh~V=@v0WMeZE17u?~6a;QzV`~)yb9rtS17&n# +7XxEqZWsb(Z5ab|bz&L=WpiU20%mg@0%vm_0&;U60(EmA1#@s=V`U%&Wq4z3AqH`EZ**mIA_Qn*b7&(5 +WN&P2VR9q~aAk61Wo~pO31Mw;WpZ<2Ze%73VQ_DAbaHQSXk{k|Vsc?)Yh`pyCN6MEdyk4bS?#RY+-X~F9dpJa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ +ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^HY;SHl33Fv_X+v*pZ*DsTY-MwEJOyQObzy8h +2WN6+VRU73J_vDjWpi|CZ*D&VVRS$OUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9* +UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rU +b8$j)VPk7$bWB?bVqs%zQ*2>#Xj}?&aYAxoV{2t}Qe6dOVRB`3UIuJ$WMOk?UkGAhV{3G2V{2dmVPOGc VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H -0eE-;d3gbPde{8E;~wy+U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X*GB-yl0o(l -kJ>lqHnaUkDzF#MO+`-nfvN;j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;v -w}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aU -zM`;8jz95VBG^B^;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1!e+{I`x|;BT -GZEk9?>;P#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(irjtvC?n5wJSpIAp{09w=bpP+ -&ZWGMAfo&23(WIz3J70bCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uYQ&j)}000000018V00000007{J -s5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNf -yg->Vo@@aGb8l^B+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`S+XYD&<_B@7FdvLwh?!jlXKMox1bSt1Z!iOIZe=k8ba!tu1$1a~ -Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX19W9>K?Y@PWp-t5LI!kqWo&k3LkM(e -X>xRBWo|?WW^Z+JbY*33MF(bSW^`p`ZbtIDB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK2sj8FtG~n8 -CcwYZ>30ftrsCg%+lRr?B`GL`xImylWKs$ -pvgYJmvV80iF~{WNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720000000000CjbBd00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!HgVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dk -Y-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0P -IsUw_;fcDKIn~;D0RaF513^qx2trUqNk>IfR0C2+LLmSP0002cpbr5D3jhHC3kU!J3jqQE$l3=1IWPdx -pbr5D1ONa500000 +0eE-;d3gbPdI@7fa$#d@Wpqq?1aN6^Wqb)^LULhaYh`p&eFb!BY-DAA17u}vf3R@VkM`0GTIJXW70NMG +9a>Vm-pkWcojB&*wsIf|mjwYFuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8MAg$P-$_ObT +P^+;#QB8KK9=zKTm*o$AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zKTm*o$AsQE~ +(J)#3QPiZn-Yl|$t)Lc}<}CbdN>_$qQw_b!lPsq8*H7AOVOuK}28#%gJ7jQqgpV60Q!3=n#-@oxpi@}5 +@PW%Fv%B~$o;&jZ0000000030|Ns900002FgMQ~gu96el>ojDN{iR+YxT1qeJQTRI%yh?{hxxAq8v}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03 +Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_W)yWMOk?U%V)hvBqk}_2v*+qab(Ms3S9> +LtE2E2(t?V`~iKHMFR>1dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiBTu$F{ZT5Vfz5z=cU#uHd8spTI%43qqz#IMhHC7qMgjGn~{4aFkgwNr28Ql +Fe*-S#jFZ=4d$x=UUL8d00000002J#00000006`~eV)0q0(o=Ek6qT`tOWJT(?USNzPt(#xCj&gl+*Wd>h=Ype%b?272^{p2nM9k9NV(jNn@cR^G9g}K+!Jx@Lzn5}xgo%8- +#Bytok0{Z4!I#J#jt!xkVnm$g&}3cy$LV-HwTJPe1px%+Sbr?`c)x>LqGWM}19*F@#XVmjaq%az$0 +4KD-Vbij2IPrk>V25D|^b#!wFvydlq)qdy|ad~4%)6_*+!B*5MH!D!k%RbK|5G95OZ*_EVb#!yGf~}wy +ndU6~Y)V&#VN(sg%9AXn_Sa9^Yhha}76yw5Y;R+0RB3HxHQF5&IUsJk-Q1+ZJ%=&s@|&mHbl*M5f*>4D +7PYw?%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i!&yFls%&4!1pz-Ra<{~<8ep?nYaleMc%` +0D|O6*W}E?a*~gEI0M-qU9F8#%$RFKGB^*CB=^U`QB8J^yO0F}`4m;t2@#H=ITLm*{QiV +2NfFIf5Z%-zmLo5#W`0ornJpr`vBkPrPe7nQ#r+2>fnc?xeBUA(LD^qDjThOoUD3@_&O-QyKhbjQPA7S +3-rijhpe*R0~-cxZ)9O}XkP(gVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>s +aBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ*ZjWY9`LALUza=D8w-q{e*4SCS0#5iEUeSLv>}QC +1_TClX=7_;a$9#Sj2Bz={du +0O&G0&#r1CLJBFZ06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mG +T?51yjj4`)KRWY6<)W@$8mW*%&FhDhLgP$wKlOrt +u`}L^+TgISeJ)kNFk^3Xf +*%skbRR9100000003QGV000000N{tHG?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfdm2o1a5C`W!OKy +;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67V9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;d(oW9<1Oi_$00Lhz0Rmq#0s>z%1L$f%&0HnY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=aO9W+B1a@zA +bRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb?)B7>#7L*0S_;h;d%}On%IBl2XUt`AB7ZbS%XZ*_8XWo2$f2WDwzbY*33M)JBOfEJ#8I!OHhFfAY7 +fVtxlj{%}vrgbfS&w=jH<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca +=a#qt000000000d000000002_7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`Bki +WC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N +0eX7-saSFvJu_4WvuML_T7r2AV9eq<{=Bc@iMp6M)!KLg0ssR8K}=N$LQq6WM@3Uq15!sqL;wp>000Yv +0sz1lfFuF`0l^XkIW(XFAb?;2Bmw^e4genq3sC?73yS~%z#o7l0sjHP7X&#qpaCF=U;!in{{txi9|sBm +00000000000000313^qx2trUqNk>IfR0C2+LOB2n0RR9Cc>(~z%>xTj0022NuK^2z1ONph000XB1^^j( +aRCPlfdl{r00005A^-pj0000PfpGx`2LJ#7+6SNy0Rd|tORQIL(~x^Kusb3F_D>3|%=0P4(JGV2&KejyU3PXhRtzED9#IG2D9~Wef|tz=zf!5xgaTwtA7>rorb(ioCo~x^Kusb3F_D>3|%=0P4(J>rorb(ioCoP%2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#Y -uvhEM?N$K*0SaMrb7gc-cWz~J1sHJc%j{$al(PgiY{guVo`3y4;ZoR4bMl2=SA)CVSpWe6000044`Fn4 -VPj}*Wo~p-d2nTO0RRC21aoj@V*vmG00neqa&2<~00967bZ={AZgT+u0RRCCVRLh3bWe9~WpV)k|Nj63 -5N2{=V{~b6Zclb)a%OCAcNJ-Fc42I3WI=RvVPj}*Wo~p-d2nS6b#7~JZ+C7~Z);_40SI(*VQzC~Wpe)j -0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj645N2{=V{~b6Zclb)a%OCAcMfiEZbfl*VQf}m -Y;|RG5^is9Msi_ebZKvHVQf@yYh`W>b#7~JZ+C7~Z);_40SaMrb7gc-cWz~J009Vea$#K5Ib#!obbaNnOcw=Q{WOE=f -6=`mEVQgt+L3DIsV`yzK5Ib#!obbaN7JZ*E3%VPkY@ -Z*F01RBvl#Za86dbY*RDbRcwZAartJZgXa3av)(KW^!R;bZKvHAa7;+#adl-xX=iD4VQfKjb7gdpjUQ$J -0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`&?2LRXn -zT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6 -;9P9?0RR9t2mt>g2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K*05}K$ai+oNNQ%6?MXfTR|H~O& -PAZ+M?%c4|uH0003t7IAgSMAMD6vu_L?ALP&UnspJQz9j^e@~P-Jgw&-A0003H -CjbBepbr560RRD@4*>uH0003t7IAgSMAMD6vu_L?ALP&UnspJQz9j^e@~P-Jgw&+~0000000000009C2 -_Q09uQ=^#*-4aKEZozNW5i` -jUQ$J000001keWrb8uy200000(FX-|WpZtE00000HV6iEZ);_4a{vGU05}K_VRUq1V`yzV>}Y*cS+Wo`ff001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGN -HD)b1N<}w!0BQgL0U2$DDaiKPL`@Y=jhu|Vo)3+Q0$Mw;ks-!CQm`I}1p%ec`!aPC2Yyc<$zXDlf<&Mm -p^R+W^_bcVS2e5$Ue^TXSbr?`c)x>LmNtG~n8CcwYZ>30fY62ZUYgq2{$1_^U% -XH#QxX>fEnbp)|Xd=5r!N1hi)eI#@wfA|Ar>^)1W_c|c=L3C>fb7gULWo~0-0U2$DDaiKPL`@Y=jhu|V -o)3+Q0$Mw;ks-!CQm`I}2X|?7Ze??GomG>py7|rEn>a@Jg9&ldILR+=b-aAzAVr?5I2ooM3ie;tC4t_B -%h66F;@g^%yYGv6bpPSC3`}&}kA~+_2wz?%<;4X&8%0D>TgISeJ)kNFk^3Xf*%skbRR91000000 -00#g70000001m3I8hNJ#bF9avhEe@5!T$gr*V67lfY}n9jCXN@`vw98ba`-Pu?^n-fFP~dpvnj-AyBKa -JW)+{-ce}5$#DguerIN21Y}`!Ve+~pfEJ#8I!OHhFfAY7fVtxlj{%}vrgbfS&w=j2lh&?-P1(zq^0Y9%FOvLNm{_!@^{$^ -I)McNcK`4_D#7GwX~6yKc4{fCnyi?lPLTMGtH94V>wGO=6b!Q+Q}n%_NC_L8Regd3CNCnwY^SkkhEjrC -KZ>$C1p%ec`!aPC2Yyc<$zXDlf<&Mmp^R+W^_bcVS2e5$Ue_3K?aSgQ=Omp&u -URQ&=-B|?!WdT-0*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD -;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4jZw^)YeOSC<9+KF)0IIG%_j!UoWECXLOH7x^QG&U{+UoaFauvS -IWYrYH83&*Uo|l^179^VGy`8XGc^NWH8eH@Uo|y1179^ZI0IibH#q}eH8?s0Uo|;9179{UJOf`gF+Brc -HZnc~Up6y8A>%$n#j0HLDJN5-IKgM_J7b(p+0MPGk2Gl)y2(Rz1p%ec`!aPC2Yyc<$zXDlf<&Mmp^R+W -^_bcVS2e5$Ue_V^zxO-isC#1Q2{D`1#sukJKmz**nMbiOl^d7FnDhh!00eGtZe`d%zThtn<+N=058)p7 -{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B6NaFMsU-*YO0M10MDe7h>wU`1`7TLXz}fP5*$O&=C9Czh5)>D@ -qdC-Hdlhx3aZBNPbr@aHF*SPB$t~%I1px%+Sbr?`c)x>LcBr>9x-Cs#sheE97?nsOaXHkbn%0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i< -0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K -0$*BMDqE_oP>KHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD -6)+-@LLdMu-?&gcOB(fowFxn4+u4A192x5Uog%HF!~38*kwLu#0ssVVZ*FDSKfd5E4dt|K_z&S8_xz{}gsB6ojhd6}&TLsKSk4g&%LUoZdyUoinL`6J^ViRNcMf&LnM7GUszy&rB79wiZ11QkM*Db`y9 -fC67I00Lhz0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{> -G!6q_F*OeZUokci179&W5d&W_I1&S2F*y?hUotQh179*R6$4)~G8O}0GBXzgUotcp179*V83SK3HW~w8 -GB+CoUotox179*Z9Rpu8FdhS6Gcg|nUo$cw179;UAp>7CG$I3EGc_XvUo$o&179;YB?DhGI3@#MGdU*% -UoTDFa_LGAaXKG&3s$UoXEdyUPHZB8SG&e5;UobF#}&UFfs#QH8C>-Uo|o` -179^WH3MHYG&TcYH8nQ_Uo|#3179^aIRjrcI64DgH90#2Up6p2179{VJp*4hGCl)eHZwm1Up6#A179{Z -K?7elHbMhmHa9~9Up6>I179{dMFU?qFh&DkH!(*8UpF#H179~YNdsRuG)eP179~cO#@#y -I8Fm!H#tuOUpO#O17A2XQ3GE%GExIyI5SfNUpO>W17A2bRRdo*HdX^)I5$@VUpP2e17A2fSp#1=Fj@m& -IWb!UUpX>d17A5aT?1b^G+qN=IW=DcUpY2l17A5eVFO<|IAQ}|IXPnlUokK+WCUL^FfnBWUokK;W&~d` -Ff(TaUokK=Xarv|Fg0leUokK?Y6M>~FgI%iUokK^Yy@91Fga}mUokN-ZUkR3F)?ohUokNas*#7F*S1pUokN@bOc{9F*kJtUokN_b_8EBF*$bxUokQ;cm!WDGBJ4sUokQ=dIVoFGBbMwUokQ? -d<0)HGBte!UokQ^egt1JGB_T7tkE!8{87}TyWT7W0ssVVZ*FDSKfd5E -4dt|K_z&S8_xVm-pkWcojB&*wsIf| -mobjYpmK)`*-|j6QCe!M6qqZlo4rSfqMgjGn~{4aFkgwNr28QlFe*-S#jFZ=4d$x=UULI21Z8+*Y#{__VRL9B -24rt+Y+-UF17U4&CIoP7b#p5OWMOk?Edyk4bS?yXWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1 -H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7VRB`3UIuJ$WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-Lu -XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX5p*X$hm1a_7z -bETK=u9eu`l&fBBSoLHC+C!en&kq3z#Bytok0{Z4!I#J#jt!xkVnm$g&}3cy$LV-HwTJPe0000000000 -|NsC000000KPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEtcHU8F!O3w2qJC#)UKHujTH+>EdJQM&>E4z*R)+SA#T-nt8weyMYn(@h5^MU -vO8NyVMYp&P~kr{`@Vw(r~naH;kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&ls!tbsYP^%MO!vmSIsorVgs_HZ-Wn$&XU -+C3lhihBkD2y$g}WpZ|9b4RmNAXE51!L2&Jh($Ia%Vd3q&R*o>-d45AI6^+T%}29SAXE51!L2&Jh($Ia -%Vd3q&R*o>-d45AI6^+T%?S?D8ao+<`1M~J|HmdBRUd1sOY#QI#7ON6MEdyk4bS?#RY+-X~F9dpJa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ -ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IR#^HY;SHl33Fv_X+v*pZ*DsTY-MwEJOyQObzy8h -2WN6+VRU73J_vDjWpi|CZ*D&VVRS$OUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9* -UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rU -b8$j)VPk7$bWB?bVqs%zQ*2>#Xj}?&aYAxoV{2t}Qe6dOVRB`3UIuJ$WMOk?UkGAhV{3G2V{2dmVPOGc -VgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H -0eE-;d3gbPdI@7fa$#d@Wpqq?1aN6^Wqb)^LULhaYh`p&eFb!BY-DAANWqh3dQAlpCf!eDe$1KB#m!af -_4p3AwRccqN$OO=1_TFTa&&29Y-J(#zxO-isC#1Q2{D`1#sukJKmz**nMbiOl^d7FnDhj0VQpoAUd6mq -639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@ -0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aUzM`;8jz95VB2KY!nA*;6t215lmk3S~(t;6Y -7Z=sJCn}C_bsn*7Z3O|M)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-mhkl#>Xz_E$1J(MWfObsk* -Zz%0|H+(1Oi_*1p;3-1_EC<2UZQ1_oR6wvcum54rF6F -kJew+k!36?Lqfl$`8gF)R0#X2SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRo}000000096000000 -003KeERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN=oUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O& -C5asmTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?1_A_hWq5QL%am^tlg}6qop{{FTg974FaQ3n -`}K{nn9PGH_DcZ;ZDnL>Vc>_TG?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfn1?USY72b?vbnl1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eX6ANi>WNCJ3b7^91 -WdH4q11PWtiZggo)X>4q11qE$sV{&f>31nqsX-#Qka&HF; -V`Xl1X-#Qka&HI(Zeeb32?%6mV`)xdZf^<+V`Xl1X-;8oZwmx)X=85;2xMhrX;5inZw(1!Wo~q7P-$at -4h3dqZFFxB31nqsX+~vjbZ-y}V`Xl1X+~vjbZ-#^VRUqF5?)@&l23EZa>OEBma9j3W?1hVa-5?E;$Xa_ -DA7(M}`c+nSQQ?~8eK|KYU^ -Omy3ihUZaVUMA(m1w0!?L{VGDpk+OvDhHAKF%fNXr25$w;Zs!uJ_LGYa&IsLZ*FBV19W$9G6i&Ka%E*R -1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IRalnK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_) -M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsF -R{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~ -0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX62h9c2>uJC38-{*D7fZ(%hZo23R4S;p`Q9JBQllDym0tIGa -Y;$D*1axwBWdUQVBNXVdN64~--?N&Y5Ye2f)%xm$jy$=9osnnOG)f5jsaSFvJu_4WvuML_T7r2AV9eq< -{=Bc@iMp6M)!KLg0000000030000000001G0aiogNR0FM6f^;O*CpsE^1w^{LCiZR_61McH**~Y0j1CT -GIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*Jd)>WV`jeJjwMUMK4o#s5k`8&6NOa#Al&7Ou?eGj{rnw -Sa8^mT+s=T=}Z?`J=~w8Q=GLzSfImTncuED0}GM^AOc@700Lhz0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC< -2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{>G!6q_F*OeZUokci179&W5d&W_I1&S2F*y?hUotQh -179*R6$4)~G8O}0GBXzgUotcp179*V83SK3HW~w8GB+CoUotox179*Z9Rpu8FdhS6Gcg}-bj+U}49ir` -|1I+*$<$TBtm<+yI?cCS&H}f+m!nk#0ssVVZ*FDSKfd5E4dt|K_z&S8_xUs_xvd)#O5w -x83S{pf*v6^k7ERGVQpnjv2mE%&TgwSUGkR*P7%_A -5oQ+`)ww4sj&F4yv21O2|L{F3!Q^Ra!2RoXYALLmteB)ukob+Oz|T1Ad@WxE0gB8!@wV|7ZxAN)7gmbP -qQftBsmPV4-~4|Qq*p8z%Xje5eay4FQlx|4kiqCuj-XBi3 -UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rL -VPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!D -b^&*H0eE-;d3gbPdU{8Or4LWFq2&q#r@H{&I!mq*@dJpi12bb5xjCg#Yy%_&dS!BNFavLHWibPEcW*KU -bZByAWite3Z*_7s1ZHV=WiUrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8C -UshHEUsqQGUszZIUs+iKUs_syWlopvmKJ8I(?qGvjTZ@ -$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(xqT91|EKCMyQK|uB0+zx9Gy-2iK>}Yw -LIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795 -QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUi -Yij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6a8_Ntbh6wZd%@$)k7O3W> -D#ILkrVv8DorX)v^q}_xH3DBjK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^ -Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_W)yWMOk? -UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB -0d{r)cXt7Jcma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;SY72b?vbOG^S@OiTh_O-%w{PEG<} -Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QBdZ)9O}XkP(gVF6-d0b^qU -WMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MM -c>#KQm-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le%!q<(1p!>4NmyOwH13hJBEOVuo?yi;C-IS|dY*_VV -1lmKM$oEfg=7gNu)i}m1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDskX -L77&CFH`J3B^Z(Qj)Qsu@aUKwt93!rlZ8yf+KCD*)0ZlH6>$M0- -z9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#qu000000000K000000001^f5CnQ -cV%pLWn&0*XlZhEWo2$;2xf0}a&%>7Ze<5%X=Zd~Wo~Aue8zcXXXRJdMCHk1I^Yb;mDw5%F9Y9nz;zN& -zQ>*g0cJAVWV`jeJjwMUMK4o#s5k`8&6NOa#Al&7Ou?eGkFXNpQ!`6G?!Ho2{+j3`z?yGA&iMs7h0FMk -OYwAlAOnB{Zgp$`19NX^0RwY%cme}uba(>;Wp8u@17&V;1p{GYYX$>iWo!omVsi)rXmkkzY-S1qc618@ -W@ZcmV{#1wb8ij;b7>C)WNc*+17u?{5d&mnG71&2WMecG1a4ttYZU`?d2SX1WprW}17l%s7y@N& -83S{5Vj2Twb7LCZ)|K~awG?E -WpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1 -b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajK -b7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr -2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_ -O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t} -Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzl -WdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -31dQXVPk7$bWD2$aA|O5dWMyoBuyE6l_RFpca|tEc|RrSB7Cz4ZX^fET;C?Pugo?TPqd@iwKZAWN>+ej~gaaD&)?_rinzLQ&_n0fy*YdyZ9}h -JM#bl0000000960|Nj60006mze&;~0k`vnNG-Q(frCuPoqJv316u7g@bjO{C`L6>T0$)Kv0$)Nx0$)Qz -0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{0$)x}0$)#00$)&20$)*40$);60$)>8 -0$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+VRL9-yeN^e#%jg&<`7w((XWj*%F+L -cX5LIzWg5iW~CYZWKwE66Nf4v|L%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I* -cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4 -MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xzy^d7vHg1k5H90tF4%ya@=dSL>dm);? -_c?BIMu4qFRxf<)p=@qHCf(fs{C;c$=G;UE1P69ya&u{KZm4|5d1PnhSJy=4$znR-49k_-8VxT4-*mur -5>LLzo(5@daCLNZ2eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~B -hGA0;y~>j;ruNrQ+G}B3D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR!##&F>hhbX+H~JN$bujoP8PMf9LoQX -uCs~&piVX+Q;&{e*II?7Wy=Z -L#ltp_Vr{><)W@$8mW*%&FhDhLgP$wKlOrtu`}L^00000000006aWAK00000%))Y#k9jx)*&ki4jZw^) -YeOVo@@XB+#WAdR)2C|*D$SwhJOvD$-0{G -fin@`SsKFP7nY4g;Flf93~qr!XIkUWl1p1!rpm5CnQ7Zbb)XX=Zd~Wo}0Dx+H)Wo_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>u9IL;> -*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|Nj6000000^h!oTk{Mq*mt#Id5<{IqiqB>( -(XyRTgKMj7L7^;V1p!-kERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvWYb7a>H<(%oY0=TGqa6l5Kf -YJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#qt000000000d000000002@ -9%YWFOg}YFoW9l|-yK9CRWr2rRnLhh&gT{LWK{$N0ssVVZ*FDSKfd5E4dt|K_z&S8_xmmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$ -b#(!Db^&*H0eE-;d3gbPdikkAnO21_Q|vw^7?JgkgL(n*=$IX=eC$m)1U+k$A_W0}Ud6mq639W2L|vh3 -p}>j>;{fO~I?t|ZBSH!(tpGjysaSFvJu_4WvuML_T7r2AV9eq<{=Bc@iMp6M)!KLg{~`yek&tDD!z_VZ -cAXP49oSr+6K@T=%Z{*D>&)#|1_%XdZe(S6WdT-0oEf -g=7gNu)i}m2V`Y*VQFl0MYn(@h5^MUvO8NyVMYp&P~kr{`@Vw(r~naH;^JG;71#M+yX<^`ps5F){hncU$ijom%IzoLb(>^Yz>$s@6fa*%L>wybl -baY{3Xl-R~baTv)=eb|?NQ$9$(>OX7sslQ%bEkMULcZCvo*Z;Mne7O2Wpib6c4c#Jbj+U}49ir`|1I+* -$<$TBtm<+yI?cCS&H}f+m!nky00RR-OjQU%P((>bMN?D*Qb$5S01E*C0K}jV00I{P3jqKC3kU!J$TkQ8 -3jhEBIUoQF2><}apbrr_ApscyK>-T@0sspU0{}TOAPWlx02u*c0Sy2E015;E0RR9100000000 +uvhEM?N$K*0SaMrb7gc-cWz~J0d5B_y9`%SI(56q&jnHJ)?-#PUJJfLnQTxzs*%e!3IG5B0RR911P@_! +bYWv?ZDnqBRC#b^a{&MW00eVzWn%#V0RRPbWpZtE0RRC226S(0Wo~l;009623So0|Wpqz>Ze?--0RR60 +0}y6%VPkY@Z*EU^WpZY0Z+8`GZgyd8X=FikbYWv?ZDnqBRC#b^40Ud6Zf|#PRBvl#ZUG2%a$#Ze?--0RR613So0|Wpqz>Ze?--0RR601Q2F&VPkY@Z*EU^WpZY0Z+8xEZ*E0#bzy8) +VQh6}a}sWEZboupV{~b6ZeeUxZ);_440Ud6Zf|#PRBvl#ZUG8mb8}^MPj_x*asUAcbaG*Cb7p071rTO( +VPkY@Z*EU^WpZY0Z+9|uXk{Q_ZEtmMbRchLAarkQWo{s5a$#e1X>V?GAZczOZ*_EVb#!weWq4y{Wn^<8 +F%@ZUc42I3WI=RvVPj}*Wo~p-d2nSoVRUq1V`yz%ZMZ*(AGY;13L +Wn>^`Z*m}XXk{RDZ);_44sLI5MR9duY*t}xb!Br`bZBKDb9HSXZ)PBKaAj_EAarkQWo{s5a$#e1X>V?G +AY^Z4b8aVeAZ2lNVQe6DZyV?GAZczOZ*_EVb#!wQZf|Zza$#e1 +X>V>}Y*cS+Wo|fObaZ8HaC9JaZyb#7~JZ+C7~Z);_49${>3Z)0I}X>V>IZ)PBMZfkCDcWxkbZ);_4AW1|t0CRI`I!szqF?Dz?XKF+_ +Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cL4wZ01{PhX>oOBL}_PfbYW~kb8}^Mkc}T^ +00000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7iEjUU=H+KL8&<6n5 +{J!HJ@Tgs1mpj@U3yhwA`^&{wC3iS1tkb=;A&LP3007Yk09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;f +c;H-Y_W=L^HV6R!A_u9FkY$C#EP-5hof9%0*j%0yZwUs_xvd)#O5wx833%){`Y*0L^k;^s;000Eg2LS*9 +0MQ2l0096t2mt^A05}K$00962pbr560RR92TvutQgV+at4eG_d%6fHY&jrh@B2e>yDW+D|a6uU)00001 +5GMct0iX{700962pbr560RR92TvutQgV+at4eG_d%6fHY&jrh@B2e>yDW+D|a6uU)4gdfE0000000032 +E9wja6zfU!aMLyzfp%JiMH9tTpsps-)#bj{g+_uJnf{XEC+JCQ;=&(`Wb?t-FS)kJ#2Wa#GqXcbEc4UT +kc}T^0000000htn1aoj@V*mgE0MQ2pbY*gFa{vGU05%8)bZ={AZgT(t001}$4`Fn4VPj}*Wo~p-d2nTO +000000iX{GVRLh3bWe9~WpV%j000015GM$9a$#czgwdUa>d1czgwdUa>d +1%Xzy^d7vHg1k5H90tF4%ya@=dSJu9IL;>*e1Zg +(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|NsC0000002eXhTbJc$66>)iENYm6sSix4*DK{%n +(91s0BM>Eq2nrdH*HiKem1Z9kJM|+?(>Td5ZgsqT;~+(zt2h~^ +9t!qf)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQ3zjNCgsHiJR3zsQCr5KWj&xO2a)?R5p8j#`q>uY +Q&j)}00000000L700000000iEt{Qo#1aqv%riM}dFTwu+9@otcHU8F!O3w2qJC#)U<71gbYb$kB!Cv4eL6_}05B~d-+;N}5sv|)Tc&j_eb0gK2sjSX +8ao+<`1M~J|HmdBRUd1sOY#QI#7OY62ZUY +gq2{$1_f|(Z*OMux+H)Wo_#t<{Qxj6AK!qv;}MSmqFbhQEq%{{?+7>(hMvn1>teUKtq)w3djjO=VIO}{ZUla_p9aHqZo=6EBn^k>+112vb +!fdCpXogaPTR)1jIt2lx&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU10%am^tlg}6qop{{FTg974 +FaQ3n`}K{nn9PGH_DcZ;0agu`_oR6wvcum54rF6FkJew+k!36?Lqfl$`8gF)R2l2$ofB|K;aP9N=jl+d +3S_}{Un%4gB&#he^ygq)cLf1lp-EU>30f< +p8Cv-XBMpiN1DQOuZYLozrIk|g)X!BI_ij=PW`wtZb#W)+fmD4=t_vsg|0>!+0*ge47SbQGZx1W$+qKmuPd00Lhz +0Rmq#0s>z%0|H+(1Oi_*1p;3-1_EC<2LfL>2m)U@2?Jj-FbV@-F)<4RUokQa179&S4Fg{>G!6q_F*OeZ +Uokci179&W5d&W_I1&S2F*y?hUotQh179*R6$4)~G8O}0GBXzgUotcp179*V83SK3HW~w8GB+CoUotox +179*Z9Rpu8FdhS6Gcg|nUo$cw179;UAp>7CG$I3EGc_XvUo$o&179;YB?DhGI3@#MGdU*%UoT +DFa_LGAaXKG&3s$UoXEdyUPHZB8SG&e5;UobF#}&UFfs#QH8C>-Uo|o`179^WH3MHY +G&TcYH8nQ_Uo|#3179^aIRjrcI64DgH90#2Up6p2179{VJp*4hGCl)eHZwmV<32;hs$B9ZCsU(1!DsC| +W1LOd&b_IRG-(&Q$wPGo0j1CTGIbLNeor6CU~-azM4%p_jBMKVnA!_hHLM3-*CF=5_dDaLdt&GbF`L!K +1nFKt0{aJ@L|V|mt8Tf>F%PuK$$b1YykvwZ*650 +hMRP8oyjwdxaIA{*p){f_{?k9xNjB5_YJg;9E|1`d*r&;qSS3+uh`0YNLave-I +m;)LDUqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0 +Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_r!TdJ&3iT??W6$?l#{@A?G8j--) +v|TbGZq;_HaqHa&9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pbAOI`hxKKSy8ufv-2{CEg*?@H% +8S4F=BCVmr`=C0JLA?Y500eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B^h!oT +k{Mq*mt#Id5<{IqiqB>((XyRTgKMj7L7^;VEUeh`6j~T?;MuHRGffx3%iGN&cYkMjnXLyyQzmf^0|EkH +FaQEyF##_5BjX;4=4U>E{u+B0VDNywA8rvIB@tHy6+)CL)>{LB0$(ry0$(u!0$(x$0$(!&0$(%)0$()+ +0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7UDg$3MGb;mMG&C#& +Uo179>YE(2dQH!lNUG&nE=Uo<%}179^TG6P>VF*5^SH8L~F1Ya>QF=Yf_F)%V_1Ya>QGiL-}F)%b}1Ya>QHE9H2F)%i21Ya>Q +H){l6F)%o61Ya>QIc)@AF)=W11Ya>RF>eH4F)=c51Ya>RGjRl8F)=i91Ya>RHFE@CF)=oD1Ya>RH+2MG +F)=uH1Ya>RId=qKF)}cC1Ya>SF?j@EF)}iG1Ya>SGkXMIF)}oK1Ya>SHGKqMF)}uO1Ya>SH-9hK@_H91 +5|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Yf(H00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->V +o@@aGb8l^BuyE6l_RDb4RmNAXE51!L2&Jh($Ia%Vd3q&R*o>-d45AI6^+T%{AH`6*(YoyWQNR +!##&F>hhbX+H~JN$bujoP8PMf90dWT&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU1Wbp)|Xd=5r! +N1hi)eI#@wfA|Ar>^)1W_c|c=L3C>c0VS*Txe^o?x}!PNUwajGr*TW+dUY6G&@nZ7)X6RBhCI=toy@J9 +k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G1aNG1b1MX7VRL9L +17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01 +IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{ +0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`$A>>T+7c9tx2rI+rmmDt^st6pqa^<)IvL!Qac4*>|o +a%+!|DA9Vsm&hHC4WXN2M4aZ(WL^Hp>3BS~hw-BT0000000030|Ns900000#D{{BQuNq?vw$uLzi?1~h +lkP@ao_$9uVE}^UN!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N<*rD#rE}NPvxSnUK**8 +Le1-kltSZ7azFKgf3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN224rbxWpi{Y +TdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>R +0ssVVZ*FDSKfd5E4dt|K_z&S8_xV!Z000000RR600000007$+g7b@t4MVjY>G@u4Q3HlB(d+LiL +Jm-R=h;`?dxC37Wb8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?EWpZO>ZgeFHVQp|_a&uvB +WF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l +17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(< +bT|ZVX>MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BMZa)HHbU*@M +K|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2 +QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7kY+-X~Tnck> +LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|# +0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5 +dQuo71P5VqbZKL3Wg+&z +_dDaLdt&GbF`L!K1nFKt0{aJ2Bz={du0O&G0&#r1CLJBFZ +06hm}WprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV>wa%E#_b7^mGT?51yjj4`)KRWY6 +3!rlZ8yf+KCD*)0ZlH6>$O#o-%wz{v5BuelqlIu4J>MJmc=|AqG3>FHibBhS)2n10$(ry0$(u! +0$(x$0$(!&0$(%)0$()+0$(-;0$(==Rt=W-qYp6avD7| +R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmMzZ000000RR600000009$t~jeJj&GE~o3bsJMXYO0?^NT%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_M00>4q10|{hh +V`)ukY;0)+3S(t%bZJd#Y;0)-1#M|#a&HC+WMyM%O=)9tZwCrvWo~q7O=)9tZwLf#VQy~;2xMhrX-;8o +Zwd)xWo~q7PGN3u3j}a!V{Z%yWMyM%P-$at4GCjqZggo-X=85=1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7 +MrCbuZxIAxbaZbLUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O&C5asm1puYQ&j^#1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bG +Woc(MgX0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{ +0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM0byYQVqyVfV*zAj +0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL*0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`= +dU|1oBGG%U@MZ$v=XJ?|;InIPy66cFfOYp#JM2r7_Dur<1!iGvb7cSobaHiN0b{Bo6zH)>$g+grvznd| +(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRr~000000093000000 +003nHRzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~%Z%rO*2^brT1EPanx(a*~2XpdO)&Y})mh+6z}T +tOs7#W-{7jyY;+0$@L;dFH?7@I0Vhjl>lqRXQ4Sv!J@Q}07Pb3aM+Gq(Fu_0Ocz)^+@GUUoV7w&pu=F9 +->y0X3z7pM0$(ry0$(u!0$(x$0$(!&0$(%)0$()+0$(-;0$(==0$(@?0$(`^179&P3Iks;F$)7V>B>*k#ka7f`Us_xvd)#O5wx83S{pf*v6^ +k7ERGVQpnjv2mE%&TgwSUGkR*P7%_A5oQ+`)ww4sj&F4yv21O2|L{F3!Q^Ra!2RoXYALLmteB)ukob+O +z|T1Ad@WxE0gB8!@wV|7ZxAN)7gmbPqQftBsmPV4-~4|Qq*p8z%Xje5eay4FQlx|4kiqCuj-XBi3UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~A +UsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ= +ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdU{8Or4LWFq2&q#r@H{&I!mq*@dJpi12bb5 +xjCg#Yy%_&dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiUrS2@UrbB_UrkK{UrtT}Ur$d0 +Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_syWlopvmKJ8I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(x +qT91|EKCMyQK|uB0+zx9Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^ +Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hS +V`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7J +cma8N0eX6a8_Ntbh6wZd%@$)k7O3W>D#ILkrVv8DorX)v^q}_xH3DBjK>}YwLIPhyLjqq!L;_z$MFL+& +Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjD +RsvsFR{~#HSOQ;JSpr{LS_W)yWMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX; +0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT ++VjUz9FBwq0bHR;SY72b?vbOG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsI +Sy=*KT3QBdZ)9O}XkP(gVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-} +aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQm-W{MLar(^k|jH+P94s~ljFZW({ZtfbA~le%!q<(1p!>4 +NmyOwH13hJBEOVuo?yi;C-IS|dY*_VV1lmKM$oEfg=7gNu)i}m1OfmAZf|a7*gwADFAe3iZ1@l19{2t5 +VaJV^T`{fc?xMUvnKPbj0R(ezZDskXL77&CFH`J3B^Z(Qj)Qsu@aUKwt93!rlZ8yf+KCD*)0ZlH6>$M0-z9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#qu000000000K +000000001^f5CnQcV%pLWn&0*XlZhEWo2$;2xf0}a&%>7Ze<5%X=Zd~Wo~Aue8zcX +XXRJdMCHk1I^Yb;mDw5%F9Y9nz;zN&zQ>*g0cJAVWV`jeJjwMUMK4o#s5k`8&6NOa#Al&7Ou?eGkFXNp +Q!`6G?!Ho2{+j3`z?yGA&iMs7h0FMkOYwAlAOnB{Zgp$`19NX^0RwY%cme}uba(>;Wp8u@17&V;1p{GY +YX$>iWo!omVsi)rXmkkzY-S1qc618@W@ZcmV{#1wb8ij;b7>C)WNc*+17u?{5d&mnG71&2WMecG +1a4ttYZU`?d2SX1WprW}17l%s7y@N&83S{5Vj2Twb7LCZ)|K~awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^ +2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8 +ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(v +ZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c( +M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOE +S62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9- +2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG92 +0dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5dWMyoB +uyE6l_RFpca|tEc|RrSB7Cz4ZX^fET;C?Pugo?TPqd@iwKZAWN>+e +j~gaaD&)?_rinzLQ&_n0fy*YdyZ9}hJM#bl0000000960|Nj60006mze&;~0k`vnNG-Q(frCuPoqJv31 +6u7g@bjO{C`L6>T0$)Kv0$)Nx0$)Qz0$)T#0$)W%0$)Z(0$)c*0$)f-0$)i<0$)l>0$)o@0$)r_0$)u{ +0$)x}0$)#00$)&20$)*40$);60$)>80$)^A0$){C0$)~E0$*2G0$*5I0$*8K0$*BM25fI+VRL9-yeN^e +#%jg&<`7w((XWj*%F+LcX5LIzWg5iW~CYZWKwE66Nf4v|L%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr +(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp +%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAwSNfJhg}MqXhv3=2(9$_ISU8S>%Xz +y^d7vHg1k5H90tF4%ya@=dSL>dm);?_c?BIMu4qFRxf<)p=@qHCf(fs{C;c$=G;UE1P69ya&u{KZm4|5 +d1PnhSJy=4$znR-49k_-8VxT4-*mur5>LLzo(5@daCLNZ2eXhTbJc$66>)iENYm6sSix4*DK{%n(91s0 +BM>Eq2XA$BaCLNZvVyIk7MbQO{A@~BhGA0;y~>j;ruNrQ+G}B3D;5Te2yAa-YgB1%Wi{Fz6*(YoyWQNR +!##&F>hhbX+H~JN$bujoP8PMf9LoQXuCs~&piVX+Q;&{e*II?7Wy=ZL#ltp_Vr{><)W@$8mW*%&FhDhLgP$wKlOrtu`}L^0000000000 +6aWAK00000%))Y#k9jx)*&ki4jZw^)YeOV +o@@XB+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`SsKFP7nY4g;Flf93~qr!XIkUWl1p +1!rpm5CnQ7Zbb)XX=Zd~Wo}0Dx+H)Wo_#t<{Qxj6 +AK!qv;}MSmqFbhQEq%{{?+7>u9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pb0000000000|Nj60 +00000^h!oTk{Mq*mt#Id5<{IqiqB>((XyRTgKMj7L7^;V1p!-kERL~X*GB-yl0o(lkJ>lqHnaUkDzF#M +O+`-nfvWYb7a>H<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Ve +f}@Ca=a#qt000000000d000000002@9%YWFOg}YFoW9l|-yK9CRWr2rRnLhh&gT{LWK{$N0ssVVZ*FDS +Kfd5E4dt|K_z&S8_xmm +ZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdikkAnO21_Q|vw^7?JgkgL(n*=$IX= +eC$m)1U+k$A_W0}Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGjysaSFvJu_4WvuML_T7r2AV9eq< +{=Bc@iMp6M)!KLg{~`yek&tDD!z_VZcAXP49oSr+6K@T=%Z{*D>&)#|1_%XdZe(S6WdT-0oEfg=7gNu)i}m2V`Y*VQFl0MYn(@h5^MUvO8NyVMYp&P~kr{`@Vw( +r~naH;^JG;71#M+yX<^`ps5F){hncU$ +ijom%IzoLb(>^Yz>$s@6fa*%L>wyblbaY{3Xl-R~baTv)=eb|?NQ$9$(>OX7sslQ%bEkMULcZCvo*Z;M +ne7O2Wpib6c4c#Jbj+U}49ir`|1I+*$<$TBtm<+yI?cCS&H}f+m!nky00RR-OjQU%P((>bMN?D*Qb$5T +01E*C01J5n0Kvfn0vP}c0RR9Cfdl}-0t7iA01JTx0Ko?YIUxZH0000P0YL!^00saH5eEP{F(3;I2>=-Z +VF3{U001@!pbrWJ00961000000000 -----END RGB KIT----- diff --git a/src/cfa.rs b/src/cfa.rs index 6845432..ba645ba 100644 --- a/src/cfa.rs +++ b/src/cfa.rs @@ -25,17 +25,15 @@ use aluvm::library::LibSite; use amplify::confinement::Confined; use ifaces::rgb25::Rgb25; +use ifaces::stl::StandardTypes; use ifaces::{IssuerWrapper, LNPBP_IDENTITY}; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, VerNo}; -use rgbstd::schema::{ - FungibleType, GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema, -}; -use rgbstd::stl::StandardTypes; +use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, VerNo}; +use rgbstd::schema::{GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema}; use rgbstd::validation::Scripts; use rgbstd::{GlobalStateType, Identity, OwnedStateSchema}; use strict_types::TypeSystem; -use crate::nia::{nia_lib, FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET}; +use crate::nia::{FN_NIA_GENESIS_OFFSET, FN_NIA_TRANSFER_OFFSET, nia_lib, util_lib}; use crate::{ ERRNO_ISSUED_MISMATCH, ERRNO_NON_EQUAL_IN_OUT, GS_ISSUED_SUPPLY, GS_TERMS, OS_ASSET, TS_TRANSFER, @@ -67,7 +65,7 @@ pub fn cfa_schema() -> Schema { GS_ISSUED_SUPPLY => GlobalStateSchema::once(types.get("RGBContract.Amount")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Fungible(FungibleType::Unsigned64Bit), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.Amount")), }, valency_types: none!(), genesis: GenesisSchema { @@ -107,6 +105,7 @@ pub fn cfa_schema() -> Schema { pub fn cfa_rgb25() -> IfaceImpl { let schema = cfa_schema(); + let lib_id = nia_lib().id(); IfaceImpl { version: VerNo::V1, @@ -135,6 +134,12 @@ pub fn cfa_rgb25() -> IfaceImpl { NamedVariant::with(ERRNO_ISSUED_MISMATCH, vname!("issuedMismatch")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], + state_abi: StateAbi { + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), + }, } } @@ -151,8 +156,9 @@ impl IssuerWrapper for CollectibleFungibleAsset { fn types() -> TypeSystem { StandardTypes::with(Rgb25::NONE.stl()).type_system() } fn scripts() -> Scripts { + let util = util_lib(); let lib = nia_lib(); - Confined::from_checked(bmap! { lib.id() => lib }) + Confined::from_checked(bmap! { lib.id() => lib, util.id() => util }) } } diff --git a/src/main.rs b/src/main.rs index 7168b74..70be28a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,14 +41,14 @@ fn main() -> io::Result<()> { fn nia() -> io::Result<()> { let schema = NonInflatableAsset::schema(); let iimpl = NonInflatableAsset::issue_impl(); - let lib = NonInflatableAsset::scripts(); + let libs = NonInflatableAsset::scripts(); let types = NonInflatableAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb20::FIXED.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/NonInflatableAssets.rgb")?; @@ -61,14 +61,14 @@ fn nia() -> io::Result<()> { fn uda() -> io::Result<()> { let schema = UniqueDigitalAsset::schema(); let iimpl = UniqueDigitalAsset::issue_impl(); - let lib = UniqueDigitalAsset::scripts(); + let libs = UniqueDigitalAsset::scripts(); let types = UniqueDigitalAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb21::NONE.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/UniqueDigitalAsset.rgb")?; @@ -81,14 +81,14 @@ fn uda() -> io::Result<()> { fn cfa() -> io::Result<()> { let schema = CollectibleFungibleAsset::schema(); let iimpl = CollectibleFungibleAsset::issue_impl(); - let lib = CollectibleFungibleAsset::scripts(); + let libs = CollectibleFungibleAsset::scripts(); let types = CollectibleFungibleAsset::types(); let mut kit = Kit::default(); kit.schemata.push(schema).unwrap(); kit.ifaces.push(Rgb25::NONE.iface()).unwrap(); kit.iimpls.push(iimpl).unwrap(); - kit.scripts.extend(lib.into_values()).unwrap(); + kit.scripts.extend(libs.into_values()).unwrap(); kit.types = types; kit.save_file("schemata/CollectibleFungibleAsset.rgb")?; @@ -99,9 +99,11 @@ fn cfa() -> io::Result<()> { } fn print_lib(kit: &Kit) { - let alu_lib = kit.scripts.first().unwrap(); - eprintln!("{alu_lib}"); - alu_lib - .print_disassemble::>(stdout()) - .unwrap(); + for alu_lib in &kit.scripts { + eprintln!("------------------------------------"); + eprintln!("{alu_lib}"); + alu_lib + .print_disassemble::>(stdout()) + .unwrap(); + } } diff --git a/src/nia.rs b/src/nia.rs index b40a0e0..5b6f83d 100644 --- a/src/nia.rs +++ b/src/nia.rs @@ -22,24 +22,21 @@ //! Non-Inflatable Assets (NIA) schema implementing RGB20 fungible assets //! interface. -use aluvm::isa::opcodes::INSTR_PUTA; -use aluvm::isa::Instr; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; use bp::dbc::Method; -use ifaces::{IssuerWrapper, Rgb20, Rgb20Wrapper, LNPBP_IDENTITY}; +use ifaces::stl::{Amount, Precision, StandardTypes}; +use ifaces::{IssuerWrapper, LNPBP_IDENTITY, Rgb20, Rgb20Wrapper}; use rgbstd::containers::ValidContract; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, TxOutpoint, VerNo}; +use rgbstd::interface::{ + IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, TxOutpoint, VerNo, +}; use rgbstd::persistence::MemContract; use rgbstd::schema::{ - FungibleType, GenesisSchema, GlobalStateSchema, Occurrences, OwnedStateSchema, Schema, - TransitionSchema, + GenesisSchema, GlobalStateSchema, Occurrences, OwnedStateSchema, Schema, TransitionSchema, }; -use rgbstd::stl::StandardTypes; use rgbstd::validation::Scripts; -use rgbstd::vm::opcodes::INSTR_PCVS; -use rgbstd::vm::RgbIsa; -use rgbstd::{rgbasm, Amount, Identity, Precision}; +use rgbstd::{Identity, rgbasm}; use strict_encoding::InvalidRString; use strict_types::TypeSystem; @@ -48,46 +45,100 @@ use crate::{ OS_ASSET, TS_TRANSFER, }; -pub(crate) fn nia_lib() -> Lib { - let code = rgbasm! { - // SUBROUTINE Transfer validation - // Set errno - put a8[0],ERRNO_NON_EQUAL_IN_OUT; - // Checking that the sum of pedersen commitments in inputs is equal to the sum in outputs. - pcvs OS_ASSET; - test; - ret; +pub(crate) fn util_lib() -> Lib { + rgbasm! { + // SUBROUTINE Compute sum of inputs + // Input: a16[16] - state to compute + // Output: a64[16] - sum + // Uses: + // - a16[0]: counter, + // - a16[10]: zero constant, + // - a64[0]: extracted amounts + // - s16[4]: extracted state + // Fails: on sum overflow or invalid state (should not happen) + // St0: unmodified if not fails + put a16[10],0; // zero constant + put a64[16],0; // init sum with 0 + cn.i a16[0],a16[16]; // count state + dec a16[0]; // counter = len - 1 + test; // fail if there is no state to load + /**/ld.i s16[4],a16[16],a16[0]; // load state + extr s16[4],a64[0],a16[10]; // extract 64 bits + test; // fail if state is absent or invalid + add.uc a64[16],a64[0]; // add amount to the sum + test; // fail on sum overflow + dec a16[0]; // dec counter + jif 0x0E; // repeat for all assignments + inv st0; // reset status flag + ret; // finish + + // SUBROUTINE Compute sum of outputs + // Input: a16[16] - state to compute + // Output: a64[17] - sum + // Uses: + // - a16[0]: counter, + // - a16[10]: zero constant, + // - a64[0]: extracted amounts + // - s16[5]: extracted state + // Fails: on sum overflow or invalid state (should not happen) + // St0: unmodified if not fails + put a16[10],0; // zero constant + put a64[17],0; // init sum with 0 + cn.o a16[0],a16[16]; // count state + dec a16[0]; // counter = len - 1 + test; // fail if there is no state to load + /**/ld.o s16[5],a16[16],a16[0]; // load state + extr s16[5],a64[0],a16[10]; // extract 64 bits + test; // fail if state is absent or invalid + add.uc a64[17],a64[0]; // add amount to the sum + test; // fail on sum overflow + dec a16[0]; // dec counter + jif 0x29; // repeat for all assignments + inv st0; // reset status flag + ret; // finish + } +} +pub(crate) const FN_UTIL_SUM_INPUTS: u16 = 0; +pub(crate) const FN_UTIL_SUM_OUTPUTS: u16 = 0x22; +pub(crate) fn nia_lib() -> Lib { + let util = util_lib().id(); + const ISSUED: u16 = GS_ISSUED_SUPPLY.to_u16(); + const DISTRIBUTED: u16 = OS_ASSET.to_u16(); + rgbasm! { // SUBROUTINE Genesis validation - // Checking pedersen commitments against reported amount of issued assets present in the - // global state. - put a8[0],ERRNO_ISSUED_MISMATCH; - put a8[1],0; - put a16[0],0; - // Read global state into s16[0] - ldg GS_ISSUED_SUPPLY,a8[1],s16[0]; - // Extract 64 bits from the beginning of s16[0] into a64[1] - // NB: if the global state is invalid, we will fail here and fail the validation - extr s16[0],a64[0],a16[0]; - // verify sum of pedersen commitments for assignments against a64[0] value - pcas OS_ASSET; - test; - ret; - }; - Lib::assemble::>>(&code).expect("wrong non-inflatable asset script") + put a16[0],0; // zero constant + put a16[15],ISSUED; // global state to load + ld.g s16[3],a16[15],a16[0]; // load reported issued amount + put a16[10],0; // zero offset + extr s16[3],a64[15],a16[10]; // a64[15] <- GS_ISSUED_SUPPLY + test; // fail if state is absent or invalid + + put a16[16],DISTRIBUTED; // owned state to load + call FN_UTIL_SUM_OUTPUTS @ util; // a64[17] <- sum of OS_ASSET allocations + put a8[0],ERRNO_ISSUED_MISMATCH; // set errno to return if we fail + eq.n a64[15],a64[17]; // check if ISSUED =? sum(DISTRIBUTED) + test; // fail if not + ret; // complete + + // SUBROUTINE Transfer validation + put a16[16],DISTRIBUTED; // owned state to load + call FN_UTIL_SUM_INPUTS @ util; // a64[16] <- sum of inputs + call FN_UTIL_SUM_OUTPUTS @ util; // a64[17] <- sum of outputs + put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set errno to return if we fail + eq.n a64[16],a64[17]; // check if sum(inputs) =? sum(outputs) + test; // fail if not + ret; // complete + } } -pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 4 + 3 + 2; -pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0; +pub(crate) const FN_NIA_GENESIS_OFFSET: u16 = 0; +pub(crate) const FN_NIA_TRANSFER_OFFSET: u16 = 0x24; fn nia_schema() -> Schema { let types = StandardTypes::with(Rgb20::FIXED.stl()); let alu_lib = nia_lib(); let alu_id = alu_lib.id(); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_TRANSFER_OFFSET as usize + 4], INSTR_PCVS); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize], INSTR_PUTA); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 4], INSTR_PUTA); - assert_eq!(alu_lib.code.as_ref()[FN_NIA_GENESIS_OFFSET as usize + 8], INSTR_PUTA); Schema { ffv: zero!(), @@ -102,7 +153,7 @@ fn nia_schema() -> Schema { GS_ISSUED_SUPPLY => GlobalStateSchema::once(types.get("RGBContract.Amount")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Fungible(FungibleType::Unsigned64Bit), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.Amount")), }, valency_types: none!(), genesis: GenesisSchema { @@ -140,6 +191,7 @@ fn nia_schema() -> Schema { fn nia_rgb20() -> IfaceImpl { let schema = nia_schema(); let iface = Rgb20::FIXED; + let lib_id = nia_lib().id(); IfaceImpl { version: VerNo::V1, @@ -165,6 +217,12 @@ fn nia_rgb20() -> IfaceImpl { NamedVariant::with(ERRNO_ISSUED_MISMATCH, vname!("issuedMismatch")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("nonEqualAmounts")), ], + state_abi: StateAbi { + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), + }, } } @@ -181,8 +239,9 @@ impl IssuerWrapper for NonInflatableAsset { fn types() -> TypeSystem { StandardTypes::with(Self::FEATURES.stl()).type_system() } fn scripts() -> Scripts { + let util = util_lib(); let lib = nia_lib(); - Confined::from_checked(bmap! { lib.id() => lib }) + Confined::from_checked(bmap! { lib.id() => lib, util.id() => util }) } } @@ -210,17 +269,21 @@ impl NonInflatableAsset { mod test { use std::str::FromStr; - use bp::seals::txout::{BlindSeal, CloseMethod}; use bp::Txid; - use chrono::DateTime; + use bp::seals::txout::{BlindSeal, CloseMethod}; + use ifaces::stl::*; use rgbstd::containers::{BuilderSeal, ConsignmentExt}; use rgbstd::interface::*; - use rgbstd::invoice::Precision; - use rgbstd::stl::*; - use rgbstd::*; + use rgbstd::{disassemble, *}; use super::*; + #[test] + fn lib_check() { + let util = util_lib(); + println!("{}", disassemble(&util)); + } + #[test] fn iimpl_check() { let iface = NonInflatableAsset::FEATURES.iface(); @@ -245,7 +308,7 @@ mod test { details: None, precision: Precision::try_from(2).unwrap(), }; - let issued_supply = 999u64; + let issued_supply = Amount::from(999u64); let seal: XChain> = XChain::with( Layer1::Bitcoin, GenesisSeal::from(BlindSeal::with_blinding( @@ -256,14 +319,8 @@ mod test { 654321, )), ); - let asset_tag = AssetTag::new_deterministic( - "contract_domain", - AssignmentType::with(0), - DateTime::from_timestamp(created_at, 0).unwrap(), - 123456, - ); - let builder = ContractBuilder::deterministic( + let builder = ContractBuilder::with( Identity::default(), NonInflatableAsset::FEATURES.iface(), NonInflatableAsset::schema(), @@ -271,30 +328,20 @@ mod test { NonInflatableAsset::types(), NonInflatableAsset::scripts(), ) - .add_global_state("spec", spec) + .serialize_global_state("spec", &spec) .unwrap() - .add_global_state("terms", terms) + .serialize_global_state("terms", &terms) .unwrap() - .add_global_state("issuedSupply", Amount::from(issued_supply)) + .serialize_global_state("issuedSupply", &issued_supply) .unwrap() - .add_asset_tag("assetOwner", asset_tag) - .unwrap() - .add_fungible_state_det( - "assetOwner", - BuilderSeal::from(seal), - issued_supply, - BlindingFactor::from_str( - "a3401bcceb26201b55978ff705fecf7d8a0a03598ebeccf2a947030b91a0ff53", - ) - .unwrap(), - ) + .serialize_owned_state("assetOwner", BuilderSeal::from(seal), &issued_supply, None) .unwrap(); let contract = builder.issue_contract_det(created_at).unwrap(); assert_eq!( contract.contract_id().to_string(), - s!("rgb:pOIzGFyQ-mA!yQq2-QH8vB5!-5fAplY!-x2lW!vz-JHDbYPg") + s!("rgb:vGAyeGF9-bPAAV8T-w1V46jM-Iz7TW7K-QzZBzcf-RMuzznw") ); } } diff --git a/src/temp.rs b/src/temp.rs new file mode 100644 index 0000000..678f25c --- /dev/null +++ b/src/temp.rs @@ -0,0 +1,133 @@ +fn main() { + // 2. Prepare transition + let mut main_inputs = Vec::::new(); + let mut sum_inputs = Amount::ZERO; + let mut sum_alt = Amount::ZERO; + let mut data_inputs = vec![]; + let mut data_main = true; + let lookup_state = + if let InvoiceState::Data(NonFungible::RGB21(allocation)) = &invoice.owned_state { + Some(DataState::from(*allocation)) + } else { + None + }; + + for (output, list) in + self.contract_assignments_for(contract_id, prev_outputs.iter().copied())? + { + if output.method() == method { + main_inputs.push(output) + } else { + alt_inputs.push(output) + }; + for (opout, mut state) in list { + if output.method() == method { + main_builder = main_builder.add_input(opout, state.clone())?; + } else { + alt_builder = alt_builder.add_input(opout, state.clone())?; + } + if opout.ty != assignment_id { + let seal = output_for_assignment(contract_id, opout.ty)?; + state.update_blinding(pedersen_blinder(contract_id, assignment_id)); + if output.method() == method { + main_builder = main_builder.add_owned_state_raw(opout.ty, seal, state)?; + } else { + alt_builder = alt_builder.add_owned_state_raw(opout.ty, seal, state)?; + } + } else if let PersistedState::Amount(value, _, _) = state { + sum_inputs += value; + if output.method() != method { + sum_alt += value; + } + } else if let PersistedState::Data(value, _) = state { + if lookup_state.as_ref() == Some(&value) && output.method() != method { + data_main = false; + } + data_inputs.push(value); + } + } + } + // Add payments to beneficiary and change + match invoice.owned_state.clone() { + InvoiceState::Amount(amt) => { + // Pay beneficiary + if sum_inputs < amt { + return Err(ComposeError::InsufficientState.into()); + } + + let sum_main = sum_inputs - sum_alt; + let (paid_main, paid_alt) = + if sum_main < amt { (sum_main, amt - sum_main) } else { (amt, Amount::ZERO) }; + let blinding_beneficiary = pedersen_blinder(contract_id, assignment_id); + + if paid_main > Amount::ZERO { + main_builder = main_builder.add_fungible_state_raw( + assignment_id, + beneficiary, + paid_main, + blinding_beneficiary, + )?; + } + if paid_alt > Amount::ZERO { + alt_builder = alt_builder.add_fungible_state_raw( + assignment_id, + beneficiary, + paid_alt, + blinding_beneficiary, + )?; + } + + let blinding_change = pedersen_blinder(contract_id, assignment_id); + let change_seal = output_for_assignment(contract_id, assignment_id)?; + + // Pay change + if sum_main > paid_main { + main_builder = main_builder.add_fungible_state_raw( + assignment_id, + change_seal, + sum_main - paid_main, + blinding_change, + )?; + } + if sum_alt > paid_alt { + alt_builder = alt_builder.add_fungible_state_raw( + assignment_id, + change_seal, + sum_alt - paid_alt, + blinding_change, + )?; + } + } + InvoiceState::Data(data) => match data { + NonFungible::RGB21(allocation) => { + let lookup_state = DataState::from(allocation); + if !data_inputs.into_iter().any(|x| x == lookup_state) { + return Err(ComposeError::InsufficientState.into()); + } + + let seal = seal_blinder(contract_id, assignment_id); + if data_main { + main_builder = main_builder.add_data_raw( + assignment_id, + beneficiary, + allocation, + seal, + )?; + } else { + alt_builder = alt_builder.add_data_raw( + assignment_id, + beneficiary, + allocation, + seal, + )?; + } + } + }, + _ => { + todo!( + "only PersistedState::Amount and PersistedState::Allocation are currently \ + supported" + ) + } + } +} \ No newline at end of file diff --git a/src/uda.rs b/src/uda.rs index 91edada..24275a2 100644 --- a/src/uda.rs +++ b/src/uda.rs @@ -21,19 +21,14 @@ //! Unique digital asset (UDA) schema implementing RGB21 NFT interface. -use aluvm::isa::opcodes::{INSTR_EXTR, INSTR_PUTA}; -use aluvm::isa::Instr; use aluvm::library::{Lib, LibSite}; use amplify::confinement::Confined; -use ifaces::{IssuerWrapper, Rgb21, LNPBP_IDENTITY}; -use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, VerNo}; -use rgbstd::persistence::MemContract; +use ifaces::stl::StandardTypes; +use ifaces::{IssuerWrapper, LNPBP_IDENTITY, Rgb21}; +use rgbstd::interface::{IfaceClass, IfaceImpl, NamedField, NamedVariant, StateAbi, VerNo}; use rgbstd::schema::{GenesisSchema, GlobalStateSchema, Occurrences, Schema, TransitionSchema}; -use rgbstd::stl::StandardTypes; use rgbstd::validation::Scripts; -use rgbstd::vm::opcodes::INSTR_LDG; -use rgbstd::vm::RgbIsa; -use rgbstd::{rgbasm, Identity, OwnedStateSchema}; +use rgbstd::{Identity, OwnedStateSchema, rgbasm}; use strict_types::TypeSystem; use crate::{ @@ -41,57 +36,42 @@ use crate::{ OS_ASSET, TS_TRANSFER, }; -pub const FN_GENESIS_OFFSET: u16 = 4 + 4 + 3; -pub const FN_TRANSFER_OFFSET: u16 = 0; -pub const FN_SHARED_OFFSET: u16 = FN_GENESIS_OFFSET + 4 + 4 + 4; +pub const FN_GENESIS_OFFSET: u16 = 0x00; +pub const FN_TRANSFER_OFFSET: u16 = 0x0E; +pub const FN_SHARED_OFFSET: u16 = 0x19; fn uda_lib() -> Lib { - let code = rgbasm! { - // SUBROUTINE 2: Transfer validation - // Put 0 to a16[0] - put a16[0],0; - // Read previous state into s16[0] - ldp OS_ASSET,a16[0],s16[0]; - // jump into SUBROUTINE 3 to reuse the code - jmp FN_SHARED_OFFSET; + const TOKEN: u16 = OS_ASSET.to_u16(); + const ISSUE: u16 = GS_TOKENS.to_u16(); + rgbasm! { // SUBROUTINE 1: Genesis validation - // Set offset to read state from strings - put a16[0],0x00; - // Set which state index to read - put a8[1],0x00; - // Read global state into s16[0] - ldg GS_TOKENS,a8[1],s16[0]; + put a16[0],0; // zero constant + put a16[15],ISSUE; // global state type + ld.g s16[0],a16[15],a16[0]; // load token declaration + jmp FN_SHARED_OFFSET; // jump into SUBROUTINE 3 to reuse the code + + // SUBROUTINE 2: Transfer validation + put a16[0],0; // zero constant + put a16[16],TOKEN; // owned state type + ld.i s16[0],a16[16],a16[0]; // load spent token // SUBROUTINE 3: Shared code - // Set errno - put a8[0],ERRNO_NON_EQUAL_IN_OUT; - // Extract 128 bits from the beginning of s16[0] into a32[0] - extr s16[0],a32[0],a16[0]; - // Set which state index to read - put a16[1],0x00; - // Read owned state into s16[1] - lds OS_ASSET,a16[1],s16[1]; - // Extract 128 bits from the beginning of s16[1] into a32[1] - extr s16[1],a32[1],a16[0]; - // Check that token indexes match - eq.n a32[0],a32[1]; - // Fail if they don't - test; - - // Set errno - put a8[0],ERRNO_NON_FRACTIONAL; - // Put offset for the data into a16[2] - put a16[2],4; - // Extract 128 bits starting from the fifth byte of s16[1] into a64[0] - extr s16[1],a64[0],a16[2]; - // Check that owned fraction == 1 + extr s16[0],a32[0],a16[0]; // 32 bits from the beginning of s16[0] to a32[0] + put a16[16],TOKEN; // owned state type + ld.o s16[1],a16[16],a16[0]; // read allocation into s16[1] + extr s16[1],a32[1],a16[0]; // 32 bits from the beginning of s16[0] to a32[1] + put a8[0],ERRNO_NON_EQUAL_IN_OUT; // set failure code + eq.n a32[0],a32[1]; // check that token indexes match + test; // fail if they don't + + put a8[0],ERRNO_NON_FRACTIONAL; // set failure code + put a16[2],4; // offset for the token fractions into a16[2] + extr s16[1],a64[0],a16[2]; // 64 bit from the fifth byte of s16[1] to a64[0] put a64[1],1; - eq.n a64[0],a64[1]; - // Fail if not - test; - }; - Lib::assemble::>>(&code).expect("wrong unique digital asset script") + eq.n a64[0],a64[1]; // check that owned fraction == 1 + test; // fail if not + } } fn uda_schema() -> Schema { @@ -99,12 +79,6 @@ fn uda_schema() -> Schema { let alu_lib = uda_lib(); let alu_id = alu_lib.id(); - let code = alu_lib.code.as_ref(); - assert_eq!(code[FN_GENESIS_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_GENESIS_OFFSET as usize + 8], INSTR_LDG); - assert_eq!(code[FN_TRANSFER_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_SHARED_OFFSET as usize], INSTR_PUTA); - assert_eq!(code[FN_SHARED_OFFSET as usize + 4], INSTR_EXTR); Schema { ffv: zero!(), @@ -120,7 +94,7 @@ fn uda_schema() -> Schema { GS_ATTACH => GlobalStateSchema::once(types.get("RGB21.AttachmentType")), }, owned_types: tiny_bmap! { - OS_ASSET => OwnedStateSchema::Structured(types.get("RGBContract.Allocation")), + OS_ASSET => OwnedStateSchema::from(types.get("RGBContract.NftAllocation")), }, valency_types: none!(), genesis: GenesisSchema { @@ -158,6 +132,7 @@ fn uda_schema() -> Schema { fn uda_rgb21() -> IfaceImpl { let schema = uda_schema(); + let lib_id = uda_lib().id(); IfaceImpl { version: VerNo::V1, @@ -184,6 +159,12 @@ fn uda_rgb21() -> IfaceImpl { NamedVariant::with(ERRNO_NON_FRACTIONAL, vname!("nonFractionalToken")), NamedVariant::with(ERRNO_NON_EQUAL_IN_OUT, vname!("unknownToken")), }, + state_abi: StateAbi { + reg_input: LibSite::with(0, lib_id), + reg_output: LibSite::with(0, lib_id), + calc_output: LibSite::with(0, lib_id), + calc_change: LibSite::with(0, lib_id), + }, } } diff --git a/test/rgb20-example.rgb b/test/rgb20-example.rgb index ffc286a..7535d9a 100644 Binary files a/test/rgb20-example.rgb and b/test/rgb20-example.rgb differ diff --git a/test/rgb20-example.rgba b/test/rgb20-example.rgba index 40126fc..22fa4f6 100644 --- a/test/rgb20-example.rgba +++ b/test/rgb20-example.rgba @@ -1,100 +1,104 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:wMbFwx2l-Pm15MRg-qftkJhj-QyXWdTq-2Qgh$Jn-wCR$$fI#drama-volume-parody +Id: rgb:csg:jub9HZCV-fjQPnMU-UdXDe4L-O1Q!uPz-nueHJxi-e1gdtP4#nobel-swim-corner Version: 2 Type: contract -Contract: rgb:oeC0oRIm-8CzpSBD-qBPnW$T-qdsuMEO-Sgoet4i-PP!fAJE -Schema: rgb:sch:RDYhMTR!9gv8Y2GLv9UNBEK1hcrCmdLDFk9Qd5fnO8k#brave-dinner-banana +Contract: rgb:YIbhZL4j-!xq4XEf-TPUQZgN-3rw8Pqw-vmP3yBa-qH6olTI +Schema: rgb:sch:M$wG5!zriCs4FDuckpXmrw7085bfkl5RSpx2XaVz7Zo#water-blitz-lava Interface: RGB20Fixed -Check-SHA256: e913606632047498ba3e7da93152655cf807fc2039fffade97d1f75688a38177 +Check-SHA256: 072bd64ecb1e7ee265875b5fa49c03dc288d3432ce6c051f3ac258c901be828c -0ssI2002ZbAu%+5_6z)DVT-@j4Fp29h04O2(!&-{P^aZh38Qb#nm# -0iX|$=+dvi?V$kiHY>>R)POH2QN*q5;^`{kJ}FC#v%;(Z1JDNn01^NMR7F!%3RGotbRc1Kb7gb@2+;=t -00RI3007zt0RRX90O)o|7XSbN0iX{70RRI40mWz_3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL -0Ju9*6#|~9QwRX)c1RZh004e|etv#_etv#_etv#_etv#_etv#_etv#_etv#_etwVW(yzenp#bqVE6DKF -fG;Rf#I5V%=_=tqDNBsA!mI!Q00000000000000001{4bZb@!tY+-a^Vr*qWb8}^Mkc}T^00000GyrpR -X*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7iEjUU=H+KL7&<6n5{J!HJ@Tgs1 -mpj@U3yhwA`^&{wC3iS1tkb=;A&LP3007Yk09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L^ -+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwm0004?4*>`O00Ynm0RRC2(FXwl0RY+u0RRC2 -0iX{70RR600juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&lb}4dCJ6ul0T3qu00E#60RaF10iX{70RR60 -0juzt(u?g--(Ch+6*7N1n=+qwe6YFx|MoP&lb}4dCIA2c00000000010SZz_LNYK$X?SI11XfR6o;2qj;#=~;t^vidEtAC%IlVX)dgF*wOtts}w(E1kon`A59t%UgjW&i*H -0009FX>)URWn@!zaBysS0f>xPWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-PgaH5qb8uy20oVM#;~wy+ -U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0RaF7bY*gFa{*h6$5c2n1xg(vzLX+s=TnOlIwpu5x<(TMczEDk -Z1({G0SaMrb7gc-cWz~J0ssL4000033~6(7b!B8zb#QQOc>w?c00eVzWn%#V0RRPbWpZtE0RRC20SaMr -b7gc-cWz~J0RaF1009nZb8~fNWKC&vZDDj{XaNXxa$#Ze?--0RR613So0| -Wpqz>Ze?--0RR600S|6(Zbfl*VQfKdZ*^{Ta{&rrb8}^MPj_x*asUAcbaG*Cb7p070uE_&b9H58O=)v& -VRU0?WOH?JaBO)Xb8uy2X=Z6#(b7gc-cWz~J00000009su -2y}8`ZgXa3asU7T000624{mR6MR9duY(Z^rb#8QX000000S;+%b9H58O=)v&VRU0?00000GyrpRX*x_= -Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyvIaf7iEjUU=H+KLd000X1U)Cjo-i6E2P9x&m -nv%Qki+Oba;k67*blZ=H=TQh>UMA(m1w0!?L{VGDpk+OvDhHAKF%fNXr25$w;Zs!r000000000700000 -0000O%am^tlg}6qop{{FTg974FaQ3n`}K{nn9PGH_DcZ;0agu`_oR6wvcum54rF6FkJew+k!36?Lqfl$ -`8gF)R2-|n!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD6)+-@LI6MnH0sE -ektM3d!V}o0nEa3l8<>f1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkSbfMtWb&n35^vCNG$%?ywDnvz}K{0 -G9hl&cB^sg-3J`2zr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU}5;FWB;W7bg;sK59Oe@c3K=fV3eR -7p&1RS^QDdq`TfM1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj -3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td370(4qMgjGn~{4aFkgwNr28QlFe*-S#jFZ=4d$x=UULI21Z8+* -Y#{__VRL9B24rt+Y+-UF17U4&CIoP7b#p5OWMOk?Edyk4bS?yXWpZyY18;6+F#~jWZ!!gRXmVv`GX!RD -b#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd1a4_=WjO_7VRB`3UIuJ$WMOk?UjboZ0b*hSV`BkiWC3Mm -0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX5r -D{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4 -N<*rD#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5 -$#DguerIN224rbxWpi{YTdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn -;XgI|zJmp*01;Q@0XT>R0ssVVZ*FDSKfd5E4dt|K_z&S8_xG@u4Q3HlB(d+LiLJm-R=h;`?dxC37W -b8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z>Z)|K~awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^G -WhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~LX>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N -1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+JGz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX1!He) -Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7IXL4m>bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^z -L_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5}OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8 -R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNoaYAxoV{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!d -a%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j> -0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5dyr3U)7OiEGa`mzoq#(6;V_O`>9xR8a*>q2D50xZ(4$R31H0PIsUw_ -;fcDKIn~;D0000000000|Nj6000000TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1p!`O$dXTU -&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S>WJ$5c2n1xg(vzLX+s=TnOlIwpu5x<(TMczEDkZ1)BN1axJ1 -bQsH&ZxWNw7!I9y+{RnQn@2DI{;m7Md`c4>2IVr*pq1Y~7nX#oXeWo~q70tIbpY;0)*31nqsX-#QtY-t1vV`Xl1X-#Qt -Y-t4rZE0h2Zw3iuWn*bgX=8G42MS|lZggo)X=8G42n23nZf^+)WMyM%PGN3u3JGInZggo*VQy~=1aN6% -Zwv@zWn*bjX=85<31ek$bZJm&V{Z-xW@T-3Zx0D%Wn*bZWo>kC5DH^uZggozWo>kC5d>j$bZ-(~UdWP9 -bIo$ZB3zcMM|oyg?;CQQqXyz&yre57i5(9G0)iue^mXvL0b>G|!V30Z -)+K@7h0D=SBjVedlDqGVd368bwG2#j+mD9lQD0sr<;4X&8%0D>TgISeJ)kNFk^3Xf*%skbRRcZ* -dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiUrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp! -Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdSj|16zH)>$g+grvznd| -(VVK)`s##^Jh_COk!RL4N(lR@SaKRYGgJn%Xv1$>f_VvG%;GuzyszPjx|liD+IRr~000000093000000 -004kq#k^Az$U%@qU7>2Bz={du0O&G0&#r1CLJBFZ06hf(#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3J^aZh38Qb#nm# +00Ynm0RR9J00dM;Q&b96Wpi{OVRLh3bN~p^2LS*80{{R30NMuu000O80O)o|7XSbN0iX{700962#b_W5 +5X8znH4zBE{5>8*IQdPKz-=hD&5@z8TU{v>0RR91ON~ioV&|Hp000O80O)o|7XSbN000000000000000 +000005>9V!Np5CrVRT_)Y-K@nb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSj +Gj&r#Q#LJOQD}2HS2boWI7&q~cK`#>2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2k +TZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RRBn2LOnSSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em +^T$yfj)VaK00E#60EmoOWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-Pga7~o&<6nk0RYhl0RRC2+6Msu +0RRD@4*>xG{{R8uySX8WXpBcrXLGehYWheN*T#LgQ?}xG +{{R8uySX8WXpBcrXLGehYWheN*T#LgQ?}ewj^T{#F%_1b`zh4BqG=$aXZ#JgXGmXyziN0{|JN7e}Lp}yyGJowX;3qseNLLSu1oI{zd+?yZx +(V;8SnC`hL-TfxJSk!DhyM4=xS*w!UK;ApTd|%<8%-b!M&HBwn)KKUr-$vuP2+&Ta#sc9uF^R^6`2l7C +000000}N?%b9H58Q+04~Y)UR +Wn@!zaBysS0RRC21aoj@V*vmG00neqa&2<~009623So0|Wpqz>Ze?--0RR600S;+%b9H58O=)v&VRU0? +0SI(*VQzC~WpV%j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj614{mR6MR9duY(Z^rb#8QX +0SaMrb7gc-cWz~J009Vea$#)C1bYo~_b9HcVYK5Ib#!obbaONSb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+O +EjDs9byGuAHZ5UMXmdGNHD)b1N<}w!0WxK8oRXF1uMYI{mfwn+a00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICHZf|ZyadlyAL2Yk! +Zgg`1000014rz09b!B8tX>)C1bYo}$0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r# +Q#LJOQD}2HS2boWI7&q~cj3FaA&F>=M^0yRwMA=M^0yRwMAuYQ&j)}00000000L700000000=vly4G~&lnD!c-+QY#hXVj +|NgD}^^LKZ%!4TQO92G|Rt=W-q*e1Zg(dl;zh@Se) +i)R+C0ZKmX5VlzrFd~pb06-kDb&eFm0E`a+jONnR9-bLD;mr@36vdi;DdEn0pt}VD%))Y#k9jx)*&ki4 +jZw^)YeOKHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP; +3W%Qi%!_9htpQ3t>=3qD6)+-@LLdMy*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT7W0ssVVZ*FDS +Kfd5E4dt|K_z&S8_xVm-pkWcojB&* +wsIf|mpsv;oy@J9k$WaEUx}!s`ym)GDo%67tO|Gy=Bof+a|0~|Wq4z3Ap~e)b7&(5WN&P2VR9q`VQp|G +1aNG1b1MX7VRL9L17vS>E(CgIa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli +1!ZYxXmmIPZfS01IR#^3a%FU025fI+VRL9-0byYQVqyVfV*zAj0cB+YW@Z6rX8~wv0cmLgYH9&%YXNL* +0c~voZf*f@Zvk*{0da8wa&iH4a{+X80d;i&c6I@GcL8{K0eN`=dU`)Aa<{~<8ep?nYal +eMc%`0D|O6*W?8OW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@IL#ltp_Vr{><)W@$8mW*%&FhDh +LgP$wKlOrtu`}L^1_A_hd2nU14c`8MAg$P-$_ObTP^+;#QB8K)l1SfF*_j#U`>lTS#F>3Xo9YKQ;Tlg9WGn5m)2^IEVxS00eGt +Ze`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B%Kwk9vx)$qPBtM^kB(v2T7{%#%L)!i +!&yFls%&4!NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~ +Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p& +DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByA +Wite3Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ce +WpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC; +NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;J +Spr{LS_*SetH31dQXVPk7$bW(iOEBma9j3W?1hVa-5?E;$Xa_ +D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~} +Y-IohWMyM%0R>}aZggn^1#M|;Y-s}tWMyM%O=)awX#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f? +3S(t%bZJd#V{&f@1a4t&ZwUxwWn*bhVQy~<31ek$bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC3S(t%bZJIqZFFxD1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646 +q$?$f9S;Qpf+K+Rb@1)9wcJs8k=}EVt)knrbu3H13mOG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOE S62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-} -aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQh>TceV>4 -NmyOwH13hJJ{u?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN2 -1_K0id2nSMuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!V}qb9G{Ld2nSf*z$T8ClZi8YCe|m_*?{l -v>_T7tkE!8{87}TyWT7ZV`yP=b7gcd*z$T8ClZi8YCe|m_*?{lv>_T7tkE!8{87}TyWT9nkIU)BIae{J -w9R4r0N>}O)+shqImKG);D@8R3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000 -KL7v#00000#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3JH<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr -4oJgUK7OifU&jRjKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEVo@@XB+#WAdR)2C|*D$SwhJOvD -$-0{Gfin@`^Yz>$s@6fa*%L>wyFU00eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B -+#WAdR)2C|*D$SwhJOvD$-0{Gfin@`G@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE0000004D$d000000QnaP1l_I#dHB_@bgMhk -0_N&La@nc5HwP6O+keCip#vHLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^ -0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdi$wZavD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szj -cmV+b0|P-!RR}^*L`g?QQ&a;|M?xV03jhEB(4Y?i2MYiJ01F5J01E*E0La=00XZ-L(V!0j2Lu2B0RR91 -0000 +aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6 +avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV(a000000RI30000000DxY_yi*d$L6AgUp=zPPiV5QY +=rTIbu4*Gf3Ms7sJp}>8I(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=~%BY^aE@a?p<+);Uv-gA(x +qT91|EKCMyQK|uB0+zx9Gy-2iK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^ +Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS^;5U0b*hS +V`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7J +cma8N0eX6fj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwq0bHR;SY72b?vbVm-pkWcojB&*wsIf|mjwYFuyu|U!T^j90F36+)E=H0H{s0> +nH0sEektM3d!W0q4c`8MAg$P-$_ObTP^+;#QB8KK9=zKTm*o$AsQE~(J)#3QPiZn-Yf@WXkl`5 +Wpppt@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Ymb5%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX) +szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u +;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAw1DQOuZYLozrIk|g)X!BI_ij=PWr0{IsR1l_I# +dHB_@bgMhk0_N&La@nc5HwP6O+keCip}&vI>BTu$F{ZT5Vfz5z=cU#uHd8spTI%43qqz#IM%Vnl;~wy+ +U0;_w+8Yauo__nw#aAVFI4rEwy|f{U0R{vHbZKL2WpZ10ERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-n +fvN;j>;{fO~I?t|ZBSH!(tpGg-WMy<=X>4;vw}2&v0mUY=J6lL$MhcKn +;XgI|zJmp*01;Q@0XT>WaB^j1X>)0BZe0V!7mcZoem^?%L*to!bRZoO^d~aUzM`;8jz95VBG^B^;4cm3 +v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1Yybe<9xqZ>e{x^fFs+1!e+{I`x|;BTGZEk9?>;P +#rE}NPvxSnUK**8Le1-kltSZ7azFKgf3Y*(ir|N+G?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfdm2o +1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67V9xqZ>e{x^fFs+1!e+{I`x|;BT +GZEk9?>;Wd>h=Ype%b?2720000000000CjbBd00000`4m;t2@#H=ITLm*{QiV2NfFIf5Z%-0~!Hg +VF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE +0e5!+cz6MMc>#KQ`>9xR8a*>q2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RjL613^qx2trUqNk>IfR0C2+ +LPP)yQ2+o7g8~4+7l0%I{{g`g1UWRI0U&^20VDzc0}cQm2MbXE01Jx%0KgxBBmw^c!50KMHJ||?h+qLE +0sjLj03Qbm0000000000000000|P-!RR}^*L`g?QQ&a;|M?yIO3jqKC3wZ(n!Oa5;Q2+orGp_*)fdl{r +A^-pj00saVd2s;;3xNax1poj51tI_d3jhEB8G&&D2L}KE0NMwj4*>ydA4{xPaMLIG2}mO}YRn!tY=W1a +3N8XGjvVf;x5wxJ000 -----END RGB CONSIGNMENT----- diff --git a/test/rgb21-example.rgb b/test/rgb21-example.rgb index a082ec7..d011d24 100644 Binary files a/test/rgb21-example.rgb and b/test/rgb21-example.rgb differ diff --git a/test/rgb21-example.rgba b/test/rgb21-example.rgba index 7ed5ed9..b8db7ff 100644 --- a/test/rgb21-example.rgba +++ b/test/rgb21-example.rgba @@ -1,141 +1,143 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:v02lwmVK-wAvaPE7-8CTK2Jx-hRbmsMI-JbpO3Ha-4HqCbOU#boris-diamond-arizona +Id: rgb:csg:sfuavyeO-naK4F90-GknJIIZ-CoXCWti-6jtQGkN-lzd!6s8#logic-critic-meteor Version: 2 Type: contract -Contract: rgb:wNVRTazN-!u26vjK-pTrjlpu-!ufzpEo-sxpbdde-p2qPXYU -Schema: rgb:sch:$$bAmeZTo5kK3RJHgeUr06qG86vQ0ozgtug7Yi9zdZo#korea-trumpet-dexter +Contract: rgb:Y!o2vnih-ssdFcQA-Iac1KMU-y1lYA5T-$cufjXg-0bnb!xE +Schema: rgb:sch:K!oMAhTrSfRw0zYYgXZahEUTxVSgribR1eW!1oVGgho#april-vitamin-horse Interface: RGB21Unique -Check-SHA256: a7bb892e37257fd73e04e585ba5888e248844bc88c7451efc2cfa9a0ab83c731 +Check-SHA256: 2e30c81252d22f1e026dad9c3ded0f7077a0a3ea2535f1a16513025f14c8970b -0ssI20095?z?tS#qnQfb5=VjME7Pim^Q+L(jNrEDJ7O<$b(#QYlG$be0000D0CRI`I$>^aZh38Qb#nm# -000Bf2LS*O00dM;Q&b34Wpi{Ob!1@x0MQ2l04e|g009JaWq5P|0B#dH)QMQDO=WdHyI000000004?4*~%I0{{WVXdny_#L7H15eUEhJsv_h -`Aw9-Z78jM<00IC200961000000H^@frhA~8rEbuv&C{5;rT_o{00000 -00000000005>;+#adl-xX=iD4VQfKjb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8Sr -S1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cK`&?2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t -0MQ2kTZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RR9t2mt>g2dR;eWrf2mfn0W-6EYpxT%Hqe -4Z6#YuvhEM?N$K*05}K$ai+oNNQ%6?MXfTR|H~O&PAZ+M?%c4|uH0003t7IAgS -MAMD6vu_L?ALP&UnspJQz9j^e@~P-Jgw&-A0003HCjbBepbr560RRD@4*>uH0003t7IAgSMAMD6vu_L? -ALP&UnspJQz9j^e@~P-Jgw&+~00000000000099DQb$5EF;#A9adl+`R!>~x^Kusb3F_D>3|%=0P4(J< -mWA;RHt3oehQzyHa;Ae}JlIJdsHP7x0|nOGbO+`KzPzGJ@=Wr^p_$?W%(i(SQXe7bO>GV2&KejyU3PXh -RtzED9#IG2D9~Wef|tz=zf!5xgaTwtA7>rorb(ioCoP%2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K*0SaMrb7gc-cWz~J1sHJc%j{$al(PgiY{guV -o`3y4;ZoR4bMl2=SA)CVSpWe6000044`Fn4VPj}*Wo~p-d2nTO0RRC21aoj@V*vmG00neqa&2<~00967 -bZ={AZgT+u0RRCCVRLh3bWe9~WpV)k|Nj635N2{=V{~b6Zclb)a%OCAcNJ-Fc42I3WI=RvVPj}*Wo~p- -d2nS6b#7~JZ+C7~Z);_40SI(*VQzC~Wpe)j0003BVRLh3bWe9~WpV)k|Nj9BVRLh3bWe9~WpV)k|Nj64 -5N2{=V{~b6Zclb)a%OCAcMfiEZbfl*VQf}mY;|RG5^is9Msi_ebZKvHVQf@yYh`W>b#7~JZ+C7~Z);_4 -0SaMrb7gc-cWz~J009Vea$#K5Ib#!obbaNnOcw=Q{WOE=f6=`mEVQgt+L3DIsV`yzK5Ib#!obbaN7JZ*E3%VPkY@Z*F01RBvl#Za86dbY*RDbRcwZAartJZgXa3av)(KW^!R; -bZKvHAa7EndVcYnF`$!M}g%l)2fE^tI*Pn;I`;HVlQ)bn$4(`hi=8$#uk0YMSQ+x1@W&i*H000Eg2Ly9)Wn%yU007Yk1$1R{ZF2ws001@!26S(0Wo~l-0000u2oGU&bYWv?ZDnqBRC#b^ -a{vGU00E#63So0|Wpqz>Ze?-+000000T3q$baG*Cb7p070000000ICEb#7~JZ+C7~Z);_4000003KDK_ -ZboupV{~b6ZeeUxZ);_400000GyrpRX*x_=Q!#aTEoW*(Ic```MlDZcWpq_lYga8cax-;PLsK>_VNqyv -Iaf7iEjUU=H+KL!000X1U)Cjo-i6E2P9x&mnv%Qki+Oba;k67*blZ=H=TQh>UMA(m1w0!?L{VGDpk+Ov -DhHAKF%fNXr25$w;Zs!r0000000007000000000Es;(M&rv!7X$EJo+{V&1)03O%U?m&Rq5}b^8af15> -0t9q!(i%G%h4}Sf8vn;89aSG|t4s0*&BRFk%a^yrND0jb0t9t*cyH)xK+Rkw`Mu(V|7oQW -GN(Z+AyvH&RuaL#D^138|7M^`NNc{jXEg#>2x#JO!0is)`buE3*f$s=77;x>&>|_U& -vjjD4#axh{fBik-QrJv$@`YYkgS*{X1p;LORzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~&D$=A9F8 -Na0y;!RP5vuL@+rc3&yv5+tiFEA;1JTz44Dly4G~&lnD!c-+QY#hXVj|NgD}^^LKZ%!4TQO92G|Rt=W- -q4 -NmyOwH13hJJ{1p&;$a*~gEI0M-qU9F8#%$RFKGB^*CB=^U`QB8J^ -yO1H{K10Q-T=FR=Q=>S+XYD&KHujTH+>EdJQM&>E4z*R)+SA#T-nt8wey2OO)v!`LRkztQP;3W%Qi%!_9htpQ3t>=3qD -6)+-@LLdMu-?&gcOB(fowFxn4+u4A192x5Uog%HF!~38*kwLu#0ssVVZ*FDSKfd5E4dt|K_z&S8_x@L|V|mt8Tf>F%PuK$$b1Yykvw -Z*66;aMO?W(hOSV*asELF;pE|QoG*E(^8!{=H0e(APJW|(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O -0A6zgEd*tFV{9P=Xkl|`BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KU -bZByAWite3Z*_7s1ZHV=Wi^aZh38Qb#nm# +00Ynm0RR9H00dM;Q&b34Wpi{Ob!1@x0MQ2l001fg00035bY*yS003?iI@F0+=j{p&q1c_BR29nIb=NkN +U-L_MbF*BsN*Fc>0RR9O00IC2000000R?GoVP|Ck00IC2000000iX{700962#b_W55X8znH4zBE{5>8* +IQdPKz-=hD&5@z8TU{v>0RR91w2>Wk#54yq000aC0ssI20RR9100000000000000000000000005>;+# +adl-xX=iD4VQfKjb7gdpjUQ$J0000q0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJO +QD}2HS2boWI7&q~cK`&?2LRXnzT+P7s9j%|JK7ryjGlh`%f(kEcQ`Dp)4jAIiU9!t0MQ2kTZ_k3I5GuF +9U{JzB5UVUixWB~h#a~`69Ra6;9P9?0RR9t2mt>g2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K* +05}K$ai+oNNQ%6?MXfTR|H~O&PAZ+M?%c4|uH00048S81n%*avczgwdUa>d +1uH00048S81n%*avczgwdUa>d1~x^Kusb3F_D>3|%=0P4(J>rorb( +ioCoP%2dR;eWrf2m +fn0W-6EYpxT%Hqe4Z6#YuvhEM?N$K*0SaMrb7gc-cWz~J0d5B_y9`%SI(56q&jnHJ)?-#PUJJfLnQTxz +s*%e!3IG5B0RR911P@_!bYWv?ZDnqBRC#b^a{&MW00eVzWn%#V0RRPbWpZtE0RRC226S(0Wo~l;00962 +3So0|Wpqz>Ze?--0RR600}y6%VPkY@Z*EU^WpZY0Z+8`GZgyd8X=FikbYWv?ZDnqBRC#b^40Ud6Zf|#P +RBvl#ZUG2%a$#Ze?--0RR613So0|Wpqz>Ze?--0RR601Q2F&VPkY@Z*EU^ +WpZY0Z+8xEZ*E0#bzy8)VQh6}a}sWEZboupV{~b6ZeeUxZ);_440Ud6Zf|#PRBvl#ZUG8mb8}^MPj_x* +asUAcbaG*Cb7p071rTO(VPkY@Z*EU^WpZY0Z+9|uXk{Q_ZEtmMbRchLAarkQWo{s5a$#e1X>V?GAZczO +Z*_EVb#!weWq4y{Wn^<8F%@ZUc42I3WI=RvVPj}*Wo~p-d2nSoVRUq1V`yz%ZMZ*(AGY;13LWn>^`Z*m}XXk{RDZ);_44sLI5MR9duY*t}xb!Br`bZBKDb9HSXZ)PBKaAj_E +AarkQWo{s5a$#e1X>V?GAY^Z4b8aVeAZ2lNVQe6DZyV?GAZczO +Z*_EVb#!wQZf|Zza$#e1X>V>}Y*cS+Wo|fObaZ8HaC9JaZyb#7~JZ+C7~Z);_49${>3Z)0I}X>V>IZ)PBMZfkCDcWxkbZ);_4AW1|t +0CRI`I!szqF?Dz?XKF+_Zdg!8El*=*bX8SrS1mSjGj&r#Q#LJOQD}2HS2boWI7&q~cL6Kv3<4DEN%U~j +HW-0+T7*Rt#Z;iKCehX9zSf0Cf*P6rlHw=mNo(T5AB$x3!PhUjw#dX9_`EZ-Lr^U9)6#( +b7gc-cWz~J00000009su2y}8`ZgXa3asU7T0006240Ud6Zf|#PRBvl#ZU6uP016UrZ*E3%VPkY@Z*F01 +RBvl#ZU6uP05kw|b7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^a` +S81n%*avczgwdUa>d1czgwdUa>d1A7(M}`c+nSQQ?~8eK|KYU^Omy3ihUZZTUtT8V#RWVYMMP0s#-L?ApehHE +`!Nx1aisd$7U5G>00000000002LJ#7000004yvvid8Y((tjDH?QT;E${{SA>((XWj*%F+LcX5LI1_A_h +d2nU14c`8MAg$P-$_ObTP^+;#QB8K2x#JO!0is)` +buE3*f$s=74$>Ms8HM=uUmE|%CLL8DYpYB02F=7s{mYlP#7GIv1_A_iba-#*YCz3gCHcMLg#T%!5i+Mi +DNX7aiufEJ#8I!OHhFfAY7fVtxlj{%}vrgbfS&w=jyr3U)7OiEGa`mzoq#(6;V_f>*k#ka7f`< +Z^7s3P_GJP!FFFM=3qD6)+-@LI6MnH0sEektM3d!V}o0nEa3 +l8<>f1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkRjtfL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqbp-*X +&-*fU69;}zAIV^Hl7d8_9-)kE+Vz;)3s*I)2VU1ITdJ&3iT??W6$?l#{@A?G8j--)v|TbGZq;_HaqHa& +9IL;>*e1Zg(dl;zh@Se)i)R+C0ZKmX5VlzrFd~pbAOI`hxKKSy8ufv-2{CEg*?@H%8S4F=BCVmr`=C0J +LA?Y500eGtZe`d%zThtn<+N=058)p7{qSMOjh9_9t?BNfyg->Vo@@aGb8l^B^h!oTk{Mq*mt#Id5<{Iq +iqB>((XyRTgKMj7L7^;VFWB;W7bg;sK59Oe@c3K=fV3eR7p&1RS^QDdq`TfM1OfmAZf|a7*gwADFAe3i +Z1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDp`<(~tJj3|i&b2NlXOR2^DUyWY#wQk^*F-L`Td370(4 +qMgjGn~{4aFkgwNr28QlFe*-S#jFZ=4d$x=UULI21Z8+*Y#{__VRL9B24rt+Y+-UF17U4&CIoP7b#p5O +WMOk?Edyk4bS?yXWpZyY18;6+F#~jWZ!!gRXmVv`GX!RDb#gQWW@&b1H3M^Lcs2!dWp-t5Hw9&BXJ~Xd +1a4_=WjO_7VRB`3UIuJ$WMOk?UjboZ0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&q +Z*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX5rD{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^U +N!R2B0b{Bo6zH)>$g+grvznd|(VVK)`s##^Jh_COk!RL4N<*rD#rE}NPvxSnUK**8Le1-kltSZ7azFKg +f3Y*(iUtA%ba`-Pu?^n-fFP~dpvnj-AyBKaJW)+{-ce}5$#DguerIN224rbxWpi{YTdJ&3iT??W6$?l# +{@A?G8j--)v|TbGZq;_HaqHbhw}2&v0mUY=J6lL$MhcKn;XgI|zJmp*01;Q@0XT>R0ssVVZ*FDSKfd5E +4dt|K_z&S8_xG@u4Q3HlB(d+LiLJm-R=h;`?dxC37Wb8ul}WgrA)cw=lK261(7bY*iQ1ZZJ%Xd?z> +Z)|K~awG?EWpZO>ZgeFHVQp|_a&uvBWF`t>aBp*Ta&K^GWhV$?a$#d@Wpqp^2x4+!V{2t}QYi>wb97~L +X>)5T1aNG1b1Ma7Z*6U1ECp?8Zgq1l17vS>E(LRJVRL9N1bSt1Z!iOIZe=k8ba!tu1$1a~Wo0u2W^Z+J +Gz4a8c4ajKb7^=s1#@L~Wo|bGWoc(MgX1!He)Z*DpXb7gI5LvL(vZaV~QWpi^p1!Zw{VQf7I +XL4m>bY*fr2yt~~b98BMZa)HHbU*@MK|umvLP7#xLqh^zL_`8#MMVN%Mn(c(M@Ir*NJs)-Nl5} +OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3QNo +aYAxoV{2t}Oj`+JVPk7kY+-X~Tnck>LULhaYh`p&T?J!da%FU025fI+VRL9-2x4JlYjkO2YhVFkVF6-d 0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+ -cz6MMc>#KQKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEtcHU8F!O3w2qJC#)UKHujTH+>EdJQM&>E4z*R)+SA#T-nt8weyMYn(@h5^MU -vO8NyVMYp&P~kr{`@Vw(r~naH;kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&lzkBNr;@ghiU?gEXK9KMDE{F?;HZBRuDV -qlk6qmbe371#@s=V`U%&Wq4z3AqH`EZ**mIA_Qn*b7&(5WN&P2VR9q~aAk61Wo~pO31Mw;WpZ<2Ze%73 -VQ_DAbaHQSXk{k|Vsc?)Yh`pyCN6MEdyk4 -bS?#RY+-X~F9dpJa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIP -ZfS01IR#^HY;SHl33Fv_X+v*pZ*DsTY-MwEJOyQObzy8h2WN6+VRU73J_vDjWpi|CZ*D&VVRS$OUqL|v +cz6MMc>#KQ31dQXVPk7$bWD2$aA|O5df_VvG%;GuzyszPjx|liD+IRo}000000096000000003Ke +ERL~X*GB-yl0o(lkJ>lqHnaUkDzF#MO+`-nfvN=oUS7zOPjk(3#3Edlt4DceSnnHhoTCQfV7#O&C5asm +TZ_k3I5GuF9U{JzB5UVUixWB~h#a~`69Ra6;9P9?1_A_hWq5QL%am^tlg}6qop{{FTg974FaQ3n`}K{n +n9PGH_DcZ;ZDnL>Vc>_TG?p`mnXkl(k`ZV+LVYXKJ}#&0xTv^*>Pochfn1?USY72b?vbnl1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eX6ANi>WNCJ3b7^91WdH4q11PWtiZggo)X>4q11qE$sV{&f>31nqsX-#Qka&HF;V`Xl1 +X-#Qka&HI(Zeeb32?%6mV`)xdZf^<+V`Xl1X-;8oZwmx)X=85;2xMhrX;5inZw(1!Wo~q7P-$at4h3dq +ZFFxB31nqsX+~vjbZ-y}V`Xl1X+~vjbZ-#^VRUqF5?)@&l23EZa>OEBma9j3W?1hVa-5?E;$Xa_DA7(M}`c+nSQQ?~8eK|KYU^Omy3i +hUZaVUMA(m1w0!?L{VGDpk+OvDhHAKF%fNXr25$w;Zs!uJ_LGYa&IsLZ*FBV19W$9G6i&Ka%E*R1ZHn_ +ax?^HX?A5b19NG3HU)EKc4cli1!ZYxXmmIPZfS01IRalnK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+ +NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#H +SOQ;JSpr{LS^;5U0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHy +b8`W7bOCjB0d{r)cXt7Jcma8N0eX64sv{KWu}8?Vgx|B8o)FQTs@3}HgpNG9gq@LR)-*~8`>9xR8a*>q +2D50xZ(4$R31H0PIsUw_;fcDKIn~;D0RR9100000{{R3000000WdT-0V>B>*k#k +a7f`Us_xvd)#O5wx83S{pf*v6^k7ERGVQpnjv2mE%&TgwSUGkR*P7%_A5oQ+`)ww4sj&F4yv21O3@X&qCv%6BHgWizA +=u(cLP6P}D7lKnk9D*JpH;-cg0exjom+h7od^|i!6IVh}C$_-w2%^n!R2Osl8!b($Bn1Hu(i%G%h4}Sf +8vn;89aSG|t4s0*&BRFk%a^yrND0k=Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFE +d2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|v UqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rUb8$j)VPk7$bWB?bVqs%zQ*2>#Xj}?&aYAxo -V{2t}Qe6dOVRB`3UIuJ$WMOk?UkGAhV{3G2V{2dmVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9& -0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdI@7fa$#d@Wpqq?1aN6^Wqb)^ -LULhaYh`p&eFb!BY-DAAPO)*A+RkpPGhOnR2u=~wf)QpH7uC5ZDvob;93!rlZ8yf+KCD*)0ZlH6>$O%5miMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB(-~saSFvJu_4WvuML_ -T7r2AV9eq<{=Bc@iMp6M)!KLf0000000030{{R3000016cPx&vU)M(f$C5$z50Bb6=QgwbMk=ru&P_#5 -`hlti0bX9nl23EZa>OEBma9j3W?1hVa-5?E;$Xa_D^Yz>$s@6fa*%L>w#RMNmyOwH13hJ(~}Y-IohWMyM%0R>}aZggn^1#M|;Y-s}tWMyM%O=)aw -X#@&mWo~q7O=)awX$1vsX=8G41_@+kV`)ukV{&f?3S(t%bZJd#V{&f@1a4t&ZwUxwWn*bhVQy~<31ek$ -bZJguZf^?&aA{+23`!Wo>kC4+&&tV`)ZZZFFxC3S(t%bZJIqZFFxD -1YvY^ZxUW!$dXTU&2q#dT$Zaxd1hGe8*-eZ2I646q$?$f9S;Qpf+K+Rb@1)9wcJs8k=}EVt)knrbu3H< -Xi=&GV*-}K3ie;tC4t_B%h66F;@g^%yYGv6bpPSC3`}&}kA~+_UtT8V#RWVYMMP0s#-L?ApehHE`!Nx1 -aisd$7U5G>13mOG^S@OiTh_O-%w{PEG<} -Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp -0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQW2z$* -=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV(a -000000RI30000000A&GIL*z(|^Y;`q0eROY=qU2QOZ-91J16!9Pue$g9R&fU&-*fU69;}zAIV^Hl7d8_ -9-)kE+Vz;)3s*I)2VU21bj+U}49ir`|1I+*$<$TBtm<+yI?cCS&H}f+m!nk#0ssVVZ*FDSKfd5E4dt|K -_z&S8_xUs_xvd)#O5wx83S{pf*v6^ -k7ERGVQpnjv2mE%&TgwSUGkR*P7%_A5oQ+`)ww4sj&F4yv21O3@X&qCv%6BHgWizA=u(cLP6P}D7lKnk -9D*JpH;-cg0exjom+h7od^|i!6IVh}C$_-w2%^n!R2Osl8!b($Bn1Hu(i%G%h4}Sf8vn;89aSG|t4s0* -&BRFk%a^yrND0k=Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFEd2`8+UDn~O1og|) -LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|vUqV6xUqeFzUqnO# -UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~A -UsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ= -ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdZF5UYt#1Jp*e72xXvv~_Ej0eK<_)d?1f|r -B(T3THv|Fz1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67ysX>`mg)dX=J|!5D -^^Svj0r2RU9jkooO*jNSYm*|P)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-lpNWLQ%D(Hkon&*Qw -pawq)`VKLB>Wd>h=Ype%b?2720RR91000006aWAK00000qk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=a -O9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC2Yyc<$zXDlf<&Mmp^R+W^_bcV -S2e5$Ue^EwuyE6l_R}O)+shqImKG);D@8R -3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000#5#SRxw8U!bIFfg -*5RxK^~=*jK)}Ad3JH<(%oY0 -=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7OifU&jRjKPz&##IG7- -47St%2#c>Z5R>jkTb_MKDq#SEf1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZ -skt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoe{J!HJ@Tgs1mpj@U3yhwA`^&{w -C3iS1tkb=;A&LP81O{|zV{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW1a4t%Wq@AAyi*d$ -L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2HT%AU1*iZKSL6XW -hzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12ehp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=xPaY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT)c9`>#Kd;Rz-U=a -O9W+B1a@zAbRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb@I9-fEJ#8I!OHhFfAY7fVtxlj{%}v -rgbfS&w=jG@u4Q3HlB(d+LiLJm-R=h;`?dxBvhE -0000004D$d000000QVkcj;BmNHBOwq)*#;@L|V|mt8Tf>F%PuK$$b1YykvwZ*66~e*~A-{pMOIF3{$ogLC-FQ5ynWwEO**XV}S~GTU1D7YGF1 -t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{) -YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7*sX>`mg)dX=J|!5D^^Svj0r2RU -9jkooO*jNSYm*`c0f1h`yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJ^QIxavD7|R0gwX!*5!Gc?n?5 -;yM1jui=Thm^szjcme++2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$Z|1!-<%Wq4%)Rzu`SjPv&t -Gy!?nCFm&fz)So=%sVIc1y9;Ha~%eBX=7_;ax34sP(4c;^?|hsF=^Y`fOQ-h>iwM}t)avFpgNI3y##Jy -ZDpa_d~4J8+@U#eVYtpMO7>M5!a(mkyX=Kz2_&$;GdBlhWprU_Y;#4ofF*_j#U`>lTS#F>3Xo9YKQ;Tl -g9WGn5m)2^IEV*ua%FaDWq0=;WsavzKQ&IAzSbb$9Yi2iGqm?r&xt3_=N0p0RRjfXWn^h#;D@L*mNSQ$ -uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N3t@D0VPj}*Wo~qH%#Y`}U-d|ep?1?aIu@z}I<9l4cr`-4*|VM; -bUc~u2y$g}WpZ|9b8d9ZpB)U#RL=h`^CZdCRl%(4axyy2w_MHwx4oC6RRI7413^qx2trUqNk>IfR0C2+ -LO=iu0RRBRpbr277XS+Z000XJ0077~2muQK0022401F8K0L7pW5ji0N839273jhKD3lReVIWZs$3k3if -0bv0R0000A1ONd50000000000000 +Us6&6UsF>8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp! +Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdZF5UYt#1Jp*e72xXvv~ +_Ej0eK<_)d?1f|rB(T3THv|Fz1a5C`W!OKy;4cm3v~2hf;U4$>@L|V|mt8Tf>F%PuK$$b1YykvwZ*67y +sX>`mg)dX=J|!5D^^Svj0r2RU9jkooO*jNSYm*|P)IR&V(Htw%E&VW2%ISUNIBhq^+CHpT0s&1fiR-lp +NWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?2720RR91000006aWAK00000qk=;7%h%D+p%U7S;b1RT +)c9`>#Kd;Rz-U=aO9W+B1pz8ss;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)oZ#`!aPC2Yyc<$zXDl +f<&Mmp^R+W^_bcVS2e5$Ue^EwuyE6l_R}O +)+shqImKG);D@8R3aUm3Jkg?^%&nV|dnPbniKwLeAs8?!PIJYq3V03Xs{mee0000000000KL7v#00000 +#5#SRxw8U!bIFfg*5RxK^~=*jK)}Ad3JH<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7ws4kFK+d0H97bAybczVb@xPq-Dzr4oJgUK7Oif +U&jRjKPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEf1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b +)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUoe{J!HJ@Tgs1 +mpj@U3yhwA`^&{wC3iS1tkb=;A&LP81O{|zV{2t{TX!suv0v9m0LPL+_79KRH|I99{YEOV7tT#ZPWpkW +1a4t%Wq@AAyi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJqKiEbYW?1b49m+C58dTCbBzQNMS|_kWk@2 +HT%AU1*iZKSL6XWhzW3VWn*b`X>V>_1H>1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0g?Kfd5E4dt|K +_z&S8_xxYy=<4kft^@4w~Gv12ehp04`Gl!Y4#EOy;XgWfDE7LwMr|Y<=xPaY62ZUYgq2{$1_lBIba-iGqk=;7%h%D+p%U7S;b1RT +)c9`>#Kd;Rz-U=aO9W+B1a@zAbRpwDL&d6G@+l`%qd385?K@+fP1(-9sgE>i7rMzqb@I9-fEJ#8I!OHh +FfAY7fVtxlj{%}vrgbfS&w=jG@u4Q3HlB(d+LiL +Jm-R=h;`?dxBvhE0000004D$d000000QVkcj;BmNHBOwq)*#;@L|V|mt8Tf>F%PuK$$b1YykvwZ*66~e*~A-{pMOIF3{$ogLC-FQ5ynWwEO** +XV}S~GTU1D7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-Lu +XaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7*sX>`mg)dX= +J|!5D^^Svj0r2RU9jkooO*jNSYm*`c0f1h`yi*d$L6AgUp=zPPiV5QY=rTIbu4*Gf3Ms7sJ^QIxavD7| +R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcme++2dR;eWrf2mfn0W-6EYpxT%Hqe4Z6#YuvhEM?N$Z|1!-<% +Wq4%)Rzu`SjPv&tGy!?nCFm&fz)So=%sVIc1y9;Ha~%eBX=7_;ax34sP(4c;^?|hsF=^Y`fOQ-h>iwM} +t)avFpgNI3y##JyZDpa_d~4J8+@U#eVYtpMO7>M5!a(mkyX=Kz2_&$;GdBlhWprU_Y;#4ofF*_j#U`>l +TS#F>3Xo9YKQ;Tlg9WGn5m)2^IEV*ua%FaDWq0=;WsavzKQ&IAzSbb$9Yi2iGqm?r&xt3_=N0p0RRjfX +Wn^h#;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N3t@D0VPj}*Wo~qH%#Y`}U-d|ep?1?aIu@z} +I<9l4cr`-4*|VM;bUc~u2y$g}WpZ|9b8d9ZpB)U#RL=h`^CZdCRl%(4axyy2w_MHwx4oC6RRI7413^qx +2trUqNk>IfR0C2+LO}ov0RR9Cc>(~z!2<#r01E*C01JTx0KozTIUoQFfdl}-2Lw4G0Sf>C02u*60Sf>I +01FWZ068%r3kwMV83ADd5dZ)HHVB{(3IqTF00000000000000 -----END RGB CONSIGNMENT----- diff --git a/test/rgb25-example.rgb b/test/rgb25-example.rgb index c43ca7b..7a04ae0 100644 Binary files a/test/rgb25-example.rgb and b/test/rgb25-example.rgb differ diff --git a/test/rgb25-example.rgba b/test/rgb25-example.rgba index 64669ff..8f4bda3 100644 --- a/test/rgb25-example.rgba +++ b/test/rgb25-example.rgba @@ -1,98 +1,102 @@ -----BEGIN RGB CONSIGNMENT----- -Id: rgb:csg:Q$TnuoI0-j6aIixI-C93gAXT-wRqXQPV-N$jbYo5-kwjxBR8#mental-violin-banana +Id: rgb:csg:TQsYXUFG-iaS1RKt-gwoqPo$-FLc3P6j-MGiZa4p-P5T2sNY#indigo-jazz-ravioli Version: 2 Type: contract -Contract: rgb:8B4SxOzc-TJPdXbc-kCQwq$E-mDGbAET-uBJv4cw-eTfBu5U -Schema: rgb:sch:cJjPZfUpkOqIWhpCTqYJtFYzLfz$AB3JNxIEOJZYn28#circus-version-silence +Contract: rgb:ZtLiXsjN-Bux!tC9-GtYFN7g-qze3yGJ-SyAcgFn-Aj9Of6g +Schema: rgb:sch:Yjx26J5Aat5JMoaQa9dn7a1LOQCVCMxB7A3mSp0AXHI#sheriff-impact-native Interface: RGB25Base -Check-SHA256: 374daaad407ad6b79ccea8d29d7c65c13a53b34231d97eed520ddc30fc3cd8ea +Check-SHA256: 5c3a0c97fa88615f9c7d3b00cfb57918e7cdeedef4b0475249c9f363df48db54 -0ssI2003~9&t>%~km`t98bVH{3A9!-E&Trg9mzKm1UQyhpKkzflG$be0000D0CRI`I$>^aZh38Qb#nm# -0iX{R2iX#u|61C)F286e!B~NFaP8)*X#umRi7(i*6&$bt1kncp00RI3007zt0RRX90O)o|7XSbNxeEaR -3jhjKWpi{OVRLh3biE4!009690iX{70RRI40mWz_3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL -0H(OS7IQ+LrU(G&c1RZh004e|etv#_etv#_etv#_etv#_etv#_etv#_etv#_ets1P*%F%nTH3iTzi21H -Sb=kJ?dGa!0kfxxFW9pc9IyZY00000000000000002o7WY;0v?bZKI2Wkz*wXK7+=WkGXuWpt2@A7%gm -001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00z+q09%X4 -R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y_W=L^+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz -9FBwm006iP0CxZIJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjYCBxeEY*Ud6mq639W2L|vh3p}>j> -;{fO~I?t|ZBSH!(tpGg%006uT06!~ox5Td+V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip1N -sg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eV0004?4*>`O00z+q0RRC2+6Msu0RXrQ00031xeEaR0RX%U -00031y$b;V0RRD@4*>xG{{R82@R`z!?NHxd23Hj_e>$5opLcw)x&Ht5G{KXgJhmnY0003HCjbBepbr56 -|NjA?4*>xG{{R82@R`z!?NHxd23Hj_e>$5opLcw)x&Ht5G{KXgJhmnP00000000000099BQb$5EH9}!? -WdefyeA22rmXX)ZV_yI}MH~YN>;K=mRmV)&;+=Xmp=8%{dOaKyPp>`{W+ev&_Ht^TvI2G1Jtsm#HCZ5u -7Cwae0cHRI0000617UJ>0e1iJJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUjP6HWMy<=X>4-=KPz&# -#IG7-47St%2#c>Z5R>jkTb_MKDq#SETceV>000312V`Y*VQFl0000313~6(7b!B8zb#QQO -c>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC21$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j|Nj614rz09b!B8t -X>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^MPj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyA -L2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*} -VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#PbRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9 -bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyAL2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42 -ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~cr9mYL^*C)P)03J -V`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~MMK^Z=aG1|!^(m0*h*}y#PNoU8Rx>U9{{S7yHxdLmmRO%} -1=6B0dz(d+*sZj++->l;t}Y?Say-NZ(5a@eh#oRVkc}T^0000000z+q1$1R{ZF2ws007zt3~6(7b!B8z -b#QQOc>n+a0JsYSVRCc;0002F3j}UqZDjxe006uT2V`Y*VQFl000000y$cC&a%E#_b7^mG000000iX{G -VRLh3bWe9~WpV%j000015GM$9a$#)URWn@ih -b8TUCV`u;X001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w! -03ZMW7|WDz5|hsu4xM=1##_akM=$^Wt^4(jv6#$*DE3PM1p!tKmiMH2B(lTb1P)|lIgi#~)sbZ^DMLcP -rTIA(QB)kOzr)xjz`xPycM6D}`pk=G7OeqFKI{;-SrsrMkU{`J9I$nc6v6J{1p&;$a*~gEI0M-qU9F8#%$RFKGB^*CB=^U`QB8J^yO1hds;p3n{|Sv13rH;f*u2mhk-*oq -T{0nV)po0K>)i(&tG~n8CcwYZ>30f@L|V|mt8Tf>F%PuK$$b1YykvwZ*66;aMO?W -(hOSV*asELF;pE|QoG*E(^8!{=H0e(APJW|(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zgEd*tF -V{9P=Xkl|`BL-w|Y;0k2Bm-e>a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KUbZByAWite3 -Z*_7s1ZHV=Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQ -KPz&##IG7-47St%2#c>Z5R>jkTb_MKDq#SEtcHU8F -!O3w2qJC#)UKHujTH+>EdJQM&>E4z*R)+SA#T-nt8weyNWLQ%D(Hkon&*Qwpawq) -`VKLB>Wd>h=Ype%b?272178JmaA9L*AOvN2V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4 -ZE$6Bb75{|CJJG2Z*z2VZ*XX3CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ -1#M|=b#pBPWN&mX1#@g+b7(IFdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvH -KLTNNKmuPuK>}YwLIPhyLjqq!L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~ -PXb?1Py%03Q3795QUYI7QvzR9R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_*SetH31dQXVPk7$bW(ieJj&GE~o3bsJMXYO0?^NT%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_M00>4q10|{hh -V`)ukY;0)+3S(t%bZJd#Y;0)-1#M|#a&HC+WMyM%O=)9tZwCrvWo~q7O=)9tZwLf#VQy~;2xMhrX-;8o -Zwd)xWo~q7PGN3u3j}a!V{Z%yWMyM%P-$at4GCjqZggo-X=85=1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7 -MrCbuZxIAxbaZbLUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>13mOG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9C -R#pOES62dGSXcsISy=*KT3P{NVF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>s -aBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I -2>Yp6avD7|R0gwX!*5!Gc?n?5;yM1jui=Thm^szjcmV(a000000RI30000000CxZIJu1QEX=%Xy>vn1> -teUKtq)w3djjO=VIO}{ZUj+e*%scV6@fU9pCi53oip!$IFLkNNm8RePe-orvEEUUuUd6mq639W2L|vh3 -p}>j>;{fO~I?t|ZBSH!(tpGg*0mM3ep1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G|!UHq{UqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9* -UrS2@UrbB_UrkK{UrtT}Ur$d0Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rL -VPOGcVgX}g0c2zWWn}?oW&vks0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!D -b^&*H0eE-;d3gbPdWeizWn((=JC(Q18jXtb+QHlu3zu?H+0@$e$59-PgarXyp-EU>L0b>G|!rXoSC?n5wJSpIAp{09w=bpP+&ZWGMAfo&23(WIz3b1g~kM`0GTIJXW70NMG -9a>Vm-pkWcojB&*wsIf|mjwYFuyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8MAg$P-$_ObT -P^+;#QB8KK9=zKTm*o$AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zKTm*o$AsQE~ -(J)#3QPiZn-Ymb5%jv~AS23ov&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bM -bH%I*cn#*O0A6zd000000000#000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i -7b@t4MVjY>G@u4Q3HlB(d+LiLJm-R=h;`?dxb>|UAwf1KA&4t&LI4m}^5aI1iE}_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;Uo -kIU)BIae{Jw9R4r0N>}O)+shqImKG);D@8R3aUofKfd5E4dt|K_z&S8_xxYy=<4kft^@4w~ -Gv12aef}sT&vZN~;BKL%dw1uayIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$ -7U5G>00000000009{>OV00000;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwAD -FAe3iZ1@l19{2t5VaJV^T`{fc?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0Hcc -B}nzH7a>H<(%oY0=TGqa6l5KfYJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca -=a#qt000000000d000000002_7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`Bki -WC3Mm0cK_aXJ-LuXaQ+y0cvUiYij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N -0eX7-saSFvJu_4WvuML_T7r2AV9eq<{=Bc@iMp6M)!KLg0RRI7K}=N$LQq6WM@3Uq15!sqApi>i007XS -4*>@Y0096C2mk;J0RjNX+6MtSFaXh@4*>@R000310000000 +0ssI2003e^aZh38Qb#nm# +00hwo0RR9400000+6Msu00;m8=ypgK0002F3jqKC3jhjKWpi{OVRLh3biE4!000312mzoE0RRC20mWz_ +3=qW1JT(yrzx+KOLOA(Nl)!B$w#|{Dv0Gg!6afGL0Kw@*ueEV}Z2$lW008KANEZMA000000000000000 +0000002o7WY;0v?bZKI2Wkz*wXK7+=WkGXuWpt2@A7%gm001-qb8~4rOj=Vhb$BgjYD771SWreSPh(|t +RaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!00z+q09%X4R5&sPN*yA;lp<^AQ;QQiCWsumMiT;fc;H-Y +_W=L^+6MrLj96u3I`KP|x6K-jit^gQ+!PC!a#7jT+VjUz9FBwm006iP0CxZIJu1QEX=%Xy>vn1>teUKt +q)w3djjO=VIO}{ZUjYCBxeEY*Ud6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg%006uT06!~ox5Td+ +V+^*_{|Jk(H4u~TMq8eJM=D_eg5*ip1Nsg8a>I`c#0nSFF19TD^=GS9xEuuG0V@n0eV +0004?4*-aaSY=~6@jI2b%^Ho0^4h`N6bqMfQQ6em^T$yfj)VXJ2GIur0098n2LS*90JsYP0098G3jqKD +0K5wT0098K3jqKD00E#60RaF100H5xG{{f&60RaF100H5wGO=000MMWprU_Y;yrW +D{{BQuNq?vw$uLzi?1~hlkP@ao_$9uVE}^UN!R2601Rn!b9H58Q+04~Yj>;{fO~I?t|ZBSH!(tpGg%010q%Wn*b` +X>V=;T?51yjj4`)KRWY6Ze?--h>TceV>000312V`Y*VQFl0000313~6(7b!B8zb#QQOc>w?c00eGfZDj!f0RRbba%E#_b7^mG0RRC2 +1$1R{ZF2zt0RRCCVRLh3bWe9~WpV%j|Nj614rz09b!B8tX>)C1bYo}%2y}8`ZgXa3asU7T009bNb8}^M +Pj_x*asdGU{{aeNb8}^MPj_x*asdGU{{R6GZf|ZyadlyAL2Yk!Zgg`23So0|Wpqz>Ze?-+0SI(*VQzC~ +WpV-zX>)URWn@ihb8TUCV`yY^b#QQOc_4FeWn*b(X=P*}VRIm1AZKiEVqt6`aA9&`ZDn+2av)@HWpi#P +bRcbEbYo~BbZBKDX>)URWn>_8b#QQOc_3kIY;R*>bY)~9bZ;PZXk{Q_b8}^MAa8eWWpZ;5Zf|ZyadlyA +L2Yk!Zgg`+bZBKDb9HSXZ)PBKaAj_EAYpTJWpr~OWN&42ZYOjgWpQ<3Y#?-RAarPDAaiwXAa7Rb7?wET2nD~cr9mYL^*C)P)03JV`X$zRclu*HgYp{Q$tfWEn!h;b2(QvW-T~M +MK^Z=Vmx-}o<#8hod8^N#3(5S>t!Hq{WedU%6WhiW1Z&rJ@=J{wHC;F +K7JM^kc}T^0000000z+q1$1R{ZF2ws007zt3~6(7b!B8zb#QQOc>n+a0JsYSVRCc;0002F3j}UqZDjxe +006uT2V`Y*VQFl000000y$cC&a%E#_b7^mG000000iX{GVRLh3bWe9~WpV%j000015GM$9a$#)URWn@ihb8TUCV`u;X001-qb8~4rOj=Vhb$BgjYD771 +SWreSPh(|tRaI+OEjDs9byGuAHZ5UMXmdGNHD)b1N<}w!;k&sZiD-;RPG@tqMQZv;6xYUmxKp<0Dg~-2 +=wCe?007~;xgm*Yj7LsqbG1ck`bZSl#(lU`w&yAZswn7RJsbc4;k&sZiD-;RPG@tqMQZv;6xYUmxKp<0 +Dg~-2=wCe?007~;xgm*Yj7LsqbG1ck`bZSl#(lU`w&yAZswn7RJsbc403ZMW7|WDz5|hsu4xM=1##_ak +M=$^Wt^4(jv6#$*DE3PM1p!tKmiMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB)kOzr)xjz`xPycM6D} +`pk=G7OeqFKI{;-SrsrMkU{`J9I$nc6v6J{1p&;$a*~gEI0M-q +U9F8#%$RFKGB^*CB=^U`QB8J^yO1hds;p3n{|Sv13rH;f*u2mhk-*oqT{0nV)po0K>)i(&tG~n8CcwYZ +>30f@L|V|mt8Tf>F%PuK$$b1YykvwZ*66;aMO?W(hOSV*asELF;pE|QoG*E(^8!{ +=H0e(APJW|(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zgEd*tFV{9P=Xkl|`BL-w|Y;0k2Bm-e> +a3%zBY;|)h1Y}`zXe|R|Z*(pMdS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=Wi0dH>saBu-}aRG920dsQ!baVlAbpdvE0e5!+cz6MMc>#KQKPz&##IG7-47St%2#c>Z5R>jk +Tb_MKDq#SEtcHU8F!O3w2qJC#)UKHujTH+>EdJQM&>E4z*R)+SA#T-nt8weyNWLQ%D(Hkon&*Qwpawq)`VKLB>Wd>h=Ype%b?272178Jm +aA9L*AOvN2V{9P?admHWWpg3~Xkl|`BL-w|Y;0k2BnNP1a${v~bR`L4ZE$6Bb75{|CJJG2Z*z2VZ*XX3 +CkSG4VPk7$bWA7+Vsc?)Yh`p&DF|V6bY*gBb89LDaBOvRD+Ob3ZEayJ1#M|=b#pBPWN&mX1#@g+b7(IF +dS!BNFavLHWibPEcW*KUbZByAWite3Z*_7s1ZHV=WiCgZ)|UFI|OWHb8|ceWpQ<3Y&{2Oa%Ew3WpX|Uadl;LbZKvHKLTNNKmuPuK>}YwLIPhyLjqq! +L;_z$MFL+&Mgm_)M*?3+NCIC;NdjL=N&;U?O9Ed^Oafm`O#)v|P6A&~PXb?1Py%03Q3795QUYI7QvzR9 +R03aBRRUjDRsvsFR{~#HSOQ;JSpr{LS_*SetH31dQXVPk7$bW(i< +bZKm4Wqwu-miMH2B(lTb1P)|lIgi#~)sbZ^DMLcPrTIA(QB(-~saSFvJu_4WvuML_T7r2AV9eq<{=Bc@ +iMp6M)!KLf0000000030{{R3000016i^o(rG6hNeJj&GE~o3bsJMXY +O0?^NT%k!=UF9_Hk+b8VFt_j2&9|DqsTD5}A2(UF#~}_M00>4q10|{hhV`)ukY;0)+3S(t%bZJd#Y;0)- +1#M|#a&HC+WMyM%O=)9tZwCrvWo~q7O=)9tZwLf#VQy~;2xMhrX-;8oZwd)xWo~q7PGN3u3j}a!V{Z%y +WMyM%P-$at4GCjqZggo-X=85=1!iS!bZ-v{WMyM%MrCbuZx9M&Wo~q7MrCbuZxIAxbaZbLUtT8V#RWVY +MMP0s#-L?ApehHE`!Nx1aisd$7U5G>13m +OG^S@OiTh_O-%w{PEG<}Pfr40P*4J2QBeY4Qc?n6Q&R$8R8#_ARaF9CR#pOES62dGSXcsISy=*KT3P{N +VF6-d0b^qUWMlzlWdUYp0cU3cXlMaxX#r|#0c&dkY-|B-Z2@j>0dH>saBu-}aRG920dsQ!baVlAbpdvE +0e5!+cz6MMc>#KQW2z$*=&?u0vV`BWnw}8RoT}CO>V%FwxrCjOXVx@I2>Yp6avD7|R0gwX!*5!Gc?n?5 +;yM1jui=Thm^szjcmV(a000000RI30000000CxZIJu1QEX=%Xy>vn1>teUKtq)w3djjO=VIO}{ZUj+e* +%scV6@fU9pCi53oip!$IFLkNNm8RePe-orvEEUUuUd6mq639W2L|vh3p}>j>;{fO~I?t|ZBSH!(tpGg* +0mM3ep1HFEd2`8+UDn~O1og|)LO{U2yb2Gv2owO6)Pf^`^mXvL0b>G| +!UHq{UqL|vUqV6xUqeFzUqnO#UqwX%Uq(g(Uq?p*Ur0y-Ur9*UrS2@UrbB_UrkK{UrtT}Ur$d0 +Ur8UsO~AUsY8CUshHEUsqQGUszZIUs+iKUs_rLVPOGcVgX}g0c2zWWn}?oW&vks +0cdCeX=wp!Y5{9&0c>mmZEXQ=ZUJv^0dQ~uad821ashL50d#Z$b#(!Db^&*H0eE-;d3gbPdWeizWn((= +JC(Q18jXtb+QHlu3zu?H+0@$e$59-PgarXyp-EU>L0b>G|!rXoS +C?n5wJSpIAp{09w=bpP+&ZWGMAfo&23(WIz3b1g~kM`0GTIJXW70NMG9a>Vm-pkWcojB&*wsIf|mjwYF +uyu|U!T^j90F36+)E=H0H{s0>nH0sEektM3d!W0q4c`8MAg$P-$_ObTP^+;#QB8KK9=zKTm*o$ +AsQE~(J)#3QPiZn-Yf@WXkl`5Wpppt@_H915|BP>K9=zKTm*o$AsQE~(J)#3QPiZn-Ymb5%jv~AS23ov +&0+fh-{+;)DK=9%#aim%hoiX)szwMr(W0Hqt(%d1CNN)#sHFQL7%(bMbH%I*cn#*O0A6zd000000000# +000000002QI(?qGvjTZ@$&X#u;j9Gp%hN(Yz`nc+54Z>v0F=}P0!Y3i7b@t4MVjY>G@u4Q3HlB(d+LiL +Jm-R=h;`?dxb>|UAwf1KA&4t&LI4m}^5aI1iE} +_s79eO?HmEkOczy7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;UokIU)BIae{Jw9R4r0N>}O)+shq +ImKG);D@8R3aUofKfd5E4dt|K_z&S8_xxYy=<4kft^@4w~Gv12aef}sT&vZN~;BKL%dw1ua +yIIbqypJHF`|S(N^Kl9YUtT8V#RWVYMMP0s#-L?ApehHE`!Nx1aisd$7U5G>00000000009{>OV00000 +;D@L*mNSQ$uf&Ry5okI>eJj&GE~o3bsJMXYO0?^N1OfmAZf|a7*gwADFAe3iZ1@l19{2t5VaJV^T`{fc +?xMUvnKPbj0R(ezZDrgZFH%;2a$nalt%Qbu4W!Asn(%=$5#QwRK0HccB}nzH7a>H<(%oY0=TGqa6l5Kf +YJkC@$v(fAa&d%-e7p!qz9SbZ=!8X@=Yuq$20sb<4l#S`iz7Vef}@Ca=a#qt000000000d000000002_ +7YGF1t^|4b)vt7`JJJH?>OpeZskt`?6&l-r#0;SW8UbNp0b*hSV`BkiWC3Mm0cK_aXJ-LuXaQ+y0cvUi +Yij{)YyoX;0d8&qZ*Ku`Z~<{~0djHyb8`W7bOCjB0d{r)cXt7Jcma8N0eX7-saSFvJu_4WvuML_T7r2A +V9eq<{=Bc@iMp6M)!KLg0ssR8K}=N$LQq6WM@3Uq15!sqL;wp>000Yv0sz1lfFuF`0l^XkIW(XFAb?;2 +Bmw^e4genq3sC?73yS~%z#o7l0sjHP7X&#qpaCF=U;!in{{txi9|sBm00000000000000313^qx2trUq +Nk>IfR0C2+LOB2n0RR9Cc>(~z%>xTj0022NuK^2z1ONph000XB1^^j(aRCPlfdl{r00005A^-pj0000P +fpGx`2LJ#7+6SNy0Rd|tORQIL(