diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1a003c7d..3018942d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,9 @@ jobs: key: ${{ runner.os }}-cargo - name: Set-Up - run: sudo apt install -y git clang curl libssl-dev llvm libudev-dev protobuf-compiler + run: | + sudo apt-get update + sudo apt install -y git clang curl libssl-dev llvm libudev-dev protobuf-compiler - name: Install toolchain # hacky way to install rust. Rustup is pre-installed on runners. Calling rustup show will detect the rust-toolchain.toml, and subsequently diff --git a/Cargo.lock b/Cargo.lock index a5b98011..10f89036 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,7 +27,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ - "gimli 0.27.0", + "gimli 0.27.2", ] [[package]] @@ -36,6 +36,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array 0.14.6", +] + [[package]] name = "aead" version = "0.4.3" @@ -43,6 +52,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" dependencies = [ "generic-array 0.14.6", + "rand_core 0.6.4", +] + +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher 0.2.5", ] [[package]] @@ -52,25 +73,59 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ "cfg-if", - "cipher", + "cipher 0.3.0", "cpufeatures", "opaque-debug 0.3.0", ] +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead 0.3.2", + "aes 0.6.0", + "cipher 0.2.5", + "ctr 0.6.0", + "ghash 0.3.1", + "subtle", +] + [[package]] name = "aes-gcm" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", + "aead 0.4.3", + "aes 0.7.5", + "cipher 0.3.0", + "ctr 0.8.0", + "ghash 0.4.4", "subtle", ] +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher 0.2.5", + "opaque-debug 0.3.0", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher 0.2.5", + "opaque-debug 0.3.0", +] + [[package]] name = "ahash" version = "0.7.6" @@ -111,9 +166,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" [[package]] name = "approx" @@ -124,6 +179,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + [[package]] name = "array-bytes" version = "4.2.0" @@ -149,51 +210,78 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] -name = "asn1_der" -version = "0.7.5" +name = "asn1-rs" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" +checksum = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33" +dependencies = [ + "asn1-rs-derive 0.1.0", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] [[package]] -name = "async-channel" -version = "1.8.0" +name = "asn1-rs" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", + "asn1-rs-derive 0.4.0", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.17", ] [[package]] -name = "async-executor" -version = "1.5.0" +name = "asn1-rs-derive" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +checksum = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf" dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", + "proc-macro2", + "quote", + "syn", + "synstructure", ] [[package]] -name = "async-global-executor" -version = "2.3.1" +name = "asn1-rs-derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] +[[package]] +name = "asn1_der" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" + [[package]] name = "async-io" version = "1.12.0" @@ -224,17 +312,11 @@ dependencies = [ "futures-lite", ] -[[package]] -name = "async-task" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" - [[package]] name = "async-trait" -version = "0.1.60" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3" +checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" dependencies = [ "proc-macro2", "quote", @@ -256,9 +338,9 @@ dependencies = [ [[package]] name = "atomic-waker" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" +checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" [[package]] name = "atty" @@ -288,7 +370,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object 0.30.0", + "object 0.30.3", "rustc-demangle", ] @@ -316,6 +398,12 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + [[package]] name = "base64ct" version = "1.5.3" @@ -342,9 +430,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.60.1" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +checksum = "c4243e6031260db77ede97ad86c27e501d646a27ab57b59a574f725d98ab1fb4" dependencies = [ "bitflags", "cexpr", @@ -357,6 +445,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", + "syn", ] [[package]] @@ -388,24 +477,24 @@ dependencies = [ [[package]] name = "blake2b_simd" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72936ee4afc7f8f736d1c38383b56480b5497b4617b4a77bdbf1d2ababc76127" +checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" dependencies = [ "arrayref", "arrayvec 0.7.2", - "constant_time_eq 0.1.5", + "constant_time_eq", ] [[package]] name = "blake2s_simd" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db539cc2b5f6003621f1cd9ef92d7ded8ea5232c7de0f9faa2de251cd98730d4" +checksum = "6637f448b9e61dfadbdcbae9a885fadee1f3eaffb1f8d3c1965d3ade8bdfd44f" dependencies = [ "arrayref", "arrayvec 0.7.2", - "constant_time_eq 0.1.5", + "constant_time_eq", ] [[package]] @@ -418,7 +507,7 @@ dependencies = [ "arrayvec 0.7.2", "cc", "cfg-if", - "constant_time_eq 0.2.4", + "constant_time_eq", ] [[package]] @@ -427,7 +516,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding", + "block-padding 0.1.5", "byte-tools", "byteorder", "generic-array 0.12.4", @@ -451,6 +540,16 @@ dependencies = [ "generic-array 0.14.6", ] +[[package]] +name = "block-modes" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a0e8073e8baa88212fb5823574c02ebccb395136ba9a164ab89379ec6072f0" +dependencies = [ + "block-padding 0.2.1", + "cipher 0.2.5", +] + [[package]] name = "block-padding" version = "0.1.5" @@ -461,18 +560,10 @@ dependencies = [ ] [[package]] -name = "blocking" -version = "1.3.0" +name = "block-padding" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", -] +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bs58" @@ -482,11 +573,12 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bstr" -version = "0.2.17" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +checksum = "b7f0778972c64420fdedc63f09919c8a88bda7b25135357fd25a5d9f3257e832" dependencies = [ "memchr", + "serde", ] [[package]] @@ -500,9 +592,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byte-slice-cast" @@ -524,9 +616,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "bzip2-sys" @@ -541,9 +633,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" +checksum = "c77df041dc383319cc661b428b6961a005db4d6808d5e12536931b1ca9556055" dependencies = [ "serde", ] @@ -572,13 +664,24 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] +[[package]] +name = "ccm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca1a8fbc20b50ac9673ff014abfb2b5f4085ee1a850d408f14a159c5853ac7" +dependencies = [ + "aead 0.3.2", + "cipher 0.2.5", + "subtle", +] + [[package]] name = "cexpr" version = "0.6.0" @@ -616,7 +719,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" dependencies = [ "cfg-if", - "cipher", + "cipher 0.3.0", "cpufeatures", "zeroize", ] @@ -627,9 +730,9 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" dependencies = [ - "aead", + "aead 0.4.3", "chacha20", - "cipher", + "cipher 0.3.0", "poly1305", "zeroize", ] @@ -644,7 +747,7 @@ dependencies = [ "js-sys", "num-integer", "num-traits", - "time", + "time 0.1.45", "wasm-bindgen", "winapi", ] @@ -662,6 +765,15 @@ dependencies = [ "unsigned-varint", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array 0.14.6", +] + [[package]] name = "cipher" version = "0.3.0" @@ -684,9 +796,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.0.32" +version = "4.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39" +checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76" dependencies = [ "bitflags", "clap_derive", @@ -699,9 +811,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.0.21" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8" dependencies = [ "heck", "proc-macro-error", @@ -712,9 +824,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" dependencies = [ "os_str_bytes", ] @@ -742,9 +854,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" dependencies = [ "crossbeam-utils", ] @@ -755,12 +867,6 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "constant_time_eq" version = "0.2.4" @@ -810,6 +916,12 @@ dependencies = [ "libc", ] +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + [[package]] name = "cranelift-bforest" version = "0.88.2" @@ -908,6 +1020,21 @@ dependencies = [ "wasmtime-types", ] +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" + [[package]] name = "crc32fast" version = "1.3.2" @@ -998,6 +1125,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array 0.14.6", + "subtle", +] + [[package]] name = "crypto-mac" version = "0.11.1" @@ -1008,13 +1145,22 @@ dependencies = [ "subtle", ] +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher 0.2.5", +] + [[package]] name = "ctr" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" dependencies = [ - "cipher", + "cipher 0.3.0", ] [[package]] @@ -1045,9 +1191,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-pre.5" +version = "4.0.0-rc.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67bc65846be335cb20f4e52d49a437b773a2c1fdb42b19fc84e79e6f6771536f" +checksum = "8da00a7a9a4eb92a0a0f8e75660926d48f0d0f3c537e455c457bcdaa1e16b1ac" dependencies = [ "cfg-if", "fiat-crypto", @@ -1059,9 +1205,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add3fc1717409d029b20c5b6903fc0c0b02fa6741d820054f4a2efa5e5816fd" +checksum = "90d59d9acd2a682b4e40605a242f6670eaa58c5957471cbf85e8aa6a0b97a5e8" dependencies = [ "cc", "cxxbridge-flags", @@ -1071,9 +1217,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c87959ba14bc6fbc61df77c3fcfe180fc32b93538c4f1031dd802ccb5f2ff0" +checksum = "ebfa40bda659dd5c864e65f4c9a2b0aff19bea56b017b9b77c73d3766a453a38" dependencies = [ "cc", "codespan-reporting", @@ -1086,18 +1232,53 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.85" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a3e162fde4e594ed2b07d0f83c6c67b745e7f28ce58c6df5e6b6bef99dfb59" +checksum = "457ce6757c5c70dc6ecdbda6925b958aae7f959bda7d8fb9bde889e34a09dc03" [[package]] name = "cxxbridge-macro" -version = "1.0.85" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf883b7aacd7b2aeb2a7b338648ee19f57c140d4ee8e52c68979c6b2f7f2263" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "darling" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0808e1bd8671fb44a113a14e13497557533369847788fa2ae912b6ebfce9fa8" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e7e2adeb6a0d4a282e581096b06e1791532b7d576dcde5ccd9382acf55db8e6" +checksum = "001d80444f28e193f30c2f293455da62dcf9a6b29918a4253152ae2b1de592cb" dependencies = [ + "fnv", + "ident_case", "proc-macro2", "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b36230598a2d5de7ec1c6f51f72d8a99a9208daff41de2084d06e3fd3ea56685" +dependencies = [ + "darling_core", + "quote", "syn", ] @@ -1134,9 +1315,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] +[[package]] +name = "der-parser" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" +dependencies = [ + "asn1-rs 0.3.1", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs 0.5.1", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "derive_builder" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" +dependencies = [ + "derive_builder_core", + "syn", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -1225,13 +1466,14 @@ dependencies = [ ] [[package]] -name = "dns-parser" -version = "0.8.0" +name = "displaydoc" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d33be9473d06f75f58220f71f7a9317aca647dc061dbd3c361b0bef505fbea" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ - "byteorder", - "quick-error", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1293,9 +1535,9 @@ dependencies = [ [[package]] name = "ed25519" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "signature", ] @@ -1330,9 +1572,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "elliptic-curve" @@ -1347,6 +1589,9 @@ dependencies = [ "ff", "generic-array 0.14.6", "group", + "hkdf", + "pem-rfc7468", + "pkcs8", "rand_core 0.6.4", "sec1", "subtle", @@ -1367,12 +1612,12 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ - "atty", "humantime", + "is-terminal", "log", "regex", "termcolor", @@ -1434,9 +1679,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] @@ -1468,9 +1713,9 @@ checksum = "a214f5bb88731d436478f3ae1f8a277b62124089ba9fb67f4f93fb100ef73c90" [[package]] name = "file-per-thread-logger" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f" +checksum = "84f2e425d9790201ba4af4630191feac6dcc98765b118d4d18e91d23c2353866" dependencies = [ "env_logger", "log", @@ -1478,21 +1723,21 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" dependencies = [ "cfg-if", "libc", "redox_syscall", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] name = "finality-grandpa" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22349c6a11563a202d95772a68e0fcf56119e74ea8a2a19cf2301460fcd0df5" +checksum = "e24e6c429951433ccb7c87fd528c60084834dcd14763182c1f83291bcde24c34" dependencies = [ "either", "futures", @@ -1551,7 +1796,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", ] @@ -1574,7 +1819,7 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -1597,7 +1842,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "Inflector", "array-bytes", @@ -1609,16 +1854,13 @@ dependencies = [ "frame-system", "gethostname", "handlebars", - "hash-db", "itertools", - "kvdb", "lazy_static", "linked-hash-map", "log", - "memory-db", "parity-scale-codec", "rand 0.8.5", - "rand_pcg 0.3.1", + "rand_pcg", "sc-block-builder", "sc-cli", "sc-client-api", @@ -1628,7 +1870,6 @@ dependencies = [ "sc-sysinfo", "serde", "serde_json", - "serde_nanos", "sp-api", "sp-blockchain", "sp-core", @@ -1641,7 +1882,6 @@ dependencies = [ "sp-std", "sp-storage", "sp-trie", - "tempfile", "thiserror", "thousands", ] @@ -1649,7 +1889,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -1677,18 +1917,15 @@ dependencies = [ [[package]] name = "frame-remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "env_logger", "futures", "log", "parity-scale-codec", "serde", - "serde_json", "sp-core", "sp-io", "sp-runtime", - "sp-version", "substrate-rpc-client", "tokio", ] @@ -1696,7 +1933,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "bitflags", "frame-metadata", @@ -1728,7 +1965,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "Inflector", "cfg-expr", @@ -1742,7 +1979,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1754,7 +1991,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "proc-macro2", "quote", @@ -1764,7 +2001,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "log", @@ -1782,7 +2019,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -1797,7 +2034,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "sp-api", @@ -1806,7 +2043,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "parity-scale-codec", @@ -1825,12 +2062,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "fs_extra" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" - [[package]] name = "funty" version = "2.0.0" @@ -1839,9 +2070,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" dependencies = [ "futures-channel", "futures-core", @@ -1854,9 +2085,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" dependencies = [ "futures-core", "futures-sink", @@ -1864,15 +2095,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" dependencies = [ "futures-core", "futures-task", @@ -1882,9 +2113,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" [[package]] name = "futures-lite" @@ -1903,9 +2134,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" dependencies = [ "proc-macro2", "quote", @@ -1919,21 +2150,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", - "rustls", - "webpki", + "rustls 0.20.8", + "webpki 0.22.0", ] [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" [[package]] name = "futures-timer" @@ -1943,9 +2174,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" dependencies = [ "futures-channel", "futures-core", @@ -2004,10 +2235,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -2021,6 +2250,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug 0.3.0", + "polyval 0.4.5", +] + [[package]] name = "ghash" version = "0.4.4" @@ -2028,7 +2267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" dependencies = [ "opaque-debug 0.3.0", - "polyval", + "polyval 0.5.3", ] [[package]] @@ -2044,21 +2283,21 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a" +checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ "aho-corasick", "bstr", @@ -2137,9 +2376,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -2159,6 +2398,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -2171,6 +2416,15 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac 0.12.1", +] + [[package]] name = "hmac" version = "0.8.1" @@ -2181,6 +2435,16 @@ dependencies = [ "digest 0.9.0", ] +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.1", + "digest 0.9.0", +] + [[package]] name = "hmac" version = "0.11.0" @@ -2270,9 +2534,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" dependencies = [ "bytes", "futures-channel", @@ -2301,7 +2565,7 @@ dependencies = [ "http", "hyper", "log", - "rustls", + "rustls 0.20.8", "rustls-native-certs", "tokio", "tokio-rustls", @@ -2331,6 +2595,12 @@ dependencies = [ "cxx-build", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.2.3" @@ -2364,9 +2634,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065c008e570a43c00de6aed9714035e5ea6a498c255323db9091722af6ee67dd" +checksum = "ba7abdbb86e485125dad06c2691e1e393bf3b08c7b743b43aa162a00fd39062e" dependencies = [ "async-io", "core-foundation", @@ -2377,6 +2647,7 @@ dependencies = [ "log", "rtnetlink", "system-configuration", + "tokio", "windows", ] @@ -2438,6 +2709,25 @@ dependencies = [ "num-traits", ] +[[package]] +name = "interceptor" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8a11ae2da61704edada656798b61c94b35ecac2c58eb955156987d5e6be90b" +dependencies = [ + "async-trait", + "bytes", + "log", + "rand 0.8.5", + "rtcp", + "rtp", + "thiserror", + "tokio", + "waitgroup", + "webrtc-srtp", + "webrtc-util", +] + [[package]] name = "io-lifetimes" version = "0.7.5" @@ -2446,12 +2736,12 @@ checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074" [[package]] name = "io-lifetimes" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2474,20 +2764,20 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" [[package]] name = "is-terminal" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" +checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef" dependencies = [ - "hermit-abi 0.2.6", - "io-lifetimes 1.0.3", - "rustix 0.36.6", - "windows-sys 0.42.0", + "hermit-abi 0.3.1", + "io-lifetimes 1.0.5", + "rustix 0.36.8", + "windows-sys 0.45.0", ] [[package]] @@ -2516,9 +2806,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -2743,16 +3033,15 @@ checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" [[package]] name = "libp2p" -version = "0.49.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec878fda12ebec479186b3914ebc48ff180fa4c51847e11a1a68bf65249e02c1" +checksum = "2e0a0d2f693675f49ded13c5d510c48b78069e23cbd9108d7ccd59f6dc568819" dependencies = [ "bytes", "futures", "futures-timer", "getrandom 0.2.8", "instant", - "lazy_static", "libp2p-core", "libp2p-dns", "libp2p-identify", @@ -2762,11 +3051,12 @@ dependencies = [ "libp2p-mplex", "libp2p-noise", "libp2p-ping", + "libp2p-quic", "libp2p-request-response", "libp2p-swarm", - "libp2p-swarm-derive", "libp2p-tcp", "libp2p-wasm-ext", + "libp2p-webrtc", "libp2p-websocket", "libp2p-yamux", "multiaddr", @@ -2777,9 +3067,9 @@ dependencies = [ [[package]] name = "libp2p-core" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799676bb0807c788065e57551c6527d461ad572162b0519d1958946ff9e0539d" +checksum = "b6a8fcd392ff67af6cc3f03b1426c41f7f26b6b9aff2dc632c1c56dd649e571f" dependencies = [ "asn1_der", "bs58", @@ -2789,17 +3079,18 @@ dependencies = [ "futures", "futures-timer", "instant", - "lazy_static", "log", "multiaddr", "multihash", "multistream-select", + "once_cell", "parking_lot 0.12.1", "pin-project", "prost", "prost-build", "rand 0.8.5", "rw-stream-sink", + "sec1", "sha2 0.10.6", "smallvec", "thiserror", @@ -2810,9 +3101,9 @@ dependencies = [ [[package]] name = "libp2p-dns" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2322c9fb40d99101def6a01612ee30500c89abbbecb6297b3cd252903a4c1720" +checksum = "8e42a271c1b49f789b92f7fc87749fa79ce5c7bdc88cbdfacb818a4bca47fec5" dependencies = [ "futures", "libp2p-core", @@ -2824,9 +3115,9 @@ dependencies = [ [[package]] name = "libp2p-identify" -version = "0.40.0" +version = "0.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf9a121f699e8719bda2e6e9e9b6ddafc6cff4602471d6481c1067930ccb29b" +checksum = "c052d0026f4817b44869bfb6810f4e1112f43aec8553f2cb38881c524b563abf" dependencies = [ "asynchronous-codec", "futures", @@ -2845,9 +3136,9 @@ dependencies = [ [[package]] name = "libp2p-kad" -version = "0.41.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6721c200e2021f6c3fab8b6cf0272ead8912d871610ee194ebd628cecf428f22" +checksum = "2766dcd2be8c87d5e1f35487deb22d765f49c6ae1251b3633efe3b25698bd3d2" dependencies = [ "arrayvec 0.7.2", "asynchronous-codec", @@ -2873,12 +3164,11 @@ dependencies = [ [[package]] name = "libp2p-mdns" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761704e727f7d68d58d7bc2231eafae5fc1b9814de24290f126df09d4bd37a15" +checksum = "04f378264aade9872d6ccd315c0accc18be3a35d15fc1b9c36e5b6f983b62b5b" dependencies = [ "data-encoding", - "dns-parser", "futures", "if-watch", "libp2p-core", @@ -2888,14 +3178,15 @@ dependencies = [ "smallvec", "socket2", "tokio", + "trust-dns-proto", "void", ] [[package]] name = "libp2p-metrics" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee31b08e78b7b8bfd1c4204a9dd8a87b4fcdf6dafc57eb51701c1c264a81cb9" +checksum = "5ad8a64f29da86005c86a4d2728b8a0719e9b192f4092b609fd8790acb9dec55" dependencies = [ "libp2p-core", "libp2p-identify", @@ -2907,9 +3198,9 @@ dependencies = [ [[package]] name = "libp2p-mplex" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692664acfd98652de739a8acbb0a0d670f1d67190a49be6b4395e22c37337d89" +checksum = "03805b44107aa013e7cbbfa5627b31c36cbedfdfb00603c0311998882bc4bace" dependencies = [ "asynchronous-codec", "bytes", @@ -2925,31 +3216,32 @@ dependencies = [ [[package]] name = "libp2p-noise" -version = "0.40.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048155686bd81fe6cb5efdef0c6290f25ad32a0a42e8f4f72625cf6a505a206f" +checksum = "a978cb57efe82e892ec6f348a536bfbd9fee677adbe5689d7a93ad3a9bffbf2e" dependencies = [ "bytes", "curve25519-dalek 3.2.0", "futures", - "lazy_static", "libp2p-core", "log", + "once_cell", "prost", "prost-build", "rand 0.8.5", "sha2 0.10.6", "snow", "static_assertions", - "x25519-dalek", + "thiserror", + "x25519-dalek 1.1.1", "zeroize", ] [[package]] name = "libp2p-ping" -version = "0.40.1" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7228b9318d34689521349a86eb39a3c3a802c9efc99a0568062ffb80913e3f91" +checksum = "929fcace45a112536e22b3dcfd4db538723ef9c3cb79f672b98be2cc8e25f37f" dependencies = [ "futures", "futures-timer", @@ -2961,11 +3253,32 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-quic" +version = "0.7.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e7c867e95c8130667b24409d236d37598270e6da69b3baf54213ba31ffca59" +dependencies = [ + "bytes", + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-tls", + "log", + "parking_lot 0.12.1", + "quinn-proto", + "rand 0.8.5", + "rustls 0.20.8", + "thiserror", + "tokio", +] + [[package]] name = "libp2p-request-response" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8827af16a017b65311a410bb626205a9ad92ec0473967618425039fa5231adc1" +checksum = "3236168796727bfcf4927f766393415361e2c644b08bedb6a6b13d957c9a4884" dependencies = [ "async-trait", "bytes", @@ -2981,9 +3294,9 @@ dependencies = [ [[package]] name = "libp2p-swarm" -version = "0.40.1" +version = "0.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46d13df7c37807965d82930c0e4b04a659efcb6cca237373b206043db5398ecf" +checksum = "b2a35472fe3276b3855c00f1c032ea8413615e030256429ad5349cdf67c6e1a0" dependencies = [ "either", "fnv", @@ -2991,19 +3304,21 @@ dependencies = [ "futures-timer", "instant", "libp2p-core", + "libp2p-swarm-derive", "log", "pin-project", "rand 0.8.5", "smallvec", "thiserror", + "tokio", "void", ] [[package]] name = "libp2p-swarm-derive" -version = "0.30.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eddc4497a8b5a506013c40e8189864f9c3a00db2b25671f428ae9007f3ba32" +checksum = "9d527d5827582abd44a6d80c07ff8b50b4ee238a8979e05998474179e79dc400" dependencies = [ "heck", "quote", @@ -3012,9 +3327,9 @@ dependencies = [ [[package]] name = "libp2p-tcp" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9839d96761491c6d3e238e70554b856956fca0ab60feb9de2cd08eed4473fa92" +checksum = "b4b257baf6df8f2df39678b86c578961d48cc8b68642a12f0f763f56c8e5858d" dependencies = [ "futures", "futures-timer", @@ -3026,11 +3341,29 @@ dependencies = [ "tokio", ] +[[package]] +name = "libp2p-tls" +version = "0.1.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7905ce0d040576634e8a3229a7587cc8beab83f79db6023800f1792895defa8" +dependencies = [ + "futures", + "futures-rustls", + "libp2p-core", + "rcgen 0.10.0", + "ring", + "rustls 0.20.8", + "thiserror", + "webpki 0.22.0", + "x509-parser 0.14.0", + "yasna", +] + [[package]] name = "libp2p-wasm-ext" -version = "0.37.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b5b8e7a73e379e47b1b77f8a82c4721e97eca01abcd18e9cd91a23ca6ce97" +checksum = "1bb1a35299860e0d4b3c02a3e74e3b293ad35ae0cee8a056363b0c862d082069" dependencies = [ "futures", "js-sys", @@ -3040,11 +3373,42 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "libp2p-webrtc" +version = "0.4.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb6cd86dd68cba72308ea05de1cebf3ba0ae6e187c40548167955d4e3970f6a" +dependencies = [ + "async-trait", + "asynchronous-codec", + "bytes", + "futures", + "futures-timer", + "hex", + "if-watch", + "libp2p-core", + "libp2p-noise", + "log", + "multihash", + "prost", + "prost-build", + "prost-codec", + "rand 0.8.5", + "rcgen 0.9.3", + "serde", + "stun", + "thiserror", + "tinytemplate", + "tokio", + "tokio-util", + "webrtc", +] + [[package]] name = "libp2p-websocket" -version = "0.39.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3758ae6f89b2531a24b6d9f5776bda6a626b60a57600d7185d43dfa75ca5ecc4" +checksum = "1d705506030d5c0aaf2882437c70dab437605f21c5f9811978f694e6917a3b54" dependencies = [ "either", "futures", @@ -3061,9 +3425,9 @@ dependencies = [ [[package]] name = "libp2p-yamux" -version = "0.41.1" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6874d66543c4f7e26e3b8ca9a6bead351563a13ab4fafd43c7927f7c0d6c12" +checksum = "4f63594a0aa818642d9d4915c791945053877253f08a3626f13416b5cd928a29" dependencies = [ "futures", "libp2p-core", @@ -3075,9 +3439,9 @@ dependencies = [ [[package]] name = "librocksdb-sys" -version = "0.8.0+7.4.4" +version = "0.8.3+7.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611804e4666a25136fcc5f8cf425ab4d26c7f74ea245ffe92ea23b85b6420b5d" +checksum = "557b255ff04123fcc176162f56ed0c9cd42d8f357cf55b3fabeb60f7413741b3" dependencies = [ "bindgen", "bzip2-sys", @@ -3095,7 +3459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" dependencies = [ "arrayref", - "base64", + "base64 0.13.1", "digest 0.9.0", "hmac-drbg", "libsecp256k1-core", @@ -3276,9 +3640,9 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matrixmultiply" @@ -3289,6 +3653,15 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.6", +] + [[package]] name = "memchr" version = "2.5.0" @@ -3301,7 +3674,7 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb" dependencies = [ - "rustix 0.36.6", + "rustix 0.36.8", ] [[package]] @@ -3376,14 +3749,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -3415,14 +3788,14 @@ dependencies = [ [[package]] name = "multiaddr" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +checksum = "a4aebdb21e90f81d13ed01dc84123320838e53963c2ca94b60b305d3fa64f31e" dependencies = [ "arrayref", - "bs58", "byteorder", "data-encoding", + "multibase", "multihash", "percent-encoding", "serde", @@ -3461,9 +3834,9 @@ dependencies = [ [[package]] name = "multihash-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc076939022111618a5026d3be019fd8b366e76314538ff9a1b59ffbcbf98bcd" +checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" dependencies = [ "proc-macro-crate", "proc-macro-error", @@ -3559,9 +3932,9 @@ dependencies = [ [[package]] name = "netlink-packet-utils" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25af9cf0dc55498b7bd94a1508af7a78706aa0ab715a73c5169273e03c84845e" +checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" dependencies = [ "anyhow", "byteorder", @@ -3586,15 +3959,15 @@ dependencies = [ [[package]] name = "netlink-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92b654097027250401127914afb37cb1f311df6610a9891ff07a757e94199027" +checksum = "260e21fbb6f3d253a14df90eb0000a6066780a15dd901a7519ce02d77a94985b" dependencies = [ - "async-io", "bytes", "futures", "libc", "log", + "tokio", ] [[package]] @@ -3606,6 +3979,7 @@ dependencies = [ "bitflags", "cfg-if", "libc", + "memoffset 0.6.5", ] [[package]] @@ -3616,9 +3990,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "7.1.2" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -3643,9 +4017,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" dependencies = [ "num-traits", ] @@ -3716,18 +4090,36 @@ dependencies = [ [[package]] name = "object" -version = "0.30.0" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fb" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] +[[package]] +name = "oid-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" +dependencies = [ + "asn1-rs 0.3.1", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs 0.5.1", +] + [[package]] name = "once_cell" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "opaque-debug" @@ -3753,6 +4145,28 @@ version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.10.6", +] + +[[package]] +name = "p384" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.10.6", +] + [[package]] name = "packed_simd_2" version = "0.3.8" @@ -3766,7 +4180,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -3782,7 +4196,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -3797,7 +4211,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -3812,7 +4226,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -3835,7 +4249,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -3938,7 +4352,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -3959,7 +4373,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -3987,7 +4401,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4005,7 +4419,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-support", "frame-system", @@ -4021,7 +4435,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", @@ -4037,7 +4451,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -4049,7 +4463,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4064,7 +4478,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-benchmarking", "frame-support", @@ -4079,9 +4493,9 @@ dependencies = [ [[package]] name = "parity-db" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a7511a0bec4a336b5929999d02b560d2439c993cccf98c26481484e811adc43" +checksum = "dd684a725651d9588ef21f140a328b6b4f64e646b2e931f3e6f14f75eedf9980" dependencies = [ "blake2", "crc32fast", @@ -4098,9 +4512,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.2.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" +checksum = "637935964ff85a605d114591d4d2c13c5d1ba2806dae97cea6bf180238a749ac" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -4113,9 +4527,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9299338969a3d2f491d65f140b00ddec470858402f888af98e8642fb5e8965cd" +checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4159,7 +4573,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.5", + "parking_lot_core 0.9.7", ] [[package]] @@ -4178,15 +4592,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -4197,20 +4611,20 @@ checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" [[package]] name = "pbkdf2" -version = "0.4.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.8.0", + "crypto-mac 0.11.1", ] [[package]] name = "pbkdf2" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "crypto-mac 0.11.1", + "digest 0.10.6", ] [[package]] @@ -4219,6 +4633,24 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.2.0" @@ -4227,9 +4659,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.5.2" +version = "2.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6e86fb9e7026527a0d46bc308b841d73170ef8f443e1807f6ef88526a816d4" +checksum = "028accff104c4e513bad663bbcd2ad7cfd5304144404c31ed0a77ac103d00660" dependencies = [ "thiserror", "ucd-trie", @@ -4237,9 +4669,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.5.2" +version = "2.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96504449aa860c8dcde14f9fba5c58dc6658688ca1fe363589d6327b8662c603" +checksum = "2ac3922aac69a40733080f53c1ce7f91dcf57e1a5f6c52f421fadec7fbdc4b69" dependencies = [ "pest", "pest_generator", @@ -4247,9 +4679,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.2" +version = "2.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "798e0220d1111ae63d66cb66a5dcb3fc2d986d520b98e49e1852bfdb11d7c5e7" +checksum = "d06646e185566b5961b4058dd107e0a7f56e77c3f484549fb119867773c0f202" dependencies = [ "pest", "pest_meta", @@ -4260,20 +4692,20 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.5.2" +version = "2.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984298b75898e30a843e278a9f2452c31e349a073a0ce6fd950a12a74464e065" +checksum = "e6f60b2ba541577e2a0c307c8f39d1439108120eb7903adeb6497fa880c59616" dependencies = [ "once_cell", "pest", - "sha1", + "sha2 0.10.6", ] [[package]] name = "petgraph" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5014253a1331579ce62aa67443b4a658c5e7dd03d4bc6d302b94474888143" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" dependencies = [ "fixedbitset", "indexmap", @@ -4372,12 +4804,23 @@ dependencies = [ [[package]] name = "polyval" -version = "0.5.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" dependencies = [ - "cfg-if", - "cpufeatures", + "cpuid-bool", + "opaque-debug 0.3.0", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", "opaque-debug 0.3.0", "universal-hash", ] @@ -4420,9 +4863,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773" +checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" dependencies = [ "proc-macro2", "syn", @@ -4443,11 +4886,10 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "once_cell", "thiserror", "toml", ] @@ -4478,9 +4920,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.49" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ "unicode-ident", ] @@ -4524,9 +4966,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592" +checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" dependencies = [ "bytes", "prost-derive", @@ -4534,9 +4976,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6" +checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" dependencies = [ "bytes", "heck", @@ -4556,9 +4998,9 @@ dependencies = [ [[package]] name = "prost-codec" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011ae9ff8359df7915f97302d591cdd9e0e27fbd5a4ddc5bd13b71079bb20987" +checksum = "0dc34979ff898b6e141106178981ce2596c387ea6e62533facfc61a37fc879c0" dependencies = [ "asynchronous-codec", "bytes", @@ -4569,9 +5011,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720" +checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" dependencies = [ "anyhow", "itertools", @@ -4582,9 +5024,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091" +checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" dependencies = [ "bytes", "prost", @@ -4616,6 +5058,24 @@ dependencies = [ "pin-project-lite 0.1.12", ] +[[package]] +name = "quinn-proto" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4ced82a24bb281af338b9e8f94429b6eca01b4e66d899f40031f074e74c9" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls 0.20.8", + "slab", + "thiserror", + "tinyvec", + "tracing", + "webpki 0.22.0", +] + [[package]] name = "quote" version = "1.0.23" @@ -4642,7 +5102,6 @@ dependencies = [ "rand_chacha 0.2.2", "rand_core 0.5.1", "rand_hc", - "rand_pcg 0.2.1", ] [[package]] @@ -4713,15 +5172,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rand_pcg" version = "0.3.1" @@ -4749,9 +5199,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" +checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -4759,6 +5209,31 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "rcgen" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +dependencies = [ + "pem", + "ring", + "time 0.3.17", + "x509-parser 0.13.2", + "yasna", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring", + "time 0.3.17", + "yasna", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -4813,9 +5288,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -5010,19 +5485,30 @@ dependencies = [ "winapi", ] +[[package]] +name = "rtcp" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1919efd6d4a6a85d13388f9487549bb8e359f17198cc03ffd72f79b553873691" +dependencies = [ + "bytes", + "thiserror", + "webrtc-util", +] + [[package]] name = "rtnetlink" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "322c53fd76a18698f1c27381d58091de3a043d356aa5bd0d510608b565f469a0" dependencies = [ - "async-global-executor", "futures", "log", "netlink-packet-route", "netlink-proto", "nix", "thiserror", + "tokio", ] [[package]] @@ -5035,6 +5521,20 @@ dependencies = [ "winapi", ] +[[package]] +name = "rtp" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a095411ff00eed7b12e4c6a118ba984d113e1079582570d56a5ee723f11f80" +dependencies = [ + "async-trait", + "bytes", + "rand 0.8.5", + "serde", + "thiserror", + "webrtc-util", +] + [[package]] name = "rustc-demangle" version = "0.1.21" @@ -5071,6 +5571,15 @@ dependencies = [ "semver 1.0.16", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "0.35.13" @@ -5087,28 +5596,41 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.6" +version = "0.36.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549" +checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644" dependencies = [ "bitflags", "errno", - "io-lifetimes 1.0.3", + "io-lifetimes 1.0.5", "libc", "linux-raw-sys 0.1.4", - "windows-sys 0.42.0", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.1", + "log", + "ring", + "sct 0.6.1", + "webpki 0.21.4", ] [[package]] name = "rustls" -version = "0.20.7" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" dependencies = [ "log", "ring", - "sct", - "webpki", + "sct 0.7.0", + "webpki 0.22.0", ] [[package]] @@ -5125,11 +5647,11 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64", + "base64 0.21.0", ] [[package]] @@ -5176,7 +5698,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "log", "sp-core", @@ -5187,7 +5709,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "futures", "futures-timer", @@ -5210,7 +5732,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5226,11 +5748,9 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "impl-trait-for-tuples", "memmap2", - "parity-scale-codec", "sc-chain-spec-derive", "sc-network-common", "sc-telemetry", @@ -5243,7 +5763,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -5254,7 +5774,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "chrono", @@ -5265,7 +5785,7 @@ dependencies = [ "log", "names", "parity-scale-codec", - "rand 0.7.3", + "rand 0.8.5", "regex", "rpassword", "sc-client-api", @@ -5294,11 +5814,10 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "fnv", "futures", - "hash-db", "log", "parity-scale-codec", "parking_lot 0.12.1", @@ -5315,14 +5834,13 @@ dependencies = [ "sp-runtime", "sp-state-machine", "sp-storage", - "sp-trie", "substrate-prometheus-endpoint", ] [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "hash-db", "kvdb", @@ -5347,7 +5865,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -5372,7 +5890,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -5401,7 +5919,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -5419,13 +5937,12 @@ dependencies = [ "sp-inherents", "sp-runtime", "sp-state-machine", - "thiserror", ] [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "lru", "parity-scale-codec", @@ -5449,7 +5966,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "sc-allocator", "sp-maybe-compressed-blob", @@ -5462,7 +5979,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "log", "sc-allocator", @@ -5475,7 +5992,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "cfg-if", "libc", @@ -5492,7 +6009,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ahash", "array-bytes", @@ -5510,7 +6027,6 @@ dependencies = [ "sc-chain-spec", "sc-client-api", "sc-consensus", - "sc-keystore", "sc-network", "sc-network-common", "sc-network-gossip", @@ -5533,7 +6049,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ansi_term", "futures", @@ -5541,7 +6057,6 @@ dependencies = [ "log", "sc-client-api", "sc-network-common", - "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", ] @@ -5549,7 +6064,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "async-trait", @@ -5564,30 +6079,25 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "async-trait", "asynchronous-codec", - "bitflags", + "backtrace", "bytes", - "cid", "either", "fnv", - "fork-tree", "futures", "futures-timer", "ip_network", "libp2p", - "linked-hash-map", - "linked_hash_set", "log", "lru", "parity-scale-codec", "parking_lot 0.12.1", "pin-project", - "prost", - "rand 0.7.3", + "rand 0.8.5", "sc-block-builder", "sc-client-api", "sc-consensus", @@ -5611,7 +6121,7 @@ dependencies = [ [[package]] name = "sc-network-bitswap" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "cid", "futures", @@ -5625,13 +6135,12 @@ dependencies = [ "sp-runtime", "thiserror", "unsigned-varint", - "void", ] [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "bitflags", @@ -5657,7 +6166,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ahash", "futures", @@ -5675,7 +6184,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "futures", @@ -5696,7 +6205,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "async-trait", @@ -5728,17 +6237,17 @@ dependencies = [ [[package]] name = "sc-network-transactions" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "futures", - "hex", "libp2p", "log", "parity-scale-codec", "pin-project", "sc-network-common", "sc-peerset", + "sc-utils", "sp-consensus", "sp-runtime", "substrate-prometheus-endpoint", @@ -5747,7 +6256,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "bytes", @@ -5761,7 +6270,7 @@ dependencies = [ "once_cell", "parity-scale-codec", "parking_lot 0.12.1", - "rand 0.7.3", + "rand 0.8.5", "sc-client-api", "sc-network-common", "sc-peerset", @@ -5777,7 +6286,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "futures", "libp2p", @@ -5790,7 +6299,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -5799,10 +6308,9 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "futures", - "hash-db", "jsonrpsee", "log", "parity-scale-codec", @@ -5829,13 +6337,10 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "futures", "jsonrpsee", - "log", "parity-scale-codec", - "parking_lot 0.12.1", "sc-chain-spec", "sc-transaction-pool-api", "scale-info", @@ -5844,7 +6349,6 @@ dependencies = [ "sp-core", "sp-rpc", "sp-runtime", - "sp-tracing", "sp-version", "thiserror", ] @@ -5852,9 +6356,8 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "futures", "http", "jsonrpsee", "log", @@ -5868,39 +6371,45 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ + "array-bytes", "futures", + "futures-util", "hex", "jsonrpsee", + "log", "parity-scale-codec", + "parking_lot 0.12.1", "sc-chain-spec", + "sc-client-api", "sc-transaction-pool-api", "serde", "sp-api", "sp-blockchain", "sp-core", "sp-runtime", + "sp-version", "thiserror", + "tokio-stream", ] [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "directories", "exit-future", "futures", "futures-timer", - "hash-db", "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.1", "pin-project", - "rand 0.7.3", + "rand 0.8.5", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -5928,19 +6437,15 @@ dependencies = [ "serde", "serde_json", "sp-api", - "sp-application-crypto", - "sp-block-builder", "sp-blockchain", "sp-consensus", "sp-core", "sp-externalities", - "sp-inherents", "sp-keystore", "sp-runtime", "sp-session", "sp-state-machine", "sp-storage", - "sp-tracing", "sp-transaction-pool", "sp-transaction-storage-proof", "sp-trie", @@ -5957,25 +6462,24 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "log", "parity-scale-codec", "parking_lot 0.12.1", - "sc-client-api", "sp-core", ] [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "futures", "libc", "log", - "rand 0.7.3", - "rand_pcg 0.2.1", + "rand 0.8.5", + "rand_pcg", "regex", "sc-telemetry", "serde", @@ -5988,7 +6492,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "chrono", "futures", @@ -5996,7 +6500,8 @@ dependencies = [ "log", "parking_lot 0.12.1", "pin-project", - "rand 0.7.3", + "rand 0.8.5", + "sc-utils", "serde", "serde_json", "thiserror", @@ -6006,7 +6511,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ansi_term", "atty", @@ -6037,7 +6542,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -6048,7 +6553,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -6074,7 +6579,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -6088,8 +6593,9 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ + "backtrace", "futures", "futures-timer", "lazy_static", @@ -6126,12 +6632,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -6164,6 +6669,16 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "sct" version = "0.7.0" @@ -6174,6 +6689,18 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sdp" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d22a5ef407871893fd72b4562ee15e4742269b173959db4b8df6f538c414e13" +dependencies = [ + "rand 0.8.5", + "substring", + "thiserror", + "url", +] + [[package]] name = "sec1" version = "0.3.0" @@ -6190,9 +6717,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9512ffd81e3a3503ed401f79c33168b9148c75038956039166cd750eaa037c3" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" dependencies = [ "secp256k1-sys", ] @@ -6217,9 +6744,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ "bitflags", "core-foundation", @@ -6230,9 +6757,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" dependencies = [ "core-foundation-sys", "libc", @@ -6293,24 +6820,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" dependencies = [ "itoa", "ryu", "serde", ] -[[package]] -name = "serde_nanos" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e44969a61f5d316be20a42ff97816efb3b407a924d06824c3d8a49fa8450de0e" -dependencies = [ - "serde", -] - [[package]] name = "sha-1" version = "0.9.8" @@ -6324,17 +6842,6 @@ dependencies = [ "opaque-debug 0.3.0", ] -[[package]] -name = "sha1" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.6", -] - [[package]] name = "sha2" version = "0.8.2" @@ -6398,9 +6905,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] @@ -6456,14 +6963,14 @@ checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "snow" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" +checksum = "12ba5f4d4ff12bdb6a169ed51b7c48c0e0ac4b0b4b31012b2571e97d78d3201d" dependencies = [ - "aes-gcm", + "aes-gcm 0.9.4", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0-pre.5", + "curve25519-dalek 4.0.0-rc.0", "rand_core 0.6.4", "ring", "rustc_version 0.4.0", @@ -6487,7 +6994,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ - "base64", + "base64 0.13.1", "bytes", "flate2", "futures", @@ -6501,7 +7008,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "hash-db", "log", @@ -6519,7 +7026,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "blake2", "proc-macro-crate", @@ -6531,7 +7038,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "scale-info", @@ -6544,14 +7051,13 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "integer-sqrt", "num-traits", "parity-scale-codec", "scale-info", "serde", - "sp-debug-derive", "sp-std", "static_assertions", ] @@ -6559,7 +7065,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "parity-scale-codec", @@ -6571,7 +7077,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "sp-api", @@ -6583,7 +7089,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "futures", "log", @@ -6601,11 +7107,10 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", - "futures-timer", "log", "parity-scale-codec", "sp-core", @@ -6620,7 +7125,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "parity-scale-codec", @@ -6638,13 +7143,11 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "scale-info", "serde", - "sp-arithmetic", - "sp-runtime", "sp-std", "sp-timestamp", ] @@ -6652,13 +7155,12 @@ dependencies = [ [[package]] name = "sp-core" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "array-bytes", "base58", "bitflags", "blake2", - "byteorder", "dyn-clonable", "ed25519-zebra", "futures", @@ -6669,11 +7171,10 @@ dependencies = [ "libsecp256k1", "log", "merlin", - "num-traits", "parity-scale-codec", "parking_lot 0.12.1", "primitive-types", - "rand 0.7.3", + "rand 0.8.5", "regex", "scale-info", "schnorrkel", @@ -6690,14 +7191,13 @@ dependencies = [ "substrate-bip39", "thiserror", "tiny-bip39", - "wasmi", "zeroize", ] [[package]] name = "sp-core-hashing" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "blake2", "byteorder", @@ -6711,7 +7211,7 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "proc-macro2", "quote", @@ -6722,7 +7222,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -6731,7 +7231,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "proc-macro2", "quote", @@ -6741,7 +7241,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "environmental", "parity-scale-codec", @@ -6752,7 +7252,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "finality-grandpa", "log", @@ -6770,7 +7270,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -6784,16 +7284,15 @@ dependencies = [ [[package]] name = "sp-io" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "bytes", + "ed25519", "ed25519-dalek", "futures", - "hash-db", "libsecp256k1", "log", "parity-scale-codec", - "parking_lot 0.12.1", "secp256k1", "sp-core", "sp-externalities", @@ -6803,7 +7302,6 @@ dependencies = [ "sp-std", "sp-tracing", "sp-trie", - "sp-wasm-interface", "tracing", "tracing-core", ] @@ -6811,7 +7309,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "lazy_static", "sp-core", @@ -6822,7 +7320,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures", @@ -6839,7 +7337,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "thiserror", "zstd", @@ -6848,7 +7346,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "sp-api", "sp-core", @@ -6858,7 +7356,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "backtrace", "lazy_static", @@ -6868,7 +7366,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "rustc-hash", "serde", @@ -6878,7 +7376,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "either", "hash256-std-hasher", @@ -6886,7 +7384,7 @@ dependencies = [ "log", "parity-scale-codec", "paste", - "rand 0.7.3", + "rand 0.8.5", "scale-info", "serde", "sp-application-crypto", @@ -6900,7 +7398,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -6918,7 +7416,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "Inflector", "proc-macro-crate", @@ -6930,7 +7428,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "scale-info", @@ -6944,7 +7442,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "scale-info", @@ -6956,14 +7454,13 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.13.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "hash-db", "log", - "num-traits", "parity-scale-codec", "parking_lot 0.12.1", - "rand 0.7.3", + "rand 0.8.5", "smallvec", "sp-core", "sp-externalities", @@ -6972,18 +7469,17 @@ dependencies = [ "sp-trie", "thiserror", "tracing", - "trie-root", ] [[package]] name = "sp-std" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" [[package]] name = "sp-storage" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "impl-serde", "parity-scale-codec", @@ -6996,13 +7492,12 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "futures-timer", "log", "parity-scale-codec", - "sp-api", "sp-inherents", "sp-runtime", "sp-std", @@ -7012,7 +7507,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "6.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "sp-std", @@ -7024,7 +7519,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "sp-api", "sp-runtime", @@ -7033,7 +7528,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "log", @@ -7049,7 +7544,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ahash", "hash-db", @@ -7072,7 +7567,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "impl-serde", "parity-scale-codec", @@ -7089,7 +7584,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -7100,7 +7595,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "7.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "impl-trait-for-tuples", "log", @@ -7113,9 +7608,8 @@ dependencies = [ [[package]] name = "sp-weights" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "impl-trait-for-tuples", "parity-scale-codec", "scale-info", "serde", @@ -7144,9 +7638,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.36.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d92659e7d18d82b803824a9ba5a6022cff101c3491d027c1c1d8d30e749284" +checksum = "e40c020d72bc0a9c5660bb71e4a6fdef081493583062c474740a7d59f55f0e7b" dependencies = [ "Inflector", "num-format", @@ -7238,6 +7732,25 @@ dependencies = [ "syn", ] +[[package]] +name = "stun" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e94b1ec00bad60e6410e058b52f1c66de3dc5fe4d62d09b3e52bb7d3b73e25" +dependencies = [ + "base64 0.13.1", + "crc", + "lazy_static", + "md-5", + "rand 0.8.5", + "ring", + "subtle", + "thiserror", + "tokio", + "url", + "webrtc-util", +] + [[package]] name = "substrate-bip39" version = "0.4.4" @@ -7254,7 +7767,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "platforms 2.0.0", ] @@ -7262,17 +7775,15 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "frame-system-rpc-runtime-api", "futures", "jsonrpsee", "log", "parity-scale-codec", - "sc-client-api", "sc-rpc-api", "sc-transaction-pool-api", - "serde_json", "sp-api", "sp-block-builder", "sp-blockchain", @@ -7283,9 +7794,8 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ - "futures-util", "hyper", "log", "prometheus", @@ -7296,7 +7806,7 @@ dependencies = [ [[package]] name = "substrate-rpc-client" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "async-trait", "jsonrpsee", @@ -7309,7 +7819,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "ansi_term", "build-helper", @@ -7323,6 +7833,15 @@ dependencies = [ "wasm-opt", ] +[[package]] +name = "substring" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ee6433ecef213b2e72f587ef64a2f5943e7cd16fbd82dbe8bc07486c534c86" +dependencies = [ + "autocfg", +] + [[package]] name = "subtle" version = "2.4.1" @@ -7381,9 +7900,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9410d0f6853b1d94f0e519fb95df60f29d2c1eff2d921ffdf01a4c8a3b54f12d" +checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" [[package]] name = "tempfile" @@ -7401,9 +7920,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] @@ -7442,10 +7961,11 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ + "cfg-if", "once_cell", ] @@ -7460,12 +7980,11 @@ dependencies = [ [[package]] name = "tikv-jemalloc-sys" -version = "0.5.2+5.3.0-patched" +version = "0.5.3+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec45c14da997d0925c7835883e4d5c181f196fa142f8c19d7643d1e9af2592c3" +checksum = "a678df20055b43e57ef8cddde41cdfda9a3c1a060b67f4c5836dfb1d78543ba8" dependencies = [ "cc", - "fs_extra", "libc", ] @@ -7480,25 +7999,62 @@ dependencies = [ "winapi", ] +[[package]] +name = "time" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] + [[package]] name = "tiny-bip39" -version = "0.8.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc59cb9dfc85bb312c3a78fd6aa8a8582e310b0fa885d5bb877f6dcc601839d" +checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" dependencies = [ "anyhow", - "hmac 0.8.1", + "hmac 0.12.1", "once_cell", - "pbkdf2 0.4.0", - "rand 0.7.3", + "pbkdf2 0.11.0", + "rand 0.8.5", "rustc-hash", - "sha2 0.9.9", + "sha2 0.10.6", "thiserror", "unicode-normalization", "wasm-bindgen", "zeroize", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -7510,15 +8066,15 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.23.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" dependencies = [ "autocfg", "bytes", @@ -7551,9 +8107,9 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls", + "rustls 0.20.8", "tokio", - "webpki", + "webpki 0.22.0", ] [[package]] @@ -7565,13 +8121,14 @@ dependencies = [ "futures-core", "pin-project-lite 0.2.9", "tokio", + "tokio-util", ] [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ "bytes", "futures-core", @@ -7584,9 +8141,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] @@ -7760,6 +8317,7 @@ dependencies = [ "lazy_static", "rand 0.8.5", "smallvec", + "socket2", "thiserror", "tinyvec", "tokio", @@ -7789,14 +8347,14 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.36#cb4f2491b00af7d7817f3a54209c26b20faa1f51" +source = "git+https://github.com/paritytech/substrate.git?branch=polkadot-v0.9.37#f38bd6671d460293c93062cc1e4fe9e9e490cb29" dependencies = [ "clap", "frame-remote-externalities", @@ -7804,11 +8362,11 @@ dependencies = [ "hex", "log", "parity-scale-codec", - "sc-chain-spec", "sc-cli", "sc-executor", "sc-service", "serde", + "serde_json", "sp-api", "sp-core", "sp-debug-derive", @@ -7830,6 +8388,25 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" +[[package]] +name = "turn" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4712ee30d123ec7ae26d1e1b218395a16c87cdbaf4b3925d170d684af62ea5e8" +dependencies = [ + "async-trait", + "base64 0.13.1", + "futures", + "log", + "md-5", + "rand 0.8.5", + "ring", + "stun", + "thiserror", + "tokio", + "webrtc-util", +] + [[package]] name = "twox-hash" version = "1.6.3" @@ -7868,9 +8445,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" [[package]] name = "unicode-ident" @@ -7938,6 +8515,15 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "uuid" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +dependencies = [ + "getrandom 0.2.8", +] + [[package]] name = "valuable" version = "0.1.0" @@ -7962,6 +8548,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +[[package]] +name = "waitgroup" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1f50000a783467e6c0200f9d10642f4bc424e39efc1b770203e88b488f79292" +dependencies = [ + "atomic-waker", +] + [[package]] name = "waker-fn" version = "1.1.0" @@ -8009,9 +8604,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -8019,9 +8614,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", @@ -8034,9 +8629,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" dependencies = [ "cfg-if", "js-sys", @@ -8046,9 +8641,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8056,9 +8651,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -8069,9 +8664,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "wasm-instrument" @@ -8224,7 +8819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcd849399d17d2270141cfe47fa0d91ee52d5f8ea9b98cf7ddde0d53e5f79882" dependencies = [ "anyhow", - "base64", + "base64 0.13.1", "bincode", "directories-next", "file-per-thread-logger", @@ -8352,14 +8947,24 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "webpki" version = "0.22.0" @@ -8376,7 +8981,219 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki", + "webpki 0.22.0", +] + +[[package]] +name = "webrtc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3bc9049bdb2cea52f5fd4f6f728184225bdb867ed0dc2410eab6df5bdd67bb" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "hex", + "interceptor", + "lazy_static", + "log", + "rand 0.8.5", + "rcgen 0.9.3", + "regex", + "ring", + "rtcp", + "rtp", + "rustls 0.19.1", + "sdp", + "serde", + "serde_json", + "sha2 0.10.6", + "stun", + "thiserror", + "time 0.3.17", + "tokio", + "turn", + "url", + "waitgroup", + "webrtc-data", + "webrtc-dtls", + "webrtc-ice", + "webrtc-mdns", + "webrtc-media", + "webrtc-sctp", + "webrtc-srtp", + "webrtc-util", +] + +[[package]] +name = "webrtc-data" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef36a4d12baa6e842582fe9ec16a57184ba35e1a09308307b67d43ec8883100" +dependencies = [ + "bytes", + "derive_builder", + "log", + "thiserror", + "tokio", + "webrtc-sctp", + "webrtc-util", +] + +[[package]] +name = "webrtc-dtls" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7021987ae0a2ed6c8cd33f68e98e49bb6e74ffe9543310267b48a1bbe3900e5f" +dependencies = [ + "aes 0.6.0", + "aes-gcm 0.8.0", + "async-trait", + "bincode", + "block-modes", + "byteorder", + "ccm", + "curve25519-dalek 3.2.0", + "der-parser 8.1.0", + "elliptic-curve", + "hkdf", + "hmac 0.10.1", + "log", + "oid-registry 0.6.1", + "p256", + "p384", + "rand 0.8.5", + "rand_core 0.6.4", + "rcgen 0.9.3", + "ring", + "rustls 0.19.1", + "sec1", + "serde", + "sha-1", + "sha2 0.9.9", + "signature", + "subtle", + "thiserror", + "tokio", + "webpki 0.21.4", + "webrtc-util", + "x25519-dalek 2.0.0-pre.1", + "x509-parser 0.13.2", +] + +[[package]] +name = "webrtc-ice" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465a03cc11e9a7d7b4f9f99870558fe37a102b65b93f8045392fef7c67b39e80" +dependencies = [ + "arc-swap", + "async-trait", + "crc", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "stun", + "thiserror", + "tokio", + "turn", + "url", + "uuid", + "waitgroup", + "webrtc-mdns", + "webrtc-util", +] + +[[package]] +name = "webrtc-mdns" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" +dependencies = [ + "log", + "socket2", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-media" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a3c157a040324e5049bcbd644ffc9079e6738fa2cfab2bcff64e5cc4c00d7" +dependencies = [ + "byteorder", + "bytes", + "derive_builder", + "displaydoc", + "rand 0.8.5", + "rtp", + "thiserror", + "webrtc-util", +] + +[[package]] +name = "webrtc-sctp" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d47adcd9427eb3ede33d5a7f3424038f63c965491beafcc20bc650a2f6679c0" +dependencies = [ + "arc-swap", + "async-trait", + "bytes", + "crc", + "log", + "rand 0.8.5", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-srtp" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6183edc4c1c6c0175f8812eefdce84dfa0aea9c3ece71c2bf6ddd3c964de3da5" +dependencies = [ + "aead 0.4.3", + "aes 0.7.5", + "aes-gcm 0.9.4", + "async-trait", + "byteorder", + "bytes", + "ctr 0.8.0", + "hmac 0.11.0", + "log", + "rtcp", + "rtp", + "sha-1", + "subtle", + "thiserror", + "tokio", + "webrtc-util", +] + +[[package]] +name = "webrtc-util" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f1db1727772c05cf7a2cfece52c3aca8045ca1e176cd517d323489aa3c6d87" +dependencies = [ + "async-trait", + "bitflags", + "bytes", + "cc", + "ipnet", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "thiserror", + "tokio", + "winapi", ] [[package]] @@ -8390,9 +9207,9 @@ dependencies = [ [[package]] name = "which" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", "libc", @@ -8469,19 +9286,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.1", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" @@ -8497,9 +9338,9 @@ checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" @@ -8515,9 +9356,9 @@ checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" @@ -8533,9 +9374,9 @@ checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" @@ -8551,15 +9392,15 @@ checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" @@ -8575,9 +9416,9 @@ checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "winreg" @@ -8608,6 +9449,54 @@ dependencies = [ "zeroize", ] +[[package]] +name = "x25519-dalek" +version = "2.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df" +dependencies = [ + "curve25519-dalek 3.2.0", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "x509-parser" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c" +dependencies = [ + "asn1-rs 0.3.1", + "base64 0.13.1", + "data-encoding", + "der-parser 7.0.0", + "lazy_static", + "nom", + "oid-registry 0.4.0", + "ring", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs 0.5.1", + "base64 0.13.1", + "data-encoding", + "der-parser 8.1.0", + "lazy_static", + "nom", + "oid-registry 0.6.1", + "rusticata-macros", + "thiserror", + "time 0.3.17", +] + [[package]] name = "yamux" version = "0.10.2" @@ -8622,6 +9511,15 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "yasna" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4" +dependencies = [ + "time 0.3.17", +] + [[package]] name = "zeroize" version = "1.5.7" @@ -8664,10 +9562,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.4+zstd.1.5.2" +version = "2.0.7+zstd.1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0" +checksum = "94509c3ba2fe55294d752b79842c530ccfab760192521df74a081a78d2b3c7f5" dependencies = [ "cc", "libc", + "pkg-config", ] diff --git a/benchmarking/frame-weight-template.hbs b/benchmarking/frame-weight-template.hbs new file mode 100644 index 00000000..acb8718d --- /dev/null +++ b/benchmarking/frame-weight-template.hbs @@ -0,0 +1,107 @@ +{{header}} +//! Autogenerated weights for {{pallet}} +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} +//! DATE: {{date}}, STEPS: `{{cmd.steps}}`, REPEAT: {{cmd.repeat}}, LOW RANGE: `{{cmd.lowest_range_values}}`, HIGH RANGE: `{{cmd.highest_range_values}}` +//! HOSTNAME: `{{hostname}}`, CPU: `{{cpuname}}` +//! EXECUTION: {{cmd.execution}}, WASM-EXECUTION: {{cmd.wasm_execution}}, CHAIN: {{cmd.chain}}, DB CACHE: {{cmd.db_cache}} + +// Executed Command: +{{#each args as |arg|}} +// {{arg}} +{{/each}} + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for {{pallet}}. +pub trait WeightInfo { + {{#each benchmarks as |benchmark|}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{c.name}}: u32, {{/each~}} + ) -> Weight; + {{/each}} +} + +/// Weights for {{pallet}} using the Substrate node and recommended hardware. +pub struct SubstrateWeight(PhantomData); +{{#if (eq pallet "frame_system")}} +impl WeightInfo for SubstrateWeight { +{{else}} +impl WeightInfo for SubstrateWeight { +{{/if}} + {{#each benchmarks as |benchmark|}} + {{#each benchmark.comments as |comment|}} + // {{comment}} + {{/each}} + {{#each benchmark.component_ranges as |range|}} + /// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. + {{/each}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + // Minimum execution time: {{underscore benchmark.min_execution_time}} nanoseconds. + Weight::from_ref_time({{underscore benchmark.base_weight}}) + {{#each benchmark.component_weight as |cw|}} + // Standard Error: {{underscore cw.error}} + .saturating_add(Weight::from_ref_time({{underscore cw.slope}}).saturating_mul({{cw.name}}.into())) + {{/each}} + {{#if (ne benchmark.base_reads "0")}} + .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}})) + {{/if}} + {{#each benchmark.component_reads as |cr|}} + .saturating_add(T::DbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) + {{/each}} + {{#if (ne benchmark.base_writes "0")}} + .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}})) + {{/if}} + {{#each benchmark.component_writes as |cw|}} + .saturating_add(T::DbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) + {{/each}} + } + {{/each}} +} + +// For backwards compatibility and tests +impl WeightInfo for () { + {{#each benchmarks as |benchmark|}} + {{#each benchmark.comments as |comment|}} + // {{comment}} + {{/each}} + {{#each benchmark.component_ranges as |range|}} + /// The range of component `{{range.name}}` is `[{{range.min}}, {{range.max}}]`. + {{/each}} + fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + // Minimum execution time: {{underscore benchmark.min_execution_time}} nanoseconds. + Weight::from_ref_time({{underscore benchmark.base_weight}}) + {{#each benchmark.component_weight as |cw|}} + // Standard Error: {{underscore cw.error}} + .saturating_add(Weight::from_ref_time({{underscore cw.slope}}).saturating_mul({{cw.name}}.into())) + {{/each}} + {{#if (ne benchmark.base_reads "0")}} + .saturating_add(RocksDbWeight::get().reads({{benchmark.base_reads}})) + {{/if}} + {{#each benchmark.component_reads as |cr|}} + .saturating_add(RocksDbWeight::get().reads(({{cr.slope}}_u64).saturating_mul({{cr.name}}.into()))) + {{/each}} + {{#if (ne benchmark.base_writes "0")}} + .saturating_add(RocksDbWeight::get().writes({{benchmark.base_writes}})) + {{/if}} + {{#each benchmark.component_writes as |cw|}} + .saturating_add(RocksDbWeight::get().writes(({{cw.slope}}_u64).saturating_mul({{cw.name}}.into()))) + {{/each}} + } + {{/each}} +} \ No newline at end of file diff --git a/node/Cargo.toml b/node/Cargo.toml index dea8996e..9ed87f0c 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -20,43 +20,43 @@ targets = ["x86_64-unknown-linux-gnu"] clap = { version = "4.0.9", features = ["derive"] } futures = { version = "0.3.21", features = ["thread-pool"]} -sc-cli = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-executor = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-service = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-telemetry = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-keystore = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-transaction-pool = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-finality-grandpa = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-finality-grandpa = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-client-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-io = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-timestamp = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-inherents = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-keyring = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sc-cli = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-executor = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-service = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-telemetry = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-keystore = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-transaction-pool = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-finality-grandpa = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-finality-grandpa = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-client-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-io = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-timestamp = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-inherents = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-keyring = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # These dependencies are used for the node template"s RPCs jsonrpsee = { version = "0.16.2", features = ["server"] } -sc-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-rpc-api = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-block-builder = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sc-basic-authorship = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -substrate-frame-rpc-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-transaction-payment-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sc-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-rpc-api = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-block-builder = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sc-basic-authorship = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +substrate-frame-rpc-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-transaction-payment-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # These dependencies are used for runtime benchmarking -frame-benchmarking = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking-cli = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +frame-benchmarking = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking-cli = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Local Dependencies rmrk-substrate-runtime = { version = "4.0.0-dev", path = "../runtime" } @@ -67,10 +67,10 @@ pallet-rmrk-core = { version = "0.0.1", path = "../pallets/rmrk-core" } pallet-rmrk-equip = { version = "0.0.1", path = "../pallets/rmrk-equip" } # CLI-specific dependencies -try-runtime-cli = { version = "0.10.0-dev", optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +try-runtime-cli = { version = "0.10.0-dev", optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [build-dependencies] -substrate-build-script-utils = { version = "3.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +substrate-build-script-utils = { version = "3.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = [] diff --git a/pallets/rmrk-core/Cargo.toml b/pallets/rmrk-core/Cargo.toml index f278ac60..5346b1ae 100644 --- a/pallets/rmrk-core/Cargo.toml +++ b/pallets/rmrk-core/Cargo.toml @@ -13,28 +13,28 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] serde = { version = "1.0.111", default-features = false, features = ["derive"] } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive", ] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } -pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Local Dependencies rmrk-traits = { default-features = false, version = "0.0.1", path = "../../traits" } [dev-dependencies] -sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/pallets/rmrk-core/src/benchmarking.rs b/pallets/rmrk-core/src/benchmarking.rs index 8264e29b..e1de66cb 100644 --- a/pallets/rmrk-core/src/benchmarking.rs +++ b/pallets/rmrk-core/src/benchmarking.rs @@ -306,7 +306,6 @@ benchmarks! { set_properties::(owner.clone(), collection_id, Some(nft_id), k); mint_and_send_to_parent::(owner.clone(), collection_id, n); - RmrkCore::::set_lock((collection_id, nft_id), true); }: _(RawOrigin::Signed(owner.clone()), collection_id, nft_id) verify { assert_last_event::(Event::NFTBurned { owner, collection_id, nft_id }.into()); diff --git a/pallets/rmrk-core/src/functions.rs b/pallets/rmrk-core/src/functions.rs index f688f439..fc55b93d 100644 --- a/pallets/rmrk-core/src/functions.rs +++ b/pallets/rmrk-core/src/functions.rs @@ -569,6 +569,9 @@ impl nft_id: T::ItemId, budget: &dyn Budget, ) -> DispatchResultWithPostInfo { + // Check Lock to prevent locked NFTs from being burned. Owner must unlock the NFT before + // burning. + ensure!(!Pallet::::is_locked(collection_id, nft_id), pallet_uniques::Error::::Locked); // Remove self from parent's Children storage if let Some(nft) = Self::nfts(collection_id, nft_id) { if let AccountIdOrCollectionNftTuple::CollectionAndNftTuple(parent_col, parent_nft) = @@ -582,8 +585,6 @@ impl // Remove all of the properties of the NFT Self::do_remove_properties(collection_id, Some(nft_id), T::PropertiesLimit::get())?; - // Remove the lock from the NFT if it was locked - Lock::::remove((&collection_id, nft_id)); let _multi_removal_results = Resources::::clear_prefix( (collection_id, nft_id), @@ -637,12 +638,6 @@ impl let mut sending_nft = Nfts::::get(collection_id, nft_id).ok_or(Error::::NoAvailableNftId)?; - // Defaults to true, but can be implemented downstream for custom logic - ensure!( - T::TransferHooks::pre_check(&sender, &collection_id, &nft_id), - Error::::FailedTransferHooksPreCheck - ); - // Check NFT is transferable Self::check_is_transferable(&sending_nft)?; @@ -683,6 +678,11 @@ impl }, }; + // Defaults to true, but can be implemented downstream for custom logic + ensure!( + T::TransferHooks::pre_check(&sender, &new_owner_account, &collection_id, &nft_id), + Error::::FailedTransferHooksPreCheck + ); sending_nft.owner = new_owner.clone(); if approval_required { diff --git a/pallets/rmrk-core/src/lib.rs b/pallets/rmrk-core/src/lib.rs index 079f8b91..61e250e3 100644 --- a/pallets/rmrk-core/src/lib.rs +++ b/pallets/rmrk-core/src/lib.rs @@ -154,6 +154,7 @@ pub mod pallet { #[cfg(feature = "runtime-benchmarks")] type Helper: BenchmarkHelper; + /// Transfer hooks to be implemented downstream. type TransferHooks: TransferHooks; } diff --git a/pallets/rmrk-core/src/tests.rs b/pallets/rmrk-core/src/tests.rs index 629e4f8a..ebee6f28 100644 --- a/pallets/rmrk-core/src/tests.rs +++ b/pallets/rmrk-core/src/tests.rs @@ -3,9 +3,7 @@ // License: Apache 2.0 modified by RMRK, see LICENSE.md use frame_support::{assert_noop, assert_ok}; -// use sp_runtime::AccountId32; use sp_runtime::Permill; -// use crate::types::ClassType; use super::*; use mock::{RuntimeEvent as MockEvent, RuntimeOrigin as Origin, *}; diff --git a/pallets/rmrk-core/src/weights.rs b/pallets/rmrk-core/src/weights.rs index bea71b3e..69f55520 100644 --- a/pallets/rmrk-core/src/weights.rs +++ b/pallets/rmrk-core/src/weights.rs @@ -1,9 +1,9 @@ -//! Autogenerated weights for `pallet_rmrk_core` +//! Autogenerated weights for pallet_rmrk_core //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2023-01-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `Sergejs-MacBook-Air.local`, CPU: `` +//! DATE: 2023-02-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `Joshuas-MacBook-Pro.local`, CPU: `` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 // Executed Command: @@ -16,51 +16,57 @@ // --wasm-execution=compiled // --pallet // pallet_rmrk_core -// --extrinsic=* +// --extrinsic +// * // --steps // 50 // --repeat // 20 // --output // pallets/rmrk-core/src/weights.rs +// --template +// ./benchmarking/frame-weight-template.hbs +// --detailed-log-output #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::Weight}; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; +/// Weight functions needed for pallet_rmrk_core. pub trait WeightInfo { fn create_collection() -> Weight; fn mint_nft() -> Weight; - fn mint_nft_directly_to_nft(n: u32) -> Weight; + fn mint_nft_directly_to_nft(n: u32, ) -> Weight; fn destroy_collection() -> Weight; - fn send_to_account(n: u32) -> Weight; - fn send_to_nft(n: u32) -> Weight; - fn burn_nft(n: u32, k: u32) -> Weight; - fn accept_nft(n: u32) -> Weight; - fn reject_nft(n: u32) -> Weight; + fn send_to_account(n: u32, ) -> Weight; + fn send_to_nft(n: u32, ) -> Weight; + fn burn_nft(n: u32, k: u32, ) -> Weight; + fn accept_nft(n: u32, ) -> Weight; + fn reject_nft(n: u32, ) -> Weight; fn change_collection_issuer() -> Weight; fn set_property() -> Weight; fn lock_collection() -> Weight; - fn add_basic_resource(n: u32) -> Weight; - fn add_composable_resource(n: u32) -> Weight; - fn add_slot_resource(n: u32) -> Weight; - fn accept_resource(n: u32) -> Weight; - fn remove_resource(n: u32) -> Weight; - fn accept_resource_removal(n: u32) -> Weight; - fn set_priority(n: u32, k: u32) -> Weight; fn replace_resource() -> Weight; + fn add_basic_resource(n: u32, ) -> Weight; + fn add_composable_resource(n: u32, ) -> Weight; + fn add_slot_resource(n: u32, ) -> Weight; + fn accept_resource(n: u32, ) -> Weight; + fn remove_resource(n: u32, ) -> Weight; + fn accept_resource_removal(n: u32, ) -> Weight; + fn set_priority(n: u32, k: u32, ) -> Weight; } +/// Weights for pallet_rmrk_core using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: Uniques Class (r:1 w:1) // Storage: RmrkCore Collections (r:0 w:1) // Storage: Uniques ClassAccount (r:0 w:1) fn create_collection() -> Weight { - // Minimum execution time: 31_000 nanoseconds. + // Minimum execution time: 32_000 nanoseconds. Weight::from_ref_time(32_000_000) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(3)) @@ -72,8 +78,8 @@ impl WeightInfo for SubstrateWeight { // Storage: Uniques CollectionMaxSupply (r:1 w:0) // Storage: Uniques Account (r:0 w:1) fn mint_nft() -> Weight { - // Minimum execution time: 47_000 nanoseconds. - Weight::from_ref_time(48_000_000) + // Minimum execution time: 48_000 nanoseconds. + Weight::from_ref_time(49_000_000) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().writes(5)) } @@ -86,10 +92,10 @@ impl WeightInfo for SubstrateWeight { // Storage: Uniques Account (r:0 w:1) /// The range of component `n` is `[1, 19]`. fn mint_nft_directly_to_nft(n: u32, ) -> Weight { - // Minimum execution time: 52_000 nanoseconds. - Weight::from_ref_time(49_914_677) - // Standard Error: 32_019 - .saturating_add(Weight::from_ref_time(3_338_584).saturating_mul(n.into())) + // Minimum execution time: 53_000 nanoseconds. + Weight::from_ref_time(49_464_606) + // Standard Error: 41_399 + .saturating_add(Weight::from_ref_time(3_668_633).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(6)) @@ -101,8 +107,8 @@ impl WeightInfo for SubstrateWeight { // Storage: Uniques ClassMetadataOf (r:0 w:1) // Storage: Uniques CollectionMaxSupply (r:0 w:1) fn destroy_collection() -> Weight { - // Minimum execution time: 50_000 nanoseconds. - Weight::from_ref_time(50_000_000) + // Minimum execution time: 51_000 nanoseconds. + Weight::from_ref_time(52_000_000) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(5)) } @@ -115,10 +121,10 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Children (r:0 w:1) /// The range of component `n` is `[1, 20]`. fn send_to_account(n: u32, ) -> Weight { - // Minimum execution time: 41_000 nanoseconds. - Weight::from_ref_time(40_529_053) - // Standard Error: 26_390 - .saturating_add(Weight::from_ref_time(3_241_611).saturating_mul(n.into())) + // Minimum execution time: 42_000 nanoseconds. + Weight::from_ref_time(40_742_197) + // Standard Error: 29_929 + .saturating_add(Weight::from_ref_time(3_493_593).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(6)) @@ -132,63 +138,63 @@ impl WeightInfo for SubstrateWeight { // Storage: Uniques ItemPriceOf (r:0 w:1) /// The range of component `n` is `[1, 20]`. fn send_to_nft(n: u32, ) -> Weight { - // Minimum execution time: 50_000 nanoseconds. - Weight::from_ref_time(49_328_797) - // Standard Error: 25_787 - .saturating_add(Weight::from_ref_time(3_267_385).saturating_mul(n.into())) + // Minimum execution time: 52_000 nanoseconds. + Weight::from_ref_time(47_909_134) + // Standard Error: 47_935 + .saturating_add(Weight::from_ref_time(3_837_012).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(5)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(7)) } // Storage: Uniques Asset (r:1 w:1) + // Storage: RmrkCore Lock (r:1 w:0) // Storage: RmrkCore Nfts (r:1 w:1) // Storage: RmrkCore Children (r:1 w:0) // Storage: RmrkCore Collections (r:1 w:1) // Storage: Uniques Class (r:1 w:1) // Storage: RmrkCore Properties (r:0 w:25) - // Storage: RmrkCore Lock (r:0 w:1) // Storage: Uniques Account (r:0 w:1) // Storage: Uniques ItemPriceOf (r:0 w:1) /// The range of component `n` is `[1, 20]`. /// The range of component `k` is `[0, 25]`. fn burn_nft(n: u32, k: u32, ) -> Weight { - // Minimum execution time: 88_000 nanoseconds. - Weight::from_ref_time(89_000_000) - // Standard Error: 146_384 - .saturating_add(Weight::from_ref_time(76_768_378).saturating_mul(n.into())) + // Minimum execution time: 92_000 nanoseconds. + Weight::from_ref_time(93_000_000) + // Standard Error: 134_861 + .saturating_add(Weight::from_ref_time(79_020_250).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1)) - .saturating_add(T::DbWeight::get().reads((4_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().reads((5_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(1)) - .saturating_add(T::DbWeight::get().writes((6_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((5_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(k.into()))) } // Storage: Uniques Asset (r:2 w:0) // Storage: RmrkCore Nfts (r:1 w:1) /// The range of component `n` is `[1, 20]`. fn accept_nft(n: u32, ) -> Weight { - // Minimum execution time: 28_000 nanoseconds. - Weight::from_ref_time(29_279_807) - // Standard Error: 4_358 - .saturating_add(Weight::from_ref_time(188_641).saturating_mul(n.into())) + // Minimum execution time: 29_000 nanoseconds. + Weight::from_ref_time(30_155_284) + // Standard Error: 4_645 + .saturating_add(Weight::from_ref_time(176_718).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } // Storage: Uniques Asset (r:2 w:1) // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: RmrkCore Lock (r:1 w:0) // Storage: RmrkCore Children (r:2 w:1) // Storage: RmrkCore Collections (r:1 w:1) // Storage: Uniques Class (r:1 w:1) - // Storage: RmrkCore Lock (r:0 w:1) // Storage: Uniques Account (r:0 w:1) // Storage: Uniques ItemPriceOf (r:0 w:1) /// The range of component `n` is `[1, 20]`. fn reject_nft(n: u32, ) -> Weight { - // Minimum execution time: 79_000 nanoseconds. - Weight::from_ref_time(80_661_256) - // Standard Error: 4_919 - .saturating_add(Weight::from_ref_time(241_591).saturating_mul(n.into())) - .saturating_add(T::DbWeight::get().reads(6)) - .saturating_add(T::DbWeight::get().writes(8)) + // Minimum execution time: 82_000 nanoseconds. + Weight::from_ref_time(83_582_580) + // Standard Error: 9_510 + .saturating_add(Weight::from_ref_time(292_556).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(7)) + .saturating_add(T::DbWeight::get().writes(7)) } // Storage: RmrkCore Collections (r:1 w:1) // Storage: Uniques OwnershipAcceptance (r:1 w:1) @@ -196,8 +202,8 @@ impl WeightInfo for SubstrateWeight { // Storage: System Account (r:1 w:1) // Storage: Uniques ClassAccount (r:0 w:2) fn change_collection_issuer() -> Weight { - // Minimum execution time: 47_000 nanoseconds. - Weight::from_ref_time(48_000_000) + // Minimum execution time: 49_000 nanoseconds. + Weight::from_ref_time(50_000_000) .saturating_add(T::DbWeight::get().reads(4)) .saturating_add(T::DbWeight::get().writes(6)) } @@ -207,13 +213,13 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Properties (r:0 w:1) fn set_property() -> Weight { // Minimum execution time: 25_000 nanoseconds. - Weight::from_ref_time(25_000_000) + Weight::from_ref_time(26_000_000) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().writes(1)) } // Storage: RmrkCore Collections (r:1 w:1) fn lock_collection() -> Weight { - // Minimum execution time: 17_000 nanoseconds. + // Minimum execution time: 18_000 nanoseconds. Weight::from_ref_time(18_000_000) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) @@ -221,7 +227,7 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Resources (r:1 w:1) fn replace_resource() -> Weight { // Minimum execution time: 22_000 nanoseconds. - Weight::from_ref_time(22_000_000) + Weight::from_ref_time(23_000_000) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().writes(1)) } @@ -232,9 +238,9 @@ impl WeightInfo for SubstrateWeight { /// The range of component `n` is `[1, 20]`. fn add_basic_resource(n: u32, ) -> Weight { // Minimum execution time: 27_000 nanoseconds. - Weight::from_ref_time(25_278_509) - // Standard Error: 26_152 - .saturating_add(Weight::from_ref_time(3_137_474).saturating_mul(n.into())) + Weight::from_ref_time(26_424_910) + // Standard Error: 11_417 + .saturating_add(Weight::from_ref_time(3_156_396).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -246,10 +252,10 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore EquippableBases (r:0 w:1) /// The range of component `n` is `[1, 20]`. fn add_composable_resource(n: u32, ) -> Weight { - // Minimum execution time: 30_000 nanoseconds. - Weight::from_ref_time(27_984_467) - // Standard Error: 36_861 - .saturating_add(Weight::from_ref_time(3_241_071).saturating_mul(n.into())) + // Minimum execution time: 31_000 nanoseconds. + Weight::from_ref_time(28_988_129) + // Standard Error: 43_748 + .saturating_add(Weight::from_ref_time(3_347_891).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(2)) @@ -261,10 +267,10 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore EquippableSlots (r:0 w:1) /// The range of component `n` is `[1, 20]`. fn add_slot_resource(n: u32, ) -> Weight { - // Minimum execution time: 31_000 nanoseconds. - Weight::from_ref_time(29_855_362) - // Standard Error: 16_467 - .saturating_add(Weight::from_ref_time(3_125_612).saturating_mul(n.into())) + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(30_805_847) + // Standard Error: 18_329 + .saturating_add(Weight::from_ref_time(3_237_140).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(3)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(2)) @@ -274,10 +280,10 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Resources (r:1 w:1) /// The range of component `n` is `[1, 20]`. fn accept_resource(n: u32, ) -> Weight { - // Minimum execution time: 26_000 nanoseconds. - Weight::from_ref_time(25_260_173) - // Standard Error: 6_040 - .saturating_add(Weight::from_ref_time(3_004_573).saturating_mul(n.into())) + // Minimum execution time: 27_000 nanoseconds. + Weight::from_ref_time(25_515_466) + // Standard Error: 13_172 + .saturating_add(Weight::from_ref_time(3_123_805).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -288,9 +294,9 @@ impl WeightInfo for SubstrateWeight { /// The range of component `n` is `[1, 20]`. fn remove_resource(n: u32, ) -> Weight { // Minimum execution time: 27_000 nanoseconds. - Weight::from_ref_time(25_585_465) - // Standard Error: 15_199 - .saturating_add(Weight::from_ref_time(3_086_680).saturating_mul(n.into())) + Weight::from_ref_time(25_443_664) + // Standard Error: 32_316 + .saturating_add(Weight::from_ref_time(3_303_825).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(2)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -299,10 +305,10 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Resources (r:1 w:1) /// The range of component `n` is `[1, 20]`. fn accept_resource_removal(n: u32, ) -> Weight { - // Minimum execution time: 27_000 nanoseconds. - Weight::from_ref_time(25_169_054) - // Standard Error: 26_481 - .saturating_add(Weight::from_ref_time(3_114_864).saturating_mul(n.into())) + // Minimum execution time: 28_000 nanoseconds. + Weight::from_ref_time(26_191_651) + // Standard Error: 13_461 + .saturating_add(Weight::from_ref_time(3_141_950).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(1)) @@ -313,14 +319,285 @@ impl WeightInfo for SubstrateWeight { /// The range of component `n` is `[1, 25]`. /// The range of component `k` is `[1, 20]`. fn set_priority(n: u32, k: u32, ) -> Weight { - // Minimum execution time: 76_000 nanoseconds. - Weight::from_ref_time(15_555_098) - // Standard Error: 3_863 - .saturating_add(Weight::from_ref_time(2_826_170).saturating_mul(n.into())) - // Standard Error: 4_880 - .saturating_add(Weight::from_ref_time(2_985_272).saturating_mul(k.into())) + // Minimum execution time: 79_000 nanoseconds. + Weight::from_ref_time(16_820_776) + // Standard Error: 7_630 + .saturating_add(Weight::from_ref_time(2_838_456).saturating_mul(n.into())) + // Standard Error: 9_638 + .saturating_add(Weight::from_ref_time(3_072_070).saturating_mul(k.into())) .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(k.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) } } + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: Uniques Class (r:1 w:1) + // Storage: RmrkCore Collections (r:0 w:1) + // Storage: Uniques ClassAccount (r:0 w:1) + fn create_collection() -> Weight { + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(32_000_000) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().writes(3)) + } + // Storage: Uniques Class (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques Asset (r:1 w:1) + // Storage: Uniques CollectionMaxSupply (r:1 w:0) + // Storage: Uniques Account (r:0 w:1) + fn mint_nft() -> Weight { + // Minimum execution time: 48_000 nanoseconds. + Weight::from_ref_time(49_000_000) + .saturating_add(RocksDbWeight::get().reads(5)) + .saturating_add(RocksDbWeight::get().writes(5)) + } + // Storage: Uniques Class (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques Asset (r:2 w:1) + // Storage: Uniques CollectionMaxSupply (r:1 w:0) + // Storage: RmrkCore Children (r:0 w:1) + // Storage: Uniques Account (r:0 w:1) + /// The range of component `n` is `[1, 19]`. + fn mint_nft_directly_to_nft(n: u32, ) -> Weight { + // Minimum execution time: 53_000 nanoseconds. + Weight::from_ref_time(49_464_606) + // Standard Error: 41_399 + .saturating_add(Weight::from_ref_time(3_668_633).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(5)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(6)) + } + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques Class (r:1 w:1) + // Storage: Uniques Asset (r:1 w:0) + // Storage: Uniques ClassAccount (r:0 w:1) + // Storage: Uniques ClassMetadataOf (r:0 w:1) + // Storage: Uniques CollectionMaxSupply (r:0 w:1) + fn destroy_collection() -> Weight { + // Minimum execution time: 51_000 nanoseconds. + Weight::from_ref_time(52_000_000) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().writes(5)) + } + // Storage: Uniques Asset (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) + // Storage: RmrkCore Children (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + fn send_to_account(n: u32, ) -> Weight { + // Minimum execution time: 42_000 nanoseconds. + Weight::from_ref_time(40_742_197) + // Standard Error: 29_929 + .saturating_add(Weight::from_ref_time(3_493_593).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(6)) + } + // Storage: Uniques Asset (r:2 w:1) + // Storage: RmrkCore Nfts (r:2 w:1) + // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Children (r:0 w:1) + // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + fn send_to_nft(n: u32, ) -> Weight { + // Minimum execution time: 52_000 nanoseconds. + Weight::from_ref_time(47_909_134) + // Standard Error: 47_935 + .saturating_add(Weight::from_ref_time(3_837_012).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(5)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(7)) + } + // Storage: Uniques Asset (r:1 w:1) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: RmrkCore Children (r:1 w:0) + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques Class (r:1 w:1) + // Storage: RmrkCore Properties (r:0 w:25) + // Storage: Uniques Account (r:0 w:1) + // Storage: Uniques ItemPriceOf (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + /// The range of component `k` is `[0, 25]`. + fn burn_nft(n: u32, k: u32, ) -> Weight { + // Minimum execution time: 92_000 nanoseconds. + Weight::from_ref_time(93_000_000) + // Standard Error: 134_861 + .saturating_add(Weight::from_ref_time(79_020_250).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().reads((5_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(1)) + .saturating_add(RocksDbWeight::get().writes((5_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(k.into()))) + } + // Storage: Uniques Asset (r:2 w:0) + // Storage: RmrkCore Nfts (r:1 w:1) + /// The range of component `n` is `[1, 20]`. + fn accept_nft(n: u32, ) -> Weight { + // Minimum execution time: 29_000 nanoseconds. + Weight::from_ref_time(30_155_284) + // Standard Error: 4_645 + .saturating_add(Weight::from_ref_time(176_718).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: Uniques Asset (r:2 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Children (r:2 w:1) + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques Class (r:1 w:1) + // Storage: Uniques Account (r:0 w:1) + // Storage: Uniques ItemPriceOf (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + fn reject_nft(n: u32, ) -> Weight { + // Minimum execution time: 82_000 nanoseconds. + Weight::from_ref_time(83_582_580) + // Standard Error: 9_510 + .saturating_add(Weight::from_ref_time(292_556).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(7)) + .saturating_add(RocksDbWeight::get().writes(7)) + } + // Storage: RmrkCore Collections (r:1 w:1) + // Storage: Uniques OwnershipAcceptance (r:1 w:1) + // Storage: Uniques Class (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Uniques ClassAccount (r:0 w:2) + fn change_collection_issuer() -> Weight { + // Minimum execution time: 49_000 nanoseconds. + Weight::from_ref_time(50_000_000) + .saturating_add(RocksDbWeight::get().reads(4)) + .saturating_add(RocksDbWeight::get().writes(6)) + } + // Storage: RmrkCore Collections (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Properties (r:0 w:1) + fn set_property() -> Weight { + // Minimum execution time: 25_000 nanoseconds. + Weight::from_ref_time(26_000_000) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Collections (r:1 w:1) + fn lock_collection() -> Weight { + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(18_000_000) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Resources (r:1 w:1) + fn replace_resource() -> Weight { + // Minimum execution time: 22_000 nanoseconds. + Weight::from_ref_time(23_000_000) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Collections (r:1 w:0) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + /// The range of component `n` is `[1, 20]`. + fn add_basic_resource(n: u32, ) -> Weight { + // Minimum execution time: 27_000 nanoseconds. + Weight::from_ref_time(26_424_910) + // Standard Error: 11_417 + .saturating_add(Weight::from_ref_time(3_156_396).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Collections (r:1 w:0) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + // Storage: RmrkCore EquippableBases (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + fn add_composable_resource(n: u32, ) -> Weight { + // Minimum execution time: 31_000 nanoseconds. + Weight::from_ref_time(28_988_129) + // Standard Error: 43_748 + .saturating_add(Weight::from_ref_time(3_347_891).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(2)) + } + // Storage: RmrkCore Collections (r:1 w:0) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + // Storage: RmrkCore EquippableSlots (r:0 w:1) + /// The range of component `n` is `[1, 20]`. + fn add_slot_resource(n: u32, ) -> Weight { + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(30_805_847) + // Standard Error: 18_329 + .saturating_add(Weight::from_ref_time(3_237_140).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(3)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(2)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + /// The range of component `n` is `[1, 20]`. + fn accept_resource(n: u32, ) -> Weight { + // Minimum execution time: 27_000 nanoseconds. + Weight::from_ref_time(25_515_466) + // Standard Error: 13_172 + .saturating_add(Weight::from_ref_time(3_123_805).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Collections (r:1 w:0) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + /// The range of component `n` is `[1, 20]`. + fn remove_resource(n: u32, ) -> Weight { + // Minimum execution time: 27_000 nanoseconds. + Weight::from_ref_time(25_443_664) + // Standard Error: 32_316 + .saturating_add(Weight::from_ref_time(3_303_825).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Resources (r:1 w:1) + /// The range of component `n` is `[1, 20]`. + fn accept_resource_removal(n: u32, ) -> Weight { + // Minimum execution time: 28_000 nanoseconds. + Weight::from_ref_time(26_191_651) + // Standard Error: 13_461 + .saturating_add(Weight::from_ref_time(3_141_950).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: Uniques Asset (r:20 w:0) + // Storage: RmrkCore Lock (r:1 w:0) + // Storage: RmrkCore Priorities (r:0 w:1) + /// The range of component `n` is `[1, 25]`. + /// The range of component `k` is `[1, 20]`. + fn set_priority(n: u32, k: u32, ) -> Weight { + // Minimum execution time: 79_000 nanoseconds. + Weight::from_ref_time(16_820_776) + // Standard Error: 7_630 + .saturating_add(Weight::from_ref_time(2_838_456).saturating_mul(n.into())) + // Standard Error: 9_638 + .saturating_add(Weight::from_ref_time(3_072_070).saturating_mul(k.into())) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(k.into()))) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) + } +} \ No newline at end of file diff --git a/pallets/rmrk-equip/Cargo.toml b/pallets/rmrk-equip/Cargo.toml index 818a7122..2d5d9ed2 100644 --- a/pallets/rmrk-equip/Cargo.toml +++ b/pallets/rmrk-equip/Cargo.toml @@ -13,18 +13,18 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] serde = { version = "1.0.111", default-features = false, features = ["derive"] } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive", ] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } -pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Local Dependencies pallet-rmrk-core = { default-features = false, version = "0.0.1", path = "../rmrk-core" } @@ -32,10 +32,10 @@ rmrk-traits = { default-features = false, version = "0.0.1", path = "../../trait [dev-dependencies] -sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/pallets/rmrk-equip/src/weights.rs b/pallets/rmrk-equip/src/weights.rs index dc5ca694..06a0cc6e 100644 --- a/pallets/rmrk-equip/src/weights.rs +++ b/pallets/rmrk-equip/src/weights.rs @@ -1,9 +1,9 @@ -//! Autogenerated weights for `pallet_rmrk_equip` +//! Autogenerated weights for pallet_rmrk_equip //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-12-26, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `Sergejs-MacBook-Air.local`, CPU: `` +//! DATE: 2023-02-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `Joshuas-MacBook-Pro.local`, CPU: `` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 // Executed Command: @@ -16,22 +16,26 @@ // --wasm-execution=compiled // --pallet // pallet_rmrk_equip -// --extrinsic=* +// --extrinsic +// * // --steps // 50 // --repeat // 20 // --output // pallets/rmrk-equip/src/weights.rs +// --template +// ./benchmarking/frame-weight-template.hbs +// --detailed-log-output #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::{Weight}}; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; -/// Weight functions needed for `pallet_rmrk_equip`. +/// Weight functions needed for pallet_rmrk_equip. pub trait WeightInfo { fn change_base_issuer() -> Weight; fn equip() -> Weight; @@ -43,14 +47,15 @@ pub trait WeightInfo { fn create_base() -> Weight; } -/// Weight functions for `pallet_rmrk_equip`. +/// Weights for pallet_rmrk_equip using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: RmrkEquip Bases (r:1 w:1) fn change_base_issuer() -> Weight { - Weight::from_ref_time(16_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(1 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 17_000 nanoseconds. + Weight::from_ref_time(18_000_000) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) } // Storage: RmrkCore Nfts (r:2 w:1) // Storage: RmrkCore Lock (r:2 w:0) @@ -60,52 +65,133 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore EquippableSlots (r:1 w:0) // Storage: RmrkEquip Parts (r:1 w:0) fn equip() -> Weight { - Weight::from_ref_time(47_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(10 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 54_000 nanoseconds. + Weight::from_ref_time(56_000_000) + .saturating_add(T::DbWeight::get().reads(10)) + .saturating_add(T::DbWeight::get().writes(2)) } // Storage: RmrkCore Lock (r:2 w:0) // Storage: RmrkEquip Equippings (r:1 w:1) // Storage: RmrkCore Nfts (r:1 w:1) // Storage: Uniques Asset (r:2 w:0) fn unequip() -> Weight { - Weight::from_ref_time(35_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 39_000 nanoseconds. + Weight::from_ref_time(41_000_000) + .saturating_add(T::DbWeight::get().reads(6)) + .saturating_add(T::DbWeight::get().writes(2)) } // Storage: RmrkEquip Bases (r:1 w:0) // Storage: RmrkEquip Parts (r:1 w:1) fn equippable() -> Weight { - Weight::from_ref_time(16_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(18_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } // Storage: RmrkEquip Bases (r:1 w:0) // Storage: RmrkEquip Parts (r:1 w:1) fn equippable_add() -> Weight { - Weight::from_ref_time(16_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 19_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } // Storage: RmrkEquip Bases (r:1 w:0) // Storage: RmrkEquip Parts (r:1 w:1) fn equippable_remove() -> Weight { - Weight::from_ref_time(17_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } // Storage: RmrkEquip Bases (r:1 w:0) // Storage: RmrkEquip Themes (r:1 w:2) fn theme_add() -> Weight { - Weight::from_ref_time(16_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) } // Storage: RmrkEquip NextBaseId (r:1 w:1) // Storage: RmrkEquip Bases (r:0 w:1) fn create_base() -> Weight { - Weight::from_ref_time(13_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(1 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 14_000 nanoseconds. + Weight::from_ref_time(15_000_000) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(2)) } } + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: RmrkEquip Bases (r:1 w:1) + fn change_base_issuer() -> Weight { + // Minimum execution time: 17_000 nanoseconds. + Weight::from_ref_time(18_000_000) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkCore Nfts (r:2 w:1) + // Storage: RmrkCore Lock (r:2 w:0) + // Storage: RmrkEquip Equippings (r:1 w:1) + // Storage: Uniques Asset (r:2 w:0) + // Storage: RmrkCore EquippableBases (r:1 w:0) + // Storage: RmrkCore EquippableSlots (r:1 w:0) + // Storage: RmrkEquip Parts (r:1 w:0) + fn equip() -> Weight { + // Minimum execution time: 54_000 nanoseconds. + Weight::from_ref_time(56_000_000) + .saturating_add(RocksDbWeight::get().reads(10)) + .saturating_add(RocksDbWeight::get().writes(2)) + } + // Storage: RmrkCore Lock (r:2 w:0) + // Storage: RmrkEquip Equippings (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: Uniques Asset (r:2 w:0) + fn unequip() -> Weight { + // Minimum execution time: 39_000 nanoseconds. + Weight::from_ref_time(41_000_000) + .saturating_add(RocksDbWeight::get().reads(6)) + .saturating_add(RocksDbWeight::get().writes(2)) + } + // Storage: RmrkEquip Bases (r:1 w:0) + // Storage: RmrkEquip Parts (r:1 w:1) + fn equippable() -> Weight { + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(18_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkEquip Bases (r:1 w:0) + // Storage: RmrkEquip Parts (r:1 w:1) + fn equippable_add() -> Weight { + // Minimum execution time: 19_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkEquip Bases (r:1 w:0) + // Storage: RmrkEquip Parts (r:1 w:1) + fn equippable_remove() -> Weight { + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(1)) + } + // Storage: RmrkEquip Bases (r:1 w:0) + // Storage: RmrkEquip Themes (r:1 w:2) + fn theme_add() -> Weight { + // Minimum execution time: 18_000 nanoseconds. + Weight::from_ref_time(19_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(2)) + } + // Storage: RmrkEquip NextBaseId (r:1 w:1) + // Storage: RmrkEquip Bases (r:0 w:1) + fn create_base() -> Weight { + // Minimum execution time: 14_000 nanoseconds. + Weight::from_ref_time(15_000_000) + .saturating_add(RocksDbWeight::get().reads(1)) + .saturating_add(RocksDbWeight::get().writes(2)) + } +} \ No newline at end of file diff --git a/pallets/rmrk-market/Cargo.toml b/pallets/rmrk-market/Cargo.toml index 4a3b5c49..1376c51e 100644 --- a/pallets/rmrk-market/Cargo.toml +++ b/pallets/rmrk-market/Cargo.toml @@ -13,18 +13,18 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] serde = { version = "1.0.111", default-features = false, features = ["derive"] } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive", ] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } -pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +pallet-uniques = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Local Dependencies @@ -32,10 +32,10 @@ pallet-rmrk-core = { default-features = false, version = "0.0.1", path = "../rmr rmrk-traits = { default-features = false, version = "0.0.1", path = "../../traits" } [dev-dependencies] -sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/pallets/rmrk-market/src/benchmarking.rs b/pallets/rmrk-market/src/benchmarking.rs index 74de5b90..91e156c6 100644 --- a/pallets/rmrk-market/src/benchmarking.rs +++ b/pallets/rmrk-market/src/benchmarking.rs @@ -5,9 +5,10 @@ use super::*; use frame_benchmarking::{account, benchmarks, whitelisted_caller}; +use frame_support::assert_ok; use frame_support::traits::Get; use pallet_rmrk_core::Pallet as RmrkCore; -use sp_runtime::{traits::Bounded, Permill, SaturatedConversion}; +use sp_runtime::{traits::Bounded, Permill}; use crate::Pallet as RmrkMarket; @@ -57,16 +58,17 @@ fn create_test_collection( let symbol = bvec![0u8; 15]; ::Currency::make_free_balance_be( &caller, - 50_000_000u64.saturated_into(), + BalanceOf::::max_value(), ); - let _ = RmrkCore::::create_collection( - (RawOrigin::Signed(caller.clone())).into(), - collection_id.clone(), - metadata, - max, - symbol, + assert_ok!( + RmrkCore::::create_collection( + (RawOrigin::Signed(caller.clone())).into(), + collection_id.clone(), + metadata, + max, + symbol, + ) ); - collection_id } @@ -82,16 +84,18 @@ fn mint_test_nft( let royalty = Permill::from_percent(1); let nft_metadata = bvec![0u8; 20]; let resource = None; - let _ = RmrkCore::::mint_nft( - RawOrigin::Signed(owner.clone()).into(), - mint_for, - nft_id, - collection_id, - Some(royalty_recipient), - Some(royalty), - nft_metadata, - true, - resource, + assert_ok!( + RmrkCore::::mint_nft( + RawOrigin::Signed(owner.clone()).into(), + mint_for, + nft_id, + collection_id, + Some(royalty_recipient), + Some(royalty), + nft_metadata, + true, + resource, + ) ); nft_id } @@ -105,12 +109,14 @@ fn list_test_nft( ) -> <::Currency as Currency<::AccountId>>::Balance { let amount = u32_to_balance::(price); - let _ = RmrkMarket::::list( - RawOrigin::Signed(owner.clone()).into(), - collection_id, - nft_id, - amount, - None, + assert_ok!( + RmrkMarket::::list( + RawOrigin::Signed(owner.clone()).into(), + collection_id, + nft_id, + amount, + None, + ) ); amount.into() } diff --git a/pallets/rmrk-market/src/lib.rs b/pallets/rmrk-market/src/lib.rs index 4dc10eee..5d71cbbe 100644 --- a/pallets/rmrk-market/src/lib.rs +++ b/pallets/rmrk-market/src/lib.rs @@ -9,10 +9,11 @@ use frame_support::{ dispatch::DispatchResult, ensure, - traits::{Currency, ExistenceRequirement, ReservableCurrency}, + traits::{Currency, ExistenceRequirement, Get, ReservableCurrency}, transactional, BoundedVec, }; use frame_system::{ensure_signed, RawOrigin}; +use sp_runtime::{Permill, Saturating}; use sp_std::prelude::*; @@ -21,7 +22,7 @@ pub use pallet::*; pub mod weights; pub use weights::WeightInfo; -use rmrk_traits::{AccountIdOrCollectionNftTuple, NftInfo}; +use rmrk_traits::{AccountIdOrCollectionNftTuple, NftInfo, RoyaltyInfo}; pub mod types; @@ -37,13 +38,13 @@ mod mock; #[cfg(test)] mod tests; -use crate::types::Offer; +use crate::types::{MarketplaceHooks, Offer}; pub use pallet::*; #[frame_support::pallet] pub mod pallet { use super::*; - use crate::types::ListInfo; + use crate::types::{ListInfo, MarketplaceHooks}; use frame_support::{pallet_prelude::*, traits::tokens::nonfungibles::Inspect}; use frame_system::pallet_prelude::*; use sp_runtime::Permill; @@ -92,6 +93,13 @@ pub mod pallet { #[cfg(feature = "runtime-benchmarks")] type Helper: BenchmarkHelper; + + /// Marketplace hooks to be implemented downstream. + type MarketplaceHooks: MarketplaceHooks, Self::CollectionId, Self::ItemId>; + + /// Market fee to be implemented downstream. + #[pallet::constant] + type MarketFee: Get; } #[pallet::pallet] @@ -124,6 +132,11 @@ pub mod pallet { OptionQuery, >; + #[pallet::storage] + #[pallet::getter(fn marketplace_owner)] + /// Stores the marketplace owner account + pub type MarketplaceOwner = StorageValue<_, T::AccountId, OptionQuery>; + #[pallet::event] #[pallet::generate_deposit(pub(super) fn deposit_event)] pub enum Event { @@ -167,6 +180,22 @@ pub mod pallet { collection_id: T::CollectionId, nft_id: T::ItemId, }, + /// Royalty fee paid to royalty owner + RoyaltyFeePaid { + sender: T::AccountId, + royalty_owner: T::AccountId, + collection_id: T::CollectionId, + nft_id: T::ItemId, + amount: BalanceOf, + }, + /// Market fee paid to marketplace owner + MarketFeePaid { + sender: T::AccountId, + marketplace_owner: T::AccountId, + collection_id: T::CollectionId, + nft_id: T::ItemId, + amount: BalanceOf, + }, } // Errors inform users that something went wrong. @@ -202,6 +231,10 @@ pub mod pallet { PriceDiffersFromExpected, /// Not possible to list non-transferable NFT NonTransferable, + /// Marketplace owner not configured + MarketplaceOwnerNotSet, + /// Cannot list NFT based on downstream logic implemented for MarketplaceHooks trait + CannotListNft, } #[pallet::call] @@ -252,6 +285,11 @@ pub mod pallet { let sender = ensure_signed(origin)?; let owner = pallet_uniques::Pallet::::owner(collection_id.into(), nft_id) .ok_or(Error::::TokenDoesNotExist)?; + // Check MarketplaceHooks function if the can NFT be listed + ensure!( + T::MarketplaceHooks::can_sell_in_marketplace(collection_id, nft_id), + Error::::CannotListNft + ); // Ensure that the NFT is not owned by an NFT ensure!( @@ -520,15 +558,24 @@ impl Pallet { ensure!(list_price == amount, Error::::PriceDiffersFromExpected); } + // Get NFT info for RoyaltyInfo and get the market fee constant + let nft_info = pallet_rmrk_core::Nfts::::get(collection_id, nft_id) + .ok_or(pallet_rmrk_core::Error::::NoAvailableNftId)?; + let royalty_info = nft_info.royalty; + let market_fee = T::MarketFee::get(); + // Set NFT Lock status to false to facilitate the purchase pallet_rmrk_core::Pallet::::set_lock((collection_id, nft_id), false); - // Transfer currency then transfer the NFT - ::Currency::transfer( - &buyer, - &owner, + // Calculate and finalize transfer of fees and payment then transfer the NFT + Self::calculate_and_finalize_purchase_and_fees( + buyer.clone(), + owner.clone(), + collection_id, + nft_id, list_price, - ExistenceRequirement::KeepAlive, + market_fee, + royalty_info, )?; let new_owner = AccountIdOrCollectionNftTuple::AccountId(buyer.clone()); @@ -584,4 +631,81 @@ impl Pallet { } false } + + /// Helper function to handle market fees and royalty payments that are + /// implemented downstream. By default, no market fees or royalties + /// are paid out. + /// + /// Parameters: + /// - buyer: Account ID of the buyer. + /// - seller: Account ID of the seller. + /// - amount: Amount the NFT is being sold for. + /// - market_fee: Percentage to calculate the market free implemented in `MarketplaceHooks` + /// trait. + /// - royalty_info: Royalty account and royalty fee to be calculated in the `MarketplaceHooks` + /// trait. + fn calculate_and_finalize_purchase_and_fees( + buyer: T::AccountId, + seller: T::AccountId, + collection_id: T::CollectionId, + nft_id: T::ItemId, + amount: BalanceOf, + market_fee: Permill, + royalty_info: Option>, + ) -> DispatchResult { + let mut final_amount_after_fees = amount.clone(); + // Calculate market fee and update final amount + if let Some(calculated_market_fee) = + T::MarketplaceHooks::calculate_market_fee(amount, market_fee) + { + let marketplace_owner = + MarketplaceOwner::::get().ok_or(Error::::MarketplaceOwnerNotSet)?; + final_amount_after_fees = final_amount_after_fees.saturating_sub(calculated_market_fee); + ::Currency::transfer( + &buyer, + &marketplace_owner, + calculated_market_fee, + ExistenceRequirement::KeepAlive, + )?; + Self::deposit_event(Event::MarketFeePaid { + sender: buyer.clone(), + marketplace_owner, + collection_id, + nft_id, + amount: calculated_market_fee, + }) + } + // Calculate royalty fees and update the final amount + if let Some(royalty_info) = royalty_info { + if let Some(calculated_royalty_fee) = + T::MarketplaceHooks::calculate_royalty_fee(amount, royalty_info.amount) + { + let royalty_owner = royalty_info.recipient; + final_amount_after_fees = + final_amount_after_fees.saturating_sub(calculated_royalty_fee); + ::Currency::transfer( + &buyer, + &royalty_owner, + calculated_royalty_fee, + ExistenceRequirement::KeepAlive, + )?; + Self::deposit_event(Event::RoyaltyFeePaid { + sender: buyer.clone(), + royalty_owner, + collection_id, + nft_id, + amount: calculated_royalty_fee, + }) + } + } + // Finalize payment + ::Currency::transfer( + &buyer, + &seller, + final_amount_after_fees, + ExistenceRequirement::KeepAlive, + )?; + + Ok(()) + } } diff --git a/pallets/rmrk-market/src/mock.rs b/pallets/rmrk-market/src/mock.rs index d6a350ba..107f2420 100644 --- a/pallets/rmrk-market/src/mock.rs +++ b/pallets/rmrk-market/src/mock.rs @@ -157,6 +157,7 @@ impl pallet_uniques::Config for Test { parameter_types! { pub const MinimumOfferAmount: Balance = 50 * UNITS; + pub const MarketFee: Permill = Permill::from_percent(0); } impl Config for Test { @@ -167,6 +168,8 @@ impl Config for Test { type WeightInfo = weights::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] type Helper = RmrkBenchmark; + type MarketplaceHooks = (); + type MarketFee = MarketFee; } pub const ALICE: AccountId = AccountId::new([1u8; 32]); diff --git a/pallets/rmrk-market/src/tests.rs b/pallets/rmrk-market/src/tests.rs index f8ae6bb3..89ac9545 100644 --- a/pallets/rmrk-market/src/tests.rs +++ b/pallets/rmrk-market/src/tests.rs @@ -818,3 +818,28 @@ fn accept_expired_offer_wont_works() { ); }); } + +#[test] +fn burn_locked_nft_fail() { + new_test_ext().execute_with(|| { + // Create a basic collection + assert_ok!(basic_collection()); + // Mint non-transferable NFT + assert_ok!(RmrkCore::mint_nft( + Origin::signed(ALICE), + Some(ALICE), + NFT_ID_0, + COLLECTION_ID_0, + Some(ALICE), + Some(Permill::from_float(1.525)), + bvec![0u8; 20], + true, + None, + )); + assert_ok!(RmrkMarket::list(Origin::signed(ALICE), COLLECTION_ID_0, 0, 10u128, None,)); + assert_noop!( + RmrkCore::burn_nft(Origin::signed(ALICE), COLLECTION_ID_0, 0), + pallet_uniques::Error::::Locked + ); + }); +} diff --git a/pallets/rmrk-market/src/types.rs b/pallets/rmrk-market/src/types.rs index f6e4d453..1556b979 100644 --- a/pallets/rmrk-market/src/types.rs +++ b/pallets/rmrk-market/src/types.rs @@ -3,6 +3,7 @@ // License: Apache 2.0 modified by RMRK, see LICENSE.md use frame_support::pallet_prelude::*; +use sp_runtime::Permill; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; @@ -30,3 +31,29 @@ pub struct Offer { /// After this block the offer can't be accepted pub(super) expires: Option, } + +/// Trait to calculate Marketplace hooks that can be implemented downstream to enforce standard +/// Marketplace fees and royalties. +pub trait MarketplaceHooks { + /// Standard Marketplace fee set downstream. The default return value will be None. + fn calculate_market_fee(amount: Balance, market_fee: Permill) -> Option; + /// For Marketplaces that enforce royalties, a royalty fee is paid after a successful `buy()`. + /// Default return value is None. + fn calculate_royalty_fee(amount: Balance, royalty_fee: Permill) -> Option; + /// Check to ensure the NFT can be listed or bought in the Marketplace. Default is true. + fn can_sell_in_marketplace(collection_id: CollectionId, nft_id: NftId) -> bool; +} + +impl MarketplaceHooks for () { + fn calculate_market_fee(_amount: Balance, _market_fee: Permill) -> Option { + None + } + + fn calculate_royalty_fee(_amount: Balance, _royalty_fee: Permill) -> Option { + None + } + + fn can_sell_in_marketplace(_collection_id: CollectionId, _nft_id: NftId) -> bool { + true + } +} diff --git a/pallets/rmrk-market/src/weights.rs b/pallets/rmrk-market/src/weights.rs index 354b1b3c..1df23909 100644 --- a/pallets/rmrk-market/src/weights.rs +++ b/pallets/rmrk-market/src/weights.rs @@ -1,9 +1,9 @@ -//! Autogenerated weights for `pallet_rmrk_market` +//! Autogenerated weights for pallet_rmrk_market //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-11-14, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! HOSTNAME: `Sergejs-MacBook-Air.local`, CPU: `` +//! DATE: 2023-02-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! HOSTNAME: `Joshuas-MacBook-Pro.local`, CPU: `` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024 // Executed Command: @@ -24,12 +24,15 @@ // 20 // --output // pallets/rmrk-market/src/weights.rs +// --template +// ./benchmarking/frame-weight-template.hbs +// --detailed-log-output #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::{Weight}}; +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use sp_std::marker::PhantomData; /// Weight functions needed for pallet_rmrk_market. @@ -42,21 +45,90 @@ pub trait WeightInfo { fn accept_offer() -> Weight; } -/// Weight functions for `pallet_rmrk_core`. +/// Weights for pallet_rmrk_market using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { // Storage: Uniques Asset (r:1 w:1) // Storage: RmrkMarket ListedNfts (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:0 w:1) + // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) + fn buy() -> Weight { + // Minimum execution time: 73_000 nanoseconds. + Weight::from_ref_time(74_000_000) + .saturating_add(T::DbWeight::get().reads(5)) + .saturating_add(T::DbWeight::get().writes(8)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Nfts (r:1 w:0) + // Storage: Uniques Class (r:1 w:0) // Storage: RmrkCore Lock (r:1 w:1) + // Storage: RmrkMarket ListedNfts (r:0 w:1) + fn list() -> Weight { + // Minimum execution time: 29_000 nanoseconds. + Weight::from_ref_time(30_000_000) + .saturating_add(T::DbWeight::get().reads(4)) + .saturating_add(T::DbWeight::get().writes(2)) + } + // Storage: RmrkMarket ListedNfts (r:1 w:1) + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkCore Lock (r:0 w:1) + fn unlist() -> Weight { + // Minimum execution time: 23_000 nanoseconds. + Weight::from_ref_time(23_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(2)) + } + // Storage: Uniques Asset (r:1 w:0) + // Storage: RmrkMarket Offers (r:1 w:1) + fn make_offer() -> Weight { + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(32_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + // Storage: RmrkMarket Offers (r:1 w:1) + // Storage: Uniques Asset (r:1 w:0) + fn withdraw_offer() -> Weight { + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(32_000_000) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + // Storage: Uniques Asset (r:1 w:1) + // Storage: RmrkMarket Offers (r:1 w:1) // Storage: System Account (r:1 w:1) // Storage: RmrkCore Nfts (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:0 w:1) + // Storage: Uniques Account (r:0 w:2) + // Storage: Uniques ItemPriceOf (r:0 w:1) + fn accept_offer() -> Weight { + // Minimum execution time: 87_000 nanoseconds. + Weight::from_ref_time(88_000_000) + .saturating_add(T::DbWeight::get().reads(5)) + .saturating_add(T::DbWeight::get().writes(8)) + } +} + +// For backwards compatibility and tests +impl WeightInfo for () { + // Storage: Uniques Asset (r:1 w:1) + // Storage: RmrkMarket ListedNfts (r:1 w:1) + // Storage: RmrkCore Nfts (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:0 w:1) // Storage: Uniques Account (r:0 w:2) // Storage: Uniques ItemPriceOf (r:0 w:1) fn buy() -> Weight { - Weight::from_ref_time(63_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) - .saturating_add(T::DbWeight::get().writes(8 as u64)) + // Minimum execution time: 73_000 nanoseconds. + Weight::from_ref_time(74_000_000) + .saturating_add(RocksDbWeight::get().reads(5)) + .saturating_add(RocksDbWeight::get().writes(8)) } // Storage: Uniques Asset (r:1 w:0) // Storage: RmrkCore Nfts (r:1 w:0) @@ -64,43 +136,48 @@ impl WeightInfo for SubstrateWeight { // Storage: RmrkCore Lock (r:1 w:1) // Storage: RmrkMarket ListedNfts (r:0 w:1) fn list() -> Weight { - Weight::from_ref_time(26_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(4 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 29_000 nanoseconds. + Weight::from_ref_time(30_000_000) + .saturating_add(RocksDbWeight::get().reads(4)) + .saturating_add(RocksDbWeight::get().writes(2)) } // Storage: RmrkMarket ListedNfts (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) - // Storage: RmrkCore Lock (r:1 w:1) + // Storage: RmrkCore Lock (r:0 w:1) fn unlist() -> Weight { - Weight::from_ref_time(23_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(3 as u64)) - .saturating_add(T::DbWeight::get().writes(2 as u64)) + // Minimum execution time: 23_000 nanoseconds. + Weight::from_ref_time(23_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(2)) } // Storage: Uniques Asset (r:1 w:0) // Storage: RmrkMarket Offers (r:1 w:1) fn make_offer() -> Weight { - Weight::from_ref_time(28_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(32_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(1)) } // Storage: RmrkMarket Offers (r:1 w:1) // Storage: Uniques Asset (r:1 w:0) fn withdraw_offer() -> Weight { - Weight::from_ref_time(28_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(2 as u64)) - .saturating_add(T::DbWeight::get().writes(1 as u64)) + // Minimum execution time: 32_000 nanoseconds. + Weight::from_ref_time(32_000_000) + .saturating_add(RocksDbWeight::get().reads(2)) + .saturating_add(RocksDbWeight::get().writes(1)) } // Storage: Uniques Asset (r:1 w:1) // Storage: RmrkMarket Offers (r:1 w:1) // Storage: System Account (r:1 w:1) - // Storage: RmrkCore Lock (r:1 w:1) // Storage: RmrkCore Nfts (r:1 w:1) // Storage: Uniques Class (r:1 w:0) + // Storage: RmrkCore Lock (r:0 w:1) // Storage: Uniques Account (r:0 w:2) // Storage: Uniques ItemPriceOf (r:0 w:1) fn accept_offer() -> Weight { - Weight::from_ref_time(74_000_000 as u64) - .saturating_add(T::DbWeight::get().reads(6 as u64)) - .saturating_add(T::DbWeight::get().writes(8 as u64)) + // Minimum execution time: 87_000 nanoseconds. + Weight::from_ref_time(88_000_000) + .saturating_add(RocksDbWeight::get().reads(5)) + .saturating_add(RocksDbWeight::get().writes(8)) } -} +} \ No newline at end of file diff --git a/pallets/template/Cargo.toml b/pallets/template/Cargo.toml index 2f8e8aa2..de99826d 100644 --- a/pallets/template/Cargo.toml +++ b/pallets/template/Cargo.toml @@ -17,14 +17,14 @@ codec = { package = "parity-scale-codec", version = "3.0.0", default-features = "derive", ] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } [dev-dependencies] -sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-core = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-io = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/rpc-runtime-api/Cargo.toml b/rpc-runtime-api/Cargo.toml index e9dfb080..10eac1f3 100644 --- a/rpc-runtime-api/Cargo.toml +++ b/rpc-runtime-api/Cargo.toml @@ -8,10 +8,10 @@ edition = "2021" serde = { version = "1.0.132", default-features = false, features = ["derive"] } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "2.0", default-features = false } -sp-core = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.36" } -sp-std = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.36" } -sp-api = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.36" } -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.36" } +sp-core = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.37" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.37" } +sp-api = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.37" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false , branch = "polkadot-v0.9.37" } rmrk-traits = { version = "0.0.1", path = "../traits", default-features = false } diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index a1d9130a..873a54ad 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -10,13 +10,13 @@ scale-info = { version = "2.0" } jsonrpsee = { version = "0.16.2", features = ["server"] } # primitives -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" } # client dependencies -sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } -sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.36" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.37" } rmrk-traits = { version = "0.0.1", default-features = false, path = "../traits" } pallet-rmrk-rpc-runtime-api = { path = "../rpc-runtime-api" } diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index f36c9e0d..b8c26855 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -16,37 +16,37 @@ targets = ["x86_64-unknown-linux-gnu"] codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -pallet-uniques = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-utility = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-aura = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-balances = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-sudo = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-timestamp = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-executive = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-block-builder = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-consensus-aura = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-core = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-inherents = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-offchain = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-runtime = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-session = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-transaction-pool = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-version = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +pallet-uniques = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-utility = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-aura = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-balances = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-randomness-collective-flip = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-sudo = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-timestamp = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-executive = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-block-builder = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-consensus-aura = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-core = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-inherents = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-offchain = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-runtime = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-session = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-transaction-pool = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-version = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Used for the node template"s RPCs -frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } # Used for runtime benchmarking -frame-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } -frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } +frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } hex-literal = { version = "0.3.4", optional = true } # Local Dependencies @@ -58,7 +58,7 @@ rmrk-traits = { version = "0.0.1", default-features = false, path = "../traits" pallet-rmrk-rpc-runtime-api = { version = "0.0.1", default-features = false, path = "../rpc-runtime-api" } [build-dependencies] -substrate-wasm-builder = { version = "5.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +substrate-wasm-builder = { version = "5.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index cd9eb7f8..7391a015 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -379,6 +379,7 @@ impl pallet_rmrk_core::Config for Runtime { parameter_types! { pub const MinimumOfferAmount: Balance = UNITS / 10_000; + pub const MarketFee: Permill = Permill::from_percent(0); } impl pallet_rmrk_market::Config for Runtime { @@ -389,6 +390,8 @@ impl pallet_rmrk_market::Config for Runtime { type WeightInfo = pallet_rmrk_market::weights::SubstrateWeight; #[cfg(feature = "runtime-benchmarks")] type Helper = RmrkBenchmark; + type MarketplaceHooks = (); + type MarketFee = MarketFee; } parameter_types! { diff --git a/rust-toolchain.toml b/rust-toolchain.toml index fc8521b0..58287b3b 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2022-10-25" +channel = "nightly-2023-02-03" components = [ "rustfmt", "rustc", "rust-std", "cargo", "clippy", "llvm-tools-preview"] targets = [ "wasm32-unknown-unknown" ] profile = "minimal" \ No newline at end of file diff --git a/shell.nix b/shell.nix index 12fb677b..d51abf00 100644 --- a/shell.nix +++ b/shell.nix @@ -13,7 +13,7 @@ let rev = "1fe6ed37fd9beb92afe90671c0c2a662a03463dd"; }; nixpkgs = import pinned { overlays = [ mozillaOverlay ]; }; - toolchain = with nixpkgs; (rustChannelOf { date = "2022-09-08"; channel = "nightly"; }); + toolchain = with nixpkgs; (rustChannelOf { date = "nightly-2023-02-03"; channel = "nightly"; }); rust-wasm = toolchain.rust.override { targets = [ "wasm32-unknown-unknown" ]; }; diff --git a/tests/src/interfaces/augment-api-consts.ts b/tests/src/interfaces/augment-api-consts.ts index 4b18b8af..36b43cf1 100644 --- a/tests/src/interfaces/augment-api-consts.ts +++ b/tests/src/interfaces/augment-api-consts.ts @@ -4,6 +4,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { Codec } from '@polkadot/types-codec/types'; +import type { Permill } from '@polkadot/types/interfaces/runtime'; import type { FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/consts' { @@ -50,6 +51,10 @@ declare module '@polkadot/api-base/types/consts' { * The maximum number of parts each resource may have **/ partsLimit: u32 & AugmentedConst; + /** + * The maximum number of properties each can have + **/ + propertiesLimit: u32 & AugmentedConst; /** * The maximum resource symbol length **/ @@ -74,6 +79,10 @@ declare module '@polkadot/api-base/types/consts' { [key: string]: Codec; }; rmrkMarket: { + /** + * Market fee to be implemented downstream. + **/ + marketFee: Permill & AugmentedConst; /** * Minimum offer amount as a valid offer **/ diff --git a/tests/src/interfaces/augment-api-errors.ts b/tests/src/interfaces/augment-api-errors.ts index fb5d8df3..1cd9eee1 100644 --- a/tests/src/interfaces/augment-api-errors.ts +++ b/tests/src/interfaces/augment-api-errors.ts @@ -168,6 +168,10 @@ declare module '@polkadot/api-base/types/errors' { * Cannot buy NFT that is already owned **/ CannotBuyOwnToken: AugmentedError; + /** + * Cannot list NFT based on downstream logic implemented for MarketplaceHooks trait + **/ + CannotListNft: AugmentedError; /** * Cannot list NFT owned by a NFT **/ @@ -188,6 +192,10 @@ declare module '@polkadot/api-base/types/errors' { * Listing has expired and cannot be bought **/ ListingHasExpired: AugmentedError; + /** + * Marketplace owner not configured + **/ + MarketplaceOwnerNotSet: AugmentedError; /** * Not possible to list non-transferable NFT **/ diff --git a/tests/src/interfaces/augment-api-events.ts b/tests/src/interfaces/augment-api-events.ts index 6bba13c5..f3d362d7 100644 --- a/tests/src/interfaces/augment-api-events.ts +++ b/tests/src/interfaces/augment-api-events.ts @@ -86,6 +86,7 @@ declare module '@polkadot/api-base/types/events' { NFTRejected: AugmentedEvent; NFTSent: AugmentedEvent; PrioritySet: AugmentedEvent; + PropertiesRemoved: AugmentedEvent], { collectionId: u32, maybeNftId: Option }>; PropertyRemoved: AugmentedEvent, key: Bytes], { collectionId: u32, maybeNftId: Option, key: Bytes }>; PropertySet: AugmentedEvent, key: Bytes, value: Bytes], { collectionId: u32, maybeNftId: Option, key: Bytes, value: Bytes }>; ResourceAccepted: AugmentedEvent; @@ -110,6 +111,10 @@ declare module '@polkadot/api-base/types/events' { [key: string]: AugmentedEvent; }; rmrkMarket: { + /** + * Market fee paid to marketplace owner + **/ + MarketFeePaid: AugmentedEvent; /** * Offer was accepted **/ @@ -122,6 +127,10 @@ declare module '@polkadot/api-base/types/events' { * Offer was withdrawn **/ OfferWithdrawn: AugmentedEvent; + /** + * Royalty fee paid to royalty owner + **/ + RoyaltyFeePaid: AugmentedEvent; /** * Token listed on Marketplace **/ diff --git a/tests/src/interfaces/augment-api-query.ts b/tests/src/interfaces/augment-api-query.ts index ca2677ad..3d1ecf84 100644 --- a/tests/src/interfaces/augment-api-query.ts +++ b/tests/src/interfaces/augment-api-query.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Null, Option, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, H256 } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletRmrkMarketListInfo, PalletRmrkMarketOffer, PalletTransactionPaymentReleases, PalletUniquesCollectionDetails, PalletUniquesCollectionMetadata, PalletUniquesItemDetails, PalletUniquesItemMetadata, PhantomTypePhantomType, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsPartPartType, RmrkTraitsResourceResourceInfo, SpConsensusAuraSr25519AppSr25519Public, SpRuntimeDigest } from '@polkadot/types/lookup'; +import type { FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReserveData, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletRmrkMarketListInfo, PalletRmrkMarketOffer, PalletTransactionPaymentReleases, PalletUniquesCollectionDetails, PalletUniquesCollectionMetadata, PalletUniquesItemDetails, PalletUniquesItemMetadata, PhantomTypePhantomType, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsPartPartType, RmrkTraitsResourceResourceInfo, SpConsensusAuraSr25519AppSr25519Public, SpRuntimeDigest } from '@polkadot/types/lookup'; import type { Observable } from '@polkadot/types/types'; declare module '@polkadot/api-base/types/storage' { @@ -54,6 +54,10 @@ declare module '@polkadot/api-base/types/storage' { * NOTE: This is only used in the case that this pallet is used to store balances. **/ account: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; + /** + * The total units of outstanding deactivated balance in the system. + **/ + inactiveIssuance: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Any liquidity locks on some account balances. * NOTE: Should only be accessed when setting, changing and freeing a lock. @@ -63,12 +67,6 @@ declare module '@polkadot/api-base/types/storage' { * Named reserves on some account balances. **/ reserves: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; - /** - * Storage version of the pallet. - * - * This is set to v2.0.0 for new networks. - **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The total units issued in the system. **/ @@ -218,6 +216,10 @@ declare module '@polkadot/api-base/types/storage' { * Stores listed NFT price info **/ listedNfts: AugmentedQuery Observable>, [u32, u32]> & QueryableStorageEntry; + /** + * Stores the marketplace owner account + **/ + marketplaceOwner: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Stores offer on a NFT info **/ diff --git a/tests/src/interfaces/augment-api-tx.ts b/tests/src/interfaces/augment-api-tx.ts index 31ef669e..4dcf6c1c 100644 --- a/tests/src/interfaces/augment-api-tx.ts +++ b/tests/src/interfaces/augment-api-tx.ts @@ -4,7 +4,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Bytes, Compact, Option, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec'; import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types'; -import type { AccountId32, Call, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; +import type { AccountId32, Call, MultiAddress, Permill } from '@polkadot/types/interfaces/runtime'; import type { PalletUniquesDestroyWitness, RmrkSubstrateRuntimeOriginCaller, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartEquippableList, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfoMin, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, SpCoreVoid, SpFinalityGrandpaEquivocationProof, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { @@ -364,6 +364,15 @@ declare module '@polkadot/api-base/types/submittable' { [key: string]: SubmittableExtrinsicFunction; }; rmrkMarket: { + /** + * Accept an offer on a RMRK NFT from a potential buyer. + * + * Parameters: + * - `origin` - Account of the current owner that is accepting the offerer's offer + * - `collection_id` - Collection id of the RMRK NFT + * - `nft_id` - NFT id of the RMRK NFT + * - `offerer` - Account that made the offer + **/ acceptOffer: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, offerer: AccountId32 | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, AccountId32]>; /** * Buy a listed NFT. Ensure that the NFT is available for purchase and has not recently @@ -486,10 +495,6 @@ declare module '@polkadot/api-base/types/submittable' { [key: string]: SubmittableExtrinsicFunction; }; system: { - /** - * A dispatch that will fill the block weight up to the given ratio. - **/ - fillBlock: AugmentedSubmittable<(ratio: Perbill | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Perbill]>; /** * Kill all storage items with a key that starts with the given prefix. * @@ -614,7 +619,9 @@ declare module '@polkadot/api-base/types/submittable' { /** * Destroy a single item. * - * Origin must be Signed and the sender should be the Admin of the `collection`. + * Origin must be Signed and the signing account must be either: + * - the Admin of the `collection`; + * - the Owner of the `item`; * * - `collection`: The collection of the item to be burned. * - `item`: The item of the item to be burned. @@ -1106,6 +1113,15 @@ declare module '@polkadot/api-base/types/submittable' { * # **/ forceBatch: AugmentedSubmittable<(calls: Vec | (Call | IMethod | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; + /** + * Dispatch a function call with a specified weight. + * + * This function does not check the weight of the call, and instead allows the + * Root origin to specify the weight of the call. + * + * The dispatch origin for this call must be _Root_. + **/ + withWeight: AugmentedSubmittable<(call: Call | IMethod | string | Uint8Array, weight: SpWeightsWeightV2Weight | { refTime?: any; proofSize?: any } | string | Uint8Array) => SubmittableExtrinsic, [Call, SpWeightsWeightV2Weight]>; /** * Generic tx **/ diff --git a/tests/src/interfaces/lookup.ts b/tests/src/interfaces/lookup.ts index 899f1ea2..dbf3846a 100644 --- a/tests/src/interfaces/lookup.ts +++ b/tests/src/interfaces/lookup.ts @@ -129,7 +129,7 @@ export default { NoProviders: 'Null', TooManyConsumers: 'Null', Token: 'SpRuntimeTokenError', - Arithmetic: 'SpRuntimeArithmeticError', + Arithmetic: 'SpArithmeticArithmeticError', Transactional: 'SpRuntimeTransactionalError', Exhausted: 'Null', Corruption: 'Null', @@ -150,9 +150,9 @@ export default { _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported'] }, /** - * Lookup27: sp_runtime::ArithmeticError + * Lookup27: sp_arithmetic::ArithmeticError **/ - SpRuntimeArithmeticError: { + SpArithmeticArithmeticError: { _enum: ['Underflow', 'Overflow', 'DivisionByZero'] }, /** @@ -363,6 +363,10 @@ export default { maybeNftId: 'Option', key: 'Bytes', }, + PropertiesRemoved: { + collectionId: 'u32', + maybeNftId: 'Option', + }, CollectionLocked: { issuer: 'AccountId32', collectionId: 'u32', @@ -451,7 +455,21 @@ export default { owner: 'AccountId32', buyer: 'AccountId32', collectionId: 'u32', - nftId: 'u32' + nftId: 'u32', + }, + RoyaltyFeePaid: { + sender: 'AccountId32', + royaltyOwner: 'AccountId32', + collectionId: 'u32', + nftId: 'u32', + amount: 'u128', + }, + MarketFeePaid: { + sender: 'AccountId32', + marketplaceOwner: 'AccountId32', + collectionId: 'u32', + nftId: 'u32', + amount: 'u128' } } }, @@ -629,9 +647,6 @@ export default { **/ FrameSystemCall: { _enum: { - fill_block: { - ratio: 'Perbill', - }, remark: { remark: 'Bytes', }, @@ -663,7 +678,7 @@ export default { } }, /** - * Lookup67: frame_system::limits::BlockWeights + * Lookup66: frame_system::limits::BlockWeights **/ FrameSystemLimitsBlockWeights: { baseBlock: 'SpWeightsWeightV2Weight', @@ -671,7 +686,7 @@ export default { perClass: 'FrameSupportDispatchPerDispatchClassWeightsPerClass' }, /** - * Lookup68: frame_support::dispatch::PerDispatchClass + * Lookup67: frame_support::dispatch::PerDispatchClass **/ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: 'FrameSystemLimitsWeightsPerClass', @@ -679,7 +694,7 @@ export default { mandatory: 'FrameSystemLimitsWeightsPerClass' }, /** - * Lookup69: frame_system::limits::WeightsPerClass + * Lookup68: frame_system::limits::WeightsPerClass **/ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: 'SpWeightsWeightV2Weight', @@ -688,13 +703,13 @@ export default { reserved: 'Option' }, /** - * Lookup71: frame_system::limits::BlockLength + * Lookup70: frame_system::limits::BlockLength **/ FrameSystemLimitsBlockLength: { max: 'FrameSupportDispatchPerDispatchClassU32' }, /** - * Lookup72: frame_support::dispatch::PerDispatchClass + * Lookup71: frame_support::dispatch::PerDispatchClass **/ FrameSupportDispatchPerDispatchClassU32: { normal: 'u32', @@ -702,14 +717,14 @@ export default { mandatory: 'u32' }, /** - * Lookup73: sp_weights::RuntimeDbWeight + * Lookup72: sp_weights::RuntimeDbWeight **/ SpWeightsRuntimeDbWeight: { read: 'u64', write: 'u64' }, /** - * Lookup74: sp_version::RuntimeVersion + * Lookup73: sp_version::RuntimeVersion **/ SpVersionRuntimeVersion: { specName: 'Text', @@ -722,13 +737,13 @@ export default { stateVersion: 'u8' }, /** - * Lookup80: frame_system::pallet::Error + * Lookup79: frame_system::pallet::Error **/ FrameSystemError: { _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered'] }, /** - * Lookup82: pallet_timestamp::pallet::Call + * Lookup81: pallet_timestamp::pallet::Call **/ PalletTimestampCall: { _enum: { @@ -738,15 +753,15 @@ export default { } }, /** - * Lookup84: sp_consensus_aura::sr25519::app_sr25519::Public + * Lookup83: sp_consensus_aura::sr25519::app_sr25519::Public **/ SpConsensusAuraSr25519AppSr25519Public: 'SpCoreSr25519Public', /** - * Lookup85: sp_core::sr25519::Public + * Lookup84: sp_core::sr25519::Public **/ SpCoreSr25519Public: '[u8;32]', /** - * Lookup88: pallet_grandpa::StoredState + * Lookup87: pallet_grandpa::StoredState **/ PalletGrandpaStoredState: { _enum: { @@ -763,7 +778,7 @@ export default { } }, /** - * Lookup89: pallet_grandpa::StoredPendingChange + * Lookup88: pallet_grandpa::StoredPendingChange **/ PalletGrandpaStoredPendingChange: { scheduledAt: 'u32', @@ -772,7 +787,7 @@ export default { forced: 'Option' }, /** - * Lookup91: pallet_grandpa::pallet::Call + * Lookup90: pallet_grandpa::pallet::Call **/ PalletGrandpaCall: { _enum: { @@ -791,14 +806,14 @@ export default { } }, /** - * Lookup92: sp_finality_grandpa::EquivocationProof + * Lookup91: sp_finality_grandpa::EquivocationProof **/ SpFinalityGrandpaEquivocationProof: { setId: 'u64', equivocation: 'SpFinalityGrandpaEquivocation' }, /** - * Lookup93: sp_finality_grandpa::Equivocation + * Lookup92: sp_finality_grandpa::Equivocation **/ SpFinalityGrandpaEquivocation: { _enum: { @@ -807,7 +822,7 @@ export default { } }, /** - * Lookup94: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup93: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrevote: { roundNumber: 'u64', @@ -816,22 +831,22 @@ export default { second: '(FinalityGrandpaPrevote,SpFinalityGrandpaAppSignature)' }, /** - * Lookup95: finality_grandpa::Prevote + * Lookup94: finality_grandpa::Prevote **/ FinalityGrandpaPrevote: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup96: sp_finality_grandpa::app::Signature + * Lookup95: sp_finality_grandpa::app::Signature **/ SpFinalityGrandpaAppSignature: 'SpCoreEd25519Signature', /** - * Lookup97: sp_core::ed25519::Signature + * Lookup96: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup100: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> + * Lookup99: finality_grandpa::Equivocation, sp_finality_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrecommit: { roundNumber: 'u64', @@ -840,24 +855,24 @@ export default { second: '(FinalityGrandpaPrecommit,SpFinalityGrandpaAppSignature)' }, /** - * Lookup101: finality_grandpa::Precommit + * Lookup100: finality_grandpa::Precommit **/ FinalityGrandpaPrecommit: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup103: sp_core::Void + * Lookup102: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup104: pallet_grandpa::pallet::Error + * Lookup103: pallet_grandpa::pallet::Error **/ PalletGrandpaError: { _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] }, /** - * Lookup106: pallet_balances::BalanceLock + * Lookup105: pallet_balances::BalanceLock **/ PalletBalancesBalanceLock: { id: '[u8;8]', @@ -865,26 +880,20 @@ export default { reasons: 'PalletBalancesReasons' }, /** - * Lookup107: pallet_balances::Reasons + * Lookup106: pallet_balances::Reasons **/ PalletBalancesReasons: { _enum: ['Fee', 'Misc', 'All'] }, /** - * Lookup110: pallet_balances::ReserveData + * Lookup109: pallet_balances::ReserveData **/ PalletBalancesReserveData: { id: '[u8;8]', amount: 'u128' }, /** - * Lookup112: pallet_balances::Releases - **/ - PalletBalancesReleases: { - _enum: ['V1_0_0', 'V2_0_0'] - }, - /** - * Lookup113: pallet_balances::pallet::Call + * Lookup111: pallet_balances::pallet::Call **/ PalletBalancesCall: { _enum: { @@ -917,19 +926,19 @@ export default { } }, /** - * Lookup118: pallet_balances::pallet::Error + * Lookup116: pallet_balances::pallet::Error **/ PalletBalancesError: { _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves'] }, /** - * Lookup120: pallet_transaction_payment::Releases + * Lookup118: pallet_transaction_payment::Releases **/ PalletTransactionPaymentReleases: { _enum: ['V1Ancient', 'V2'] }, /** - * Lookup121: pallet_sudo::pallet::Call + * Lookup119: pallet_sudo::pallet::Call **/ PalletSudoCall: { _enum: { @@ -953,7 +962,7 @@ export default { } }, /** - * Lookup123: pallet_template::pallet::Call + * Lookup121: pallet_template::pallet::Call **/ PalletTemplateCall: { _enum: { @@ -964,7 +973,7 @@ export default { } }, /** - * Lookup124: pallet_rmrk_equip::pallet::Call + * Lookup122: pallet_rmrk_equip::pallet::Call **/ PalletRmrkEquipCall: { _enum: { @@ -1012,7 +1021,7 @@ export default { } }, /** - * Lookup125: rmrk_traits::part::EquippableList> + * Lookup123: rmrk_traits::part::EquippableList> **/ RmrkTraitsPartEquippableList: { _enum: { @@ -1022,7 +1031,7 @@ export default { } }, /** - * Lookup127: rmrk_traits::theme::Theme, sp_core::bounded::bounded_vec::BoundedVec>, S>> + * Lookup125: rmrk_traits::theme::Theme, sp_core::bounded::bounded_vec::BoundedVec>, S>> **/ RmrkTraitsTheme: { name: 'Bytes', @@ -1030,14 +1039,14 @@ export default { inherit: 'bool' }, /** - * Lookup129: rmrk_traits::theme::ThemeProperty> + * Lookup127: rmrk_traits::theme::ThemeProperty> **/ RmrkTraitsThemeThemeProperty: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup132: rmrk_traits::part::PartType, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup130: rmrk_traits::part::PartType, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsPartPartType: { _enum: { @@ -1046,7 +1055,7 @@ export default { } }, /** - * Lookup133: rmrk_traits::part::FixedPart> + * Lookup131: rmrk_traits::part::FixedPart> **/ RmrkTraitsPartFixedPart: { id: 'u32', @@ -1054,7 +1063,7 @@ export default { src: 'Bytes' }, /** - * Lookup134: rmrk_traits::part::SlotPart, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup132: rmrk_traits::part::SlotPart, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsPartSlotPart: { id: 'u32', @@ -1063,7 +1072,7 @@ export default { z: 'u32' }, /** - * Lookup137: pallet_rmrk_core::pallet::Call + * Lookup135: pallet_rmrk_core::pallet::Call **/ PalletRmrkCoreCall: { _enum: { @@ -1174,14 +1183,14 @@ export default { } }, /** - * Lookup142: rmrk_traits::resource::ResourceInfoMin, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup140: rmrk_traits::resource::ResourceInfoMin, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceInfoMin: { id: 'u32', resource: 'RmrkTraitsResourceResourceTypes' }, /** - * Lookup144: rmrk_traits::resource::ResourceTypes, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup142: rmrk_traits::resource::ResourceTypes, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceTypes: { _enum: { @@ -1191,13 +1200,13 @@ export default { } }, /** - * Lookup145: rmrk_traits::resource::BasicResource> + * Lookup143: rmrk_traits::resource::BasicResource> **/ RmrkTraitsResourceBasicResource: { metadata: 'Bytes' }, /** - * Lookup146: rmrk_traits::resource::ComposableResource, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup144: rmrk_traits::resource::ComposableResource, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsResourceComposableResource: { parts: 'Vec', @@ -1206,7 +1215,7 @@ export default { slot: 'Option<(u32,u32)>' }, /** - * Lookup148: rmrk_traits::resource::SlotResource> + * Lookup146: rmrk_traits::resource::SlotResource> **/ RmrkTraitsResourceSlotResource: { base: 'u32', @@ -1214,7 +1223,7 @@ export default { slot: 'u32' }, /** - * Lookup152: pallet_rmrk_market::pallet::Call + * Lookup150: pallet_rmrk_market::pallet::Call **/ PalletRmrkMarketCall: { _enum: { @@ -1251,7 +1260,7 @@ export default { } }, /** - * Lookup153: pallet_uniques::pallet::Call + * Lookup151: pallet_uniques::pallet::Call **/ PalletUniquesCall: { _enum: { @@ -1380,7 +1389,7 @@ export default { } }, /** - * Lookup154: pallet_uniques::types::DestroyWitness + * Lookup152: pallet_uniques::types::DestroyWitness **/ PalletUniquesDestroyWitness: { items: 'Compact', @@ -1388,7 +1397,7 @@ export default { attributes: 'Compact' }, /** - * Lookup156: pallet_utility::pallet::Call + * Lookup154: pallet_utility::pallet::Call **/ PalletUtilityCall: { _enum: { @@ -1407,12 +1416,16 @@ export default { call: 'Call', }, force_batch: { - calls: 'Vec' + calls: 'Vec', + }, + with_weight: { + call: 'Call', + weight: 'SpWeightsWeightV2Weight' } } }, /** - * Lookup158: rmrk_substrate_runtime::OriginCaller + * Lookup156: rmrk_substrate_runtime::OriginCaller **/ RmrkSubstrateRuntimeOriginCaller: { _enum: { @@ -1421,7 +1434,7 @@ export default { } }, /** - * Lookup159: frame_support::dispatch::RawOrigin + * Lookup157: frame_support::dispatch::RawOrigin **/ FrameSupportDispatchRawOrigin: { _enum: { @@ -1431,19 +1444,19 @@ export default { } }, /** - * Lookup160: pallet_sudo::pallet::Error + * Lookup158: pallet_sudo::pallet::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup161: pallet_template::pallet::Error + * Lookup159: pallet_template::pallet::Error **/ PalletTemplateError: { _enum: ['NoneValue', 'StorageOverflow'] }, /** - * Lookup162: rmrk_traits::base::BaseInfo> + * Lookup160: rmrk_traits::base::BaseInfo> **/ RmrkTraitsBaseBaseInfo: { issuer: 'AccountId32', @@ -1451,13 +1464,13 @@ export default { symbol: 'Bytes' }, /** - * Lookup165: pallet_rmrk_equip::pallet::Error + * Lookup163: pallet_rmrk_equip::pallet::Error **/ PalletRmrkEquipError: { _enum: ['PermissionError', 'ItemDoesntExist', 'EquipperDoesntExist', 'NoAvailableBaseId', 'TooManyEquippables', 'NoAvailablePartId', 'MustBeDirectParent', 'PartDoesntExist', 'BaseDoesntExist', 'CantEquipFixedPart', 'NoResourceForThisBaseFoundOnNft', 'CollectionNotEquippable', 'ItemHasNoResourceToEquipThere', 'NoEquippableOnFixedPart', 'NeedsDefaultThemeFirst', 'ItemAlreadyEquipped', 'SlotAlreadyEquipped', 'SlotNotEquipped', 'UnknownError', 'ExceedsMaxPartsPerBase', 'TooManyProperties', 'ItemNotEquipped', 'UnequipperMustOwnEitherItemOrEquipper', 'UnexpectedTryFromIntError', 'UnexpectedVecConversionError'] }, /** - * Lookup166: rmrk_traits::collection::CollectionInfo, sp_core::bounded::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> + * Lookup164: rmrk_traits::collection::CollectionInfo, sp_core::bounded::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> **/ RmrkTraitsCollectionCollectionInfo: { issuer: 'AccountId32', @@ -1467,7 +1480,7 @@ export default { nftsCount: 'u32' }, /** - * Lookup167: rmrk_traits::nft::NftInfo, CollectionId, NftId> + * Lookup165: rmrk_traits::nft::NftInfo, CollectionId, NftId> **/ RmrkTraitsNftNftInfo: { owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple', @@ -1478,14 +1491,14 @@ export default { transferable: 'bool' }, /** - * Lookup169: rmrk_traits::nft::RoyaltyInfo + * Lookup167: rmrk_traits::nft::RoyaltyInfo **/ RmrkTraitsNftRoyaltyInfo: { recipient: 'AccountId32', amount: 'Permill' }, /** - * Lookup172: rmrk_traits::resource::ResourceInfo, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup170: rmrk_traits::resource::ResourceInfo, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceInfo: { id: 'u32', @@ -1494,31 +1507,31 @@ export default { pendingRemoval: 'bool' }, /** - * Lookup176: rmrk_traits::nft::NftChild + * Lookup174: rmrk_traits::nft::NftChild **/ RmrkTraitsNftNftChild: { collectionId: 'u32', nftId: 'u32' }, /** - * Lookup177: PhantomType::phantom_type, sp_core::bounded::bounded_vec::BoundedVec>> + * Lookup175: PhantomType::phantom_type, sp_core::bounded::bounded_vec::BoundedVec>> **/ - PhantomTypePhantomType: '[Lookup178;0]', + PhantomTypePhantomType: '[Lookup176;0]', /** - * Lookup178: rmrk_traits::property::PropertyInfo, sp_core::bounded::bounded_vec::BoundedVec> + * Lookup176: rmrk_traits::property::PropertyInfo, sp_core::bounded::bounded_vec::BoundedVec> **/ RmrkTraitsPropertyPropertyInfo: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup180: pallet_rmrk_core::pallet::Error + * Lookup178: pallet_rmrk_core::pallet::Error **/ PalletRmrkCoreError: { _enum: ['NoneValue', 'StorageOverflow', 'TooLong', 'NoAvailableCollectionId', 'NoAvailableResourceId', 'MetadataNotSet', 'RecipientNotSet', 'NoAvailableNftId', 'NotInRange', 'RoyaltyNotSet', 'CollectionUnknown', 'NoPermission', 'NoWitness', 'CollectionNotEmpty', 'CollectionFullOrLocked', 'CannotSendToDescendentOrSelf', 'ResourceAlreadyExists', 'NftAlreadyExists', 'EmptyResource', 'TooManyRecursions', 'NftIsLocked', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceDoesntExist', 'ResourceNotPending', 'NonTransferable', 'CannotSendEquippedItem', 'CannotAcceptToNewOwner', 'FailedTransferHooksPreCheck', 'FailedTransferHooksPostTransfer'] }, /** - * Lookup181: pallet_rmrk_market::types::ListInfo + * Lookup179: pallet_rmrk_market::types::ListInfo **/ PalletRmrkMarketListInfo: { listedBy: 'AccountId32', @@ -1526,7 +1539,7 @@ export default { expires: 'Option' }, /** - * Lookup183: pallet_rmrk_market::types::Offer + * Lookup181: pallet_rmrk_market::types::Offer **/ PalletRmrkMarketOffer: { maker: 'AccountId32', @@ -1534,13 +1547,13 @@ export default { expires: 'Option' }, /** - * Lookup184: pallet_rmrk_market::pallet::Error + * Lookup182: pallet_rmrk_market::pallet::Error **/ PalletRmrkMarketError: { - _enum: ['NoPermission', 'TokenNotForSale', 'CannotWithdrawOffer', 'CannotUnlistToken', 'CannotOfferOnOwnToken', 'CannotBuyOwnToken', 'UnknownOffer', 'CannotListNftOwnedByNft', 'TokenDoesNotExist', 'OfferTooLow', 'AlreadyOffered', 'OfferHasExpired', 'ListingHasExpired', 'PriceDiffersFromExpected', 'NonTransferable'] + _enum: ['NoPermission', 'TokenNotForSale', 'CannotWithdrawOffer', 'CannotUnlistToken', 'CannotOfferOnOwnToken', 'CannotBuyOwnToken', 'UnknownOffer', 'CannotListNftOwnedByNft', 'TokenDoesNotExist', 'OfferTooLow', 'AlreadyOffered', 'OfferHasExpired', 'ListingHasExpired', 'PriceDiffersFromExpected', 'NonTransferable', 'MarketplaceOwnerNotSet', 'CannotListNft'] }, /** - * Lookup185: pallet_uniques::types::CollectionDetails + * Lookup183: pallet_uniques::types::CollectionDetails **/ PalletUniquesCollectionDetails: { owner: 'AccountId32', @@ -1555,7 +1568,7 @@ export default { isFrozen: 'bool' }, /** - * Lookup188: pallet_uniques::types::ItemDetails + * Lookup186: pallet_uniques::types::ItemDetails **/ PalletUniquesItemDetails: { owner: 'AccountId32', @@ -1564,7 +1577,7 @@ export default { deposit: 'u128' }, /** - * Lookup189: pallet_uniques::types::CollectionMetadata + * Lookup187: pallet_uniques::types::CollectionMetadata **/ PalletUniquesCollectionMetadata: { deposit: 'u128', @@ -1572,7 +1585,7 @@ export default { isFrozen: 'bool' }, /** - * Lookup190: pallet_uniques::types::ItemMetadata + * Lookup188: pallet_uniques::types::ItemMetadata **/ PalletUniquesItemMetadata: { deposit: 'u128', @@ -1580,19 +1593,19 @@ export default { isFrozen: 'bool' }, /** - * Lookup193: pallet_uniques::pallet::Error + * Lookup191: pallet_uniques::pallet::Error **/ PalletUniquesError: { _enum: ['NoPermission', 'UnknownCollection', 'AlreadyExists', 'WrongOwner', 'BadWitness', 'InUse', 'Frozen', 'WrongDelegate', 'NoDelegate', 'Unapproved', 'Unaccepted', 'Locked', 'MaxSupplyReached', 'MaxSupplyAlreadySet', 'MaxSupplyTooSmall', 'UnknownItem', 'NotForSale', 'BidTooLow'] }, /** - * Lookup194: pallet_utility::pallet::Error + * Lookup192: pallet_utility::pallet::Error **/ PalletUtilityError: { _enum: ['TooManyCalls'] }, /** - * Lookup196: sp_runtime::MultiSignature + * Lookup194: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -1602,39 +1615,39 @@ export default { } }, /** - * Lookup197: sp_core::sr25519::Signature + * Lookup195: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup198: sp_core::ecdsa::Signature + * Lookup196: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup201: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup199: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup202: frame_system::extensions::check_tx_version::CheckTxVersion + * Lookup200: frame_system::extensions::check_tx_version::CheckTxVersion **/ FrameSystemExtensionsCheckTxVersion: 'Null', /** - * Lookup203: frame_system::extensions::check_genesis::CheckGenesis + * Lookup201: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup206: frame_system::extensions::check_nonce::CheckNonce + * Lookup204: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup207: frame_system::extensions::check_weight::CheckWeight + * Lookup205: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup208: pallet_transaction_payment::ChargeTransactionPayment + * Lookup206: pallet_transaction_payment::ChargeTransactionPayment **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup209: rmrk_substrate_runtime::Runtime + * Lookup207: rmrk_substrate_runtime::Runtime **/ RmrkSubstrateRuntimeRuntime: 'Null' }; diff --git a/tests/src/interfaces/metadata.json b/tests/src/interfaces/metadata.json index 7312be0c..a756bf84 100644 --- a/tests/src/interfaces/metadata.json +++ b/tests/src/interfaces/metadata.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610e4903000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e7444617461000010000005050014083c70616c6c65745f62616c616e6365732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f7279200104540000200c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6524010c75363400012870726f6f665f73697a6524010c75363400002400000628002800000506002c083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000030000002080034102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677338013c5665633c4469676573744974656d3e0000380000023c003c102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e00060024436f6e73656e7375730800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000400105365616c0800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000500144f74686572040030011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000400000030400000008004400000248004808306672616d655f73797374656d2c4576656e745265636f7264080445014c0454012c000c01147068617365dc011450686173650001146576656e744c010445000118746f70696373e001185665633c543e00004c0858726d726b5f7375627374726174655f72756e74696d653052756e74696d654576656e7400012c1853797374656d04005001706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c4772616e647061040074015470616c6c65745f6772616e6470613a3a4576656e740004002042616c616e636573040088017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500485472616e73616374696f6e5061796d656e7404009001a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e000600105375646f040094016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0007003854656d706c6174654d6f64756c650400a4017c70616c6c65745f74656d706c6174653a3a4576656e743c52756e74696d653e00080024526d726b45717569700400a8018470616c6c65745f726d726b5f65717569703a3a4576656e743c52756e74696d653e00090020526d726b436f72650400ac018070616c6c65745f726d726b5f636f72653a3a4576656e743c52756e74696d653e000a0028526d726b4d61726b65740400c4018870616c6c65745f726d726b5f6d61726b65743a3a4576656e743c52756e74696d653e000b001c556e69717565730400cc017870616c6c65745f756e69717565733a3a4576656e743c52756e74696d653e000c001c5574696c6974790400d8015470616c6c65745f7574696c6974793a3a4576656e74000d0000500c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f5401304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7260013444697370617463684572726f7200013464697370617463685f696e666f5401304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e744964000110686173682c011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e540c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735801344469737061746368436c617373000120706179735f6665655c0110506179730000580c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f7279000200005c0c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000060082873705f72756e74696d653444697370617463684572726f72000134144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040064012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400680128546f6b656e4572726f720007002841726974686d6574696304006c013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007001485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c000064082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7240018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c082873705f72756e74696d653c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000070082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c6179657200010000740c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574780134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909780000027c007c00000408802800800c4c73705f66696e616c6974795f6772616e6470610c617070185075626c69630000040084013c656432353531393a3a5075626c69630000840c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000880c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001281c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e63655365740c010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e63650001207265736572766564180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475738c01185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a0909098c14346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000900c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909940c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400010c14537564696404012c7375646f5f726573756c749801384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e6765640401286f6c645f7375646f6572a001504f7074696f6e3c543a3a4163636f756e7449643e0001043901546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c696564206966206f6e6520657869737465642e285375646f4173446f6e6504012c7375646f5f726573756c749801384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909980418526573756c74080454019c044501600108084f6b04009c000000000c45727204006000000100009c0000040000a004184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000a40c3c70616c6c65745f74656d706c6174651870616c6c6574144576656e740404540001043c536f6d657468696e6753746f726564080010010c7533320000000130543a3a4163636f756e74496400000859014576656e7420646f63756d656e746174696f6e2073686f756c6420656e64207769746820616e20617272617920746861742070726f7669646573206465736372697074697665206e616d657320666f72206576656e7470706172616d65746572732e205b736f6d657468696e672c2077686f5d04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909a80c4470616c6c65745f726d726b5f65717569701870616c6c6574144576656e740404540001142c4261736543726561746564080118697373756572000130543a3a4163636f756e74496400011c626173655f696410011842617365496400000030536c6f74457175697070656410013c6974656d5f636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001206974656d5f6e6674100124543a3a4974656d496400011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400010038536c6f74556e657175697070656410013c6974656d5f636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001206974656d5f6e6674100124543a3a4974656d496400011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f7449640002004845717569707061626c65735570646174656408011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400030044426173654973737565724368616e6765640c01286f6c645f697373756572000130543a3a4163636f756e7449640001286e65775f697373756572000130543a3a4163636f756e74496400011c626173655f696410011842617365496400040004a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909ac0c4070616c6c65745f726d726b5f636f72651870616c6c6574144576656e7404045400014444436f6c6c656374696f6e43726561746564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000000244e66744d696e7465640c01146f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000100244e46544275726e65640c01146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640002004c436f6c6c656374696f6e44657374726f796564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640003001c4e465453656e7414011873656e646572000130543a3a4163636f756e744964000124726563697069656e74b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000144617070726f76616c5f7265717569726564b40110626f6f6c0004002c4e4654416363657074656410011873656e646572000130543a3a4163636f756e744964000124726563697069656e74b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640005002c4e465452656a65637465640c011873656e646572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000600344973737565724368616e6765640c01286f6c645f697373756572000130543a3a4163636f756e7449640001286e65775f697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640007002c50726f7065727479536574100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e00011476616c7565c0013c56616c75654c696d69744f663c543e0008003c50726f706572747952656d6f7665640c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e00090040436f6c6c656374696f6e4c6f636b6564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000a00345265736f7572636541646465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000b00405265736f757263655265706c616365640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000c00405265736f7572636541636365707465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000d003c5265736f7572636552656d6f76616c0c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000e005c5265736f7572636552656d6f76616c41636365707465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000f002c5072696f72697479536574080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400100004a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b00c2c726d726b5f7472616974730c6e6674744163636f756e7449644f72436f6c6c656374696f6e4e66745475706c650c244163636f756e744964010030436f6c6c656374696f6e49640110144e6674496401100108244163636f756e74496404000001244163636f756e74496400000054436f6c6c656374696f6e416e644e66745475706c650800100130436f6c6c656374696f6e496400001001144e6674496400010000b40000050000b804184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000bc101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000c0101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000c40c4870616c6c65745f726d726b5f6d61726b65741870616c6c6574144576656e7404045400011c44546f6b656e5072696365557064617465641001146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001147072696365c801504f7074696f6e3c42616c616e63654f663c543e3e0000048454686520707269636520666f72206120746f6b656e20776173207570646174656424546f6b656e536f6c641401146f776e6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e00010474546f6b656e2077617320736f6c6420746f2061206e6577206f776e65722c546f6b656e4c69737465641001146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e0002046c546f6b656e206c6973746564206f6e204d61726b6574706c61636534546f6b656e556e6c69737465640c01146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400030474546f6b656e20756e6c6973746564206f6e204d61726b6574706c6163652c4f66666572506c6163656410011c6f666665726572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e0004046c4f666665722077617320706c61636564206f6e206120746f6b656e384f6666657257697468647261776e0c011873656e646572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640005044c4f66666572207761732077697468647261776e344f6666657241636365707465641001146f776e6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000604484f666665722077617320616363657074656404a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909c804184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000cc0c3870616c6c65745f756e69717565731870616c6c6574144576656e7408045400044900016c1c437265617465640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011c63726561746f72000130543a3a4163636f756e7449640001146f776e6572000130543a3a4163636f756e7449640000046c412060636f6c6c656374696f6e602077617320637265617465642e30466f72636543726561746564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572000130543a3a4163636f756e74496400010484412060636f6c6c656374696f6e602077617320666f7263652d637265617465642e2444657374726f796564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400020474412060636f6c6c656374696f6e60207761732064657374726f7965642e184973737565640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400030454416e20606974656d6020776173206973737565642e2c5472616e73666572726564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e74496400040468416e20606974656d6020776173207472616e736665727265642e184275726e65640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400050460416e20606974656d60207761732064657374726f7965642e1846726f7a656e080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640006045c536f6d6520606974656d60207761732066726f7a656e2e18546861776564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640007045c536f6d6520606974656d6020776173207468617765642e40436f6c6c656374696f6e46726f7a656e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400080474536f6d652060636f6c6c656374696f6e60207761732066726f7a656e2e40436f6c6c656374696f6e546861776564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400090474536f6d652060636f6c6c656374696f6e6020776173207468617765642e304f776e65724368616e676564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001246e65775f6f776e6572000130543a3a4163636f756e744964000a0448546865206f776e6572206368616e6765642e2c5465616d4368616e676564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000118697373756572000130543a3a4163636f756e74496400011461646d696e000130543a3a4163636f756e74496400011c667265657a6572000130543a3a4163636f756e744964000b0470546865206d616e6167656d656e74207465616d206368616e6765642e40417070726f7665645472616e73666572100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964000c083101416e20606974656d60206f6620612060636f6c6c656374696f6e6020686173206265656e20617070726f7665642062792074686520606f776e65726020666f72207472616e736665722062793461206064656c6567617465602e44417070726f76616c43616e63656c6c6564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964000d081901416e20617070726f76616c20666f722061206064656c656761746560206163636f756e7420746f207472616e736665722074686520606974656d60206f6620616e206974656da860636f6c6c656374696f6e60207761732063616e63656c6c65642062792069747320606f776e6572602e444974656d5374617475734368616e676564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000e041101412060636f6c6c656374696f6e602068617320686164206974732061747472696275746573206368616e676564206279207468652060466f72636560206f726967696e2e54436f6c6c656374696f6e4d657461646174615365740c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c000f04b44e6577206d6574616461746120686173206265656e2073657420666f7220612060636f6c6c656374696f6e602e64436f6c6c656374696f6e4d65746164617461436c6561726564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964001004b44d6574616461746120686173206265656e20636c656172656420666f7220612060636f6c6c656374696f6e602e2c4d65746164617461536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c001104984e6577206d6574616461746120686173206265656e2073657420666f7220616e206974656d2e3c4d65746164617461436c6561726564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964001204984d6574616461746120686173206265656e20636c656172656420666f7220616e206974656d2e2c52656465706f7369746564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001407375636365737366756c5f6974656d73d401385665633c543a3a4974656d49643e001304984d6574616461746120686173206265656e20636c656172656420666f7220616e206974656d2e30417474726962757465536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e00011476616c7565c00174426f756e6465645665633c75382c20543a3a56616c75654c696d69743e00140405014e657720617474726962757465206d6574616461746120686173206265656e2073657420666f7220612060636f6c6c656374696f6e60206f7220606974656d602e40417474726962757465436c65617265640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e0015040501417474726962757465206d6574616461746120686173206265656e20636c656172656420666f7220612060636f6c6c656374696f6e60206f7220606974656d602e684f776e657273686970416363657074616e63654368616e67656408010c77686f000130543a3a4163636f756e7449640001406d617962655f636f6c6c656374696f6eb8015c4f7074696f6e3c543a3a436f6c6c656374696f6e49643e001604c04f776e65727368697020616363657074616e636520686173206368616e67656420666f7220616e206163636f756e742e58436f6c6c656374696f6e4d6178537570706c79536574080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d61785f737570706c7910010c753332001704a44d617820737570706c7920686173206265656e2073657420666f72206120636f6c6c656374696f6e2e304974656d5072696365536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000114707269636518013c4974656d50726963653c542c20493e00014477686974656c69737465645f6275796572a001504f7074696f6e3c543a3a4163636f756e7449643e0018048c546865207072696365207761732073657420666f722074686520696e7374616e63652e404974656d507269636552656d6f766564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640019049c54686520707269636520666f722074686520696e7374616e6365207761732072656d6f7665642e284974656d426f75676874140128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000114707269636518013c4974656d50726963653c542c20493e00011873656c6c6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964001a044c416e206974656d2077617320626f756768742e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909d0101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000d40000021000d80c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000118404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7260013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7260013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c749801384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909dc08306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000e00000022c00e4000002e800e800000408101000ec08306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ef0014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65f4016473705f72756e74696d653a3a52756e74696d65537472696e670000f00000061000f40000050200f80c306672616d655f73797374656d1870616c6c65741043616c6c0404540001242866696c6c5f626c6f636b040114726174696ffc011c50657262696c6c00000405014120646973706174636820746861742077696c6c2066696c6c2074686520626c6f636b2077656967687420757020746f2074686520676976656e20726174696f2e1872656d61726b04011872656d61726b30011c5665633c75383e000114684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657328010c753634000204f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646530011c5665633c75383e0003306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646530011c5665633c75383e000424190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e2c7365745f73746f726167650401146974656d73010101345665633c4b657956616c75653e0005046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973090101205665633c4b65793e000604744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697830010c4b657900011c7375626b65797310010c75333200071011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b30011c5665633c75383e000804a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632efc0c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c75333200000101000002050100050100000408303000090100000230000d010c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373110101845065724469737061746368436c6173733c57656967687473506572436c6173733e000011010c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454011501000c01186e6f726d616c150101045400012c6f7065726174696f6e616c15010104540001246d616e6461746f72791501010454000015010c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963190101384f7074696f6e3c5765696768743e0001246d61785f746f74616c190101384f7074696f6e3c5765696768743e0001207265736572766564190101384f7074696f6e3c5765696768743e0000190104184f7074696f6e04045401200108104e6f6e6500000010536f6d6504002000000100001d010c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178210101545065724469737061746368436c6173733c7533323e000021010c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400002501082873705f776569676874733c52756e74696d65446257656967687400000801107265616428010c753634000114777269746528010c75363400002901082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65f4013452756e74696d65537472696e67000124696d706c5f6e616d65f4013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069732d01011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e080108753800002d01040c436f77040454013101000400310100000031010000023501003501000004083901100039010000030800000008003d01000005040041010c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c65744501101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454012c045300000400e001185665633c543e000049010c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77240124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4d01101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454015101045300000400590101185665633c543e00005101104473705f636f6e73656e7375735f617572611c737232353531392c6170705f73723235353139185075626c6963000004005501013c737232353531393a3a5075626c6963000055010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d000059010000025101005d01084873705f636f6e73656e7375735f736c6f747310536c6f740000040028010c75363400006101083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300006501083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965736901016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564b801244f7074696f6e3c4e3e00006901101c73705f636f72651c626f756e646564407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454017c0453000004007801185665633c543e00006d010c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66710101bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f669d010140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66710101bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f669d010140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d6265720002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7101084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f66080448012c044e0110000801187365745f6964280114536574496400013065717569766f636174696f6e7501014845717569766f636174696f6e3c482c204e3e00007501084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e080448012c044e011001081c507265766f7465040079010139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d6974040091010141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100007901084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401800456017d01045301810100100130726f756e645f6e756d62657228010c7536340001206964656e74697479800108496400011466697273748d01011828562c2053290001187365636f6e648d01011828562c20532900007d01084066696e616c6974795f6772616e6470611c507265766f7465080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e000081010c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040085010148656432353531393a3a5369676e6174757265000085010c1c73705f636f72651c65643235353139245369676e617475726500000400890101205b75383b2036345d000089010000034000000008008d01000004087d018101009101084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401800456019501045301810100100130726f756e645f6e756d62657228010c7536340001206964656e74697479800108496400011466697273749901011828562c2053290001187365636f6e649901011828562c20532900009501084066696e616c6974795f6772616e64706124507265636f6d6d6974080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e000099010000040895018101009d01081c73705f636f726510566f696400010000a1010c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909a501101c73705f636f72651c626f756e646564407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a901045300000400b10101185665633c543e0000a901083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964390101384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73ad01011c526561736f6e730000ad01083c70616c6c65745f62616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000b101000002a90100b501101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401b901045300000400bd0101185665633c543e0000b901083c70616c6c65745f62616c616e6365732c52657365727665446174610844526573657276654964656e7469666965720139011c42616c616e6365011800080108696439010144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000bd01000002b90100c101083c70616c6c65745f62616c616e6365732052656c65617365730001081856315f305f300000001856325f305f3000010000c5010c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000118207472616e7366657208011064657374c90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565d5010128543a3a42616c616e6365000064d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e61012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f7220696e70757420636f6e66696794202074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e31012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c6578382020636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365cc2020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e5d0120202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e5d0120202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c20636865636bdc202020207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e2c7365745f62616c616e63650c010c77686fc90101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565d5010128543a3a42616c616e63650001306e65775f7265736572766564d5010128543a3a42616c616e636500012090536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c3101616c736f20616c7465722074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e6365602920617070726f7072696174656c792e1501496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742cfc69742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365c90101504163636f756e7449644c6f6f6b75704f663c543e00011064657374c90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565d5010128543a3a42616c616e63650002184d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e2823203c7765696768743e4d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e74206973206e6f747c2020617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e4c7472616e736665725f6b6565705f616c69766508011064657374c90101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565d5010128543a3a42616c616e63650003184d0153616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c207468653c6f726967696e206163636f756e742e00b8393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e00c05b607472616e73666572605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374c90101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665b40110626f6f6c00044405015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746fc820206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e2023203c7765696768743e39012d204f2831292e204a757374206c696b65207472616e736665722c206275742072656164696e672074686520757365722773207472616e7366657261626c652062616c616e63652066697273742e302020233c2f7765696768743e3c666f7263655f756e7265736572766508010c77686fc90101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec9010c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e646578019c011408496404000001244163636f756e74496400000014496e6465780400cd0101304163636f756e74496e6465780001000c526177040030011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400d10101205b75383b2032305d00040000cd010000069c00d101000003140000000800d5010000061800d9010c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001203856657374696e6742616c616e63650000049856657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c7565544c69717569646974795265737472696374696f6e73000104c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f736974244b656570416c6976650004048c5472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e745c4578697374696e6756657374696e675363686564756c65000504c8412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742c446561644163636f756e740006048842656e6566696369617279206163636f756e74206d757374207072652d65786973743c546f6f4d616e795265736572766573000704ac4e756d626572206f66206e616d656420726573657276657320657863656564204d6178526573657276657304b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909dd010c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e101086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e5010c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000110107375646f04011063616c6ce901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6ce901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577c90101504163636f756e7449644c6f6f6b75704f663c543e0002285d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686fc90101504163636f756e7449644c6f6f6b75704f663c543e00011063616c6ce901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee9010858726d726b5f7375627374726174655f72756e74696d652c52756e74696d6543616c6c00012c1853797374656d0400f801ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400490101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c4772616e64706104006d0101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e0004002042616c616e6365730400c50101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500105375646f0400e50101a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0007003854656d706c6174654d6f64756c650400ed0101cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54656d706c6174654d6f64756c652c2052756e74696d653e00080024526d726b45717569700400f10101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b45717569702c2052756e74696d653e00090020526d726b436f72650400250201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b436f72652c2052756e74696d653e000a0028526d726b4d61726b65740400610201bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b4d61726b65742c2052756e74696d653e000b001c556e69717565730400650201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c556e69717565732c2052756e74696d653e000c001c5574696c6974790400710201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e000d0000ed010c3c70616c6c65745f74656d706c6174651870616c6c65741043616c6c04045400010830646f5f736f6d657468696e67040124736f6d657468696e6710010c7533320000085901416e206578616d706c6520646973706174636861626c6520746861742074616b657320612073696e676c65732076616c7565206173206120706172616d657465722c20777269746573207468652076616c756520746f4d0173746f7261676520616e6420656d69747320616e206576656e742e20546869732066756e6374696f6e206d75737420626520646973706174636865642062792061207369676e65642065787472696e7369632e2c63617573655f6572726f72000104d8416e206578616d706c6520646973706174636861626c652074686174206d6179207468726f77206120637573746f6d206572726f722e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ef1010c4470616c6c65745f726d726b5f65717569701870616c6c65741043616c6c040454000120486368616e67655f626173655f69737375657208011c626173655f69641001184261736549640001286e65775f697373756572c901018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650000186c4368616e67652074686520697373756572206f6620612042617365002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ea02d2060626173655f6964603a20626173655f696420746f206368616e676520697373756572206f66842d20606e65775f697373756572603a20426173652773206e6577206973737565721465717569701401106974656de8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d4964290001206571756970706572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d49642900012c7265736f757263655f69641001285265736f75726365496400011062617365100118426173654964000110736c6f74100118536c6f7449640001281d014571756970732061206368696c64204e46542773207265736f7572636520746f206120706172656e74277320736c6f742c20696620616c6c2061726520617661696c61626c652e0901457175697070696e67206f7065726174696f6e7320617265206d61696e7461696e656420696e736964652074686520457175697070696e67732073746f726167652efd014d6f64656c6564206166746572205b657175697020696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569702e6d6429002c506172616d65746572733a0d012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206e6f74206e65636573736172696c7920616e797468696e6720656c7365802d206974656d3a204368696c64204e4654206265696e67206571756970706564c02d2065717569707065723a20506172656e74204e46542077686963682077696c6c20657175697020746865206974656d61012d20626173653a204944206f6620746865206261736520776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e6761012d20736c6f743a204944206f662074686520736c6f7420776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e671c756e65717569701001106974656de8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d496429000128756e6571756970706572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d49642900011062617365100118426173654964000110736c6f74100118536c6f744964000238dc556e6571756970732061206368696c64204e46542773207265736f757263652066726f6d2069747320706172656e74277320736c6f742e5043616e206265207375636365737366756c2069665c2d204974656d2068617320626565656e206275726e6564fc2d204974656d20697320657175697070656420616e642065787472696e7369632063616c6c656420627920657175697070696e67206974656d206f776e6572f42d204974656d20697320657175697070656420616e642065787472696e7369632063616c6c6564206279206571756970706572204e4654206f776e65720901457175697070696e67206f7065726174696f6e7320617265206d61696e7461696e656420696e736964652074686520457175697070696e67732073746f726167652efd014d6f64656c6564206166746572205b657175697020696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569702e6d6429002c506172616d65746572733a0d012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206e6f74206e65636573736172696c7920616e797468696e6720656c7365882d206974656d3a204368696c64204e4654206265696e6720756e6571756970706564d02d20756e65717569707065723a20506172656e74204e46542077686963682077696c6c20756e657175697020746865206974656d61012d20626173653a204944206f6620746865206261736520776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e6761012d20736c6f743a204944206f662074686520736c6f7420776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e672865717569707061626c650c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012c65717569707061626c6573f50101450145717569707061626c654c6973743c426f756e6465645665633c543a3a436f6c6c656374696f6e49642c20543a3a0a4d6178436f6c6c656374696f6e7345717569707061626c65506572506172743e2c3e00032061015570646174657320746865206172726179206f6620436f6c6c656374696f6e7320616c6c6f77656420746f20626520657175697070656420746f2061204261736527732073706563696669656420536c6f7420506172742e25024d6f64656c6564206166746572205b65717569707061626c6520696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569707061626c652e6d6429002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e6720757064617465645d012d2065717569707061626c65733a20546865206c697374206f662065717569707061626c657320746861742077696c6c206f76657272696465207468652063757272656e74204571756970706161626c6573206c6973743865717569707061626c655f6164640c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012865717569707061626c6510013c543a3a436f6c6c656374696f6e496400041c5501416464732061206e657720636f6c6c656374696f6e207468617420697320616c6c6f77656420746f20626520657175697070656420746f2061204261736527732073706563696669656420536c6f7420506172742e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e67207570646174656441012d2065717569707061626c653a205468652065717569707061626c6520746861742077696c6c20626520616464656420746f207468652063757272656e74204571756970706161626c6573206c6973744465717569707061626c655f72656d6f76650c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012865717569707061626c6510013c543a3a436f6c6c656374696f6e496400051cb852656d6f7665206120636f6c6c656374696f6e2066726f6d207468652065717569707061626c6573206c6973742e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e67207570646174656451012d2065717569707061626c653a205468652065717569707061626c6520746861742077696c6c2062652072656d6f7665642066726f6d207468652063757272656e74204571756970706161626c6573206c697374247468656d655f61646408011c626173655f69641001184261736549640001147468656d65fd010144426f756e6465645468656d654f663c543e0006345c416464732061205468656d6520746f206120426173652e15024d6f64656c6564206166746572205b7468656d6561646420696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f7468656d656164642e6d64299c5468656d6573206172652073746f72656420696e20746865205468656d65732073746f72616765050141205468656d65206e616d6564202264656661756c7422206973207265717569726564207072696f7220746f20616464696e67206f74686572205468656d65732e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365d82d20626173655f69643a20546865204261736520636f6e7461696e696e6720746865205468656d6520746f20626520757064617465645d012d207468656d653a20546865205468656d6520746f2061646420746f2074686520426173652e202041205468656d65206861732061206e616d6520616e642070726f706572746965732c2077686963682061726520616e490120206172726179206f66205b6b65792c2076616c75652c20696e68657269745d2e20205468697320617272617920697320626f756e646564206279204d617850726f706572746965735065725468656d652ecc20202d206b65793a2061726269747261727920426f756e646564537472696e672c20646566696e656420627920636c69656e74d420202d2076616c75653a2061726269747261727920426f756e646564537472696e672c20646566696e656420627920636c69656e746820202d20696e68657269743a206f7074696f6e616c20626f6f6c2c6372656174655f626173650c0124626173655f74797065d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00011873796d626f6cd00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00011470617274730d0201e501426f756e6465645665633c50617274547970653c537472696e674c696d69744f663c543e2c20426f756e6465645665633c543a3a436f6c6c656374696f6e49642c20540a3a3a4d6178436f6c6c656374696f6e7345717569707061626c65506572506172743e2c3e2c20543a3a50617274734c696d69742c3e0007244c437265617465732061206e657720426173652ef5014d6f64656c6564206166746572205b6261736520696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f626173652e6d6429002c506172616d65746572733af02d206f726967696e3a2043616c6c65722c2077696c6c2062652061737369676e65642061732074686520697373756572206f662074686520426173658c2d20626173655f747970653a206d6564696120747970652c20652e672e20227376672209012d2073796d626f6c3a2061726269747261727920636c69656e742d63686f73656e2073796d626f6c2c20652e672e20226b616e617269615f7375706572626972642241012d2070617274733a206172726179206f6620466978656420616e6420536c6f7420706172747320636f6d706f73696e672074686520626173652c20636f6e66696e656420696e206c656e67746820627930202050617274734c696d6974042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ef5010c2c726d726b5f74726169747310706172743845717569707061626c654c6973740454426f756e646564436f6c6c656374696f6e4c69737401f901010c0c416c6c00000014456d70747900010018437573746f6d0400f9010154426f756e646564436f6c6c656374696f6e4c69737400020000f901101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e0000fd010c2c726d726b5f747261697473147468656d65145468656d650834426f756e646564537472696e6701d058426f756e6465645468656d6550726f70657274696573010102000c01106e616d65d00134426f756e646564537472696e6700012870726f7065727469657301020158426f756e6465645468656d6550726f7065727469657300011c696e6865726974b40110626f6f6c00000102101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454010502045300000400090201185665633c543e000005020c2c726d726b5f747261697473147468656d65345468656d6550726f70657274790434426f756e646564537472696e6701d00008010c6b6579d00134426f756e646564537472696e6700011476616c7565d00134426f756e646564537472696e67000009020000020502000d02101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454011102045300000400210201185665633c543e000011020c2c726d726b5f74726169747310706172742050617274547970650834426f756e646564537472696e6701d054426f756e646564436f6c6c656374696f6e4c69737401f9010108244669786564506172740400150201604669786564506172743c426f756e646564537472696e673e00000020536c6f74506172740400190201b8536c6f74506172743c426f756e646564537472696e672c20426f756e646564436f6c6c656374696f6e4c6973743e0001000015020c2c726d726b5f7472616974731070617274244669786564506172740434426f756e646564537472696e6701d0000c010869641001185061727449640001047a1001185a496e64657800010c737263d00134426f756e646564537472696e67000019020c2c726d726b5f747261697473107061727420536c6f74506172740834426f756e646564537472696e6701d054426f756e646564436f6c6c656374696f6e4c69737401f90100100108696410011850617274496400012865717569707061626c65f501019445717569707061626c654c6973743c426f756e646564436f6c6c656374696f6e4c6973743e00010c7372631d0201544f7074696f6e3c426f756e646564537472696e673e0001047a1001185a496e64657800001d0204184f7074696f6e04045401d00108104e6f6e6500000010536f6d650400d00000010000210200000211020025020c4070616c6c65745f726d726b5f636f72651870616c6c65741043616c6c04045400014c206d696e745f6e66742001146f776e6572a001504f7074696f6e3c543a3a4163636f756e7449643e0001186e66745f6964100124543a3a4974656d4964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000144726f79616c74795f726563697069656e74a001504f7074696f6e3c543a3a4163636f756e7449643e00011c726f79616c74792902013c4f7074696f6e3c5065726d696c6c3e0001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e0001307472616e7366657261626c65b40110626f6f6c0001247265736f7572636573310201904f7074696f6e3c426f756e6465645265736f75726365496e666f547970654f663c543e3e000024a04d696e747320616e204e465420696e207468652073706563696669656420636f6c6c656374696f6e9c53657473206d6574616461746120616e642074686520726f79616c747920617474726962757465002c506172616d65746572733af02d2060636f6c6c656374696f6e5f6964603a2054686520636f6c6c656374696f6e206f662074686520617373657420746f206265206d696e7465642ed02d20606e66745f6964603a20546865206e66742076616c7565206f662074686520617373657420746f206265206d696e7465642e982d2060726563697069656e74603a205265636569766572206f662074686520726f79616c747901012d2060726f79616c7479603a205065726d696c6c616765207265776172642066726f6d206561636820747261646520666f722074686520526563697069656e74e42d20606d65746164617461603a2041726269747261727920646174612061626f757420616e206e66742c20652e672e20495046532068617368606d696e745f6e66745f6469726563746c795f746f5f6e66742001146f776e6572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d4964290001186e66745f6964100124543a3a4974656d4964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000144726f79616c74795f726563697069656e74a001504f7074696f6e3c543a3a4163636f756e7449643e00011c726f79616c74792902013c4f7074696f6e3c5065726d696c6c3e0001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e0001307472616e7366657261626c65b40110626f6f6c0001247265736f7572636573310201904f7074696f6e3c426f756e6465645265736f75726365496e666f547970654f663c543e3e00012401014d696e747320616e204e465420696e207468652073706563696669656420636f6c6c656374696f6e206469726563746c7920746f20616e6f74686572204e46549c53657473206d6574616461746120616e642074686520726f79616c747920617474726962757465002c506172616d65746572733adc2d2060636f6c6c656374696f6e5f6964603a2054686520636c617373206f662074686520617373657420746f206265206d696e7465642ed02d20606e66745f6964603a20546865206e66742076616c7565206f662074686520617373657420746f206265206d696e7465642e982d2060726563697069656e74603a205265636569766572206f662074686520726f79616c747901012d2060726f79616c7479603a205065726d696c6c616765207265776172642066726f6d206561636820747261646520666f722074686520526563697069656e74e42d20606d65746164617461603a2041726269747261727920646174612061626f757420616e206e66742c20652e672e20495046532068617368446372656174655f636f6c6c656374696f6e100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00010c6d6178b8012c4f7074696f6e3c7533323e00011873796d626f6c59020170426f756e646564436f6c6c656374696f6e53796d626f6c4f663c543e0002044c437265617465206120636f6c6c656374696f6e206275726e5f6e6674080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000304206275726e206e66744864657374726f795f636f6c6c656374696f6e040134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640004044864657374726f7920636f6c6c656374696f6e1073656e640c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001246e65775f6f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e00051c11015472616e73666572732061204e46542066726f6d20616e204163636f756e74206f72204e4654204120746f20616e6f74686572204163636f756e74206f72204e46542042002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ef42d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265207472616e73666572726564bc2d20606e66745f6964603a206e6674206964206f6620746865206e667420746f206265207472616e736665727265642d012d20606e65775f6f776e6572603a206e6577206f776e6572206f6620746865206e66742077686963682063616e2062652065697468657220616e206163636f756e74206f722061204e4654286163636570745f6e66740c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001246e65775f6f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000620f44163636570747320616e204e46542073656e742066726f6d20616e6f74686572206163636f756e7420746f2073656c66206f72206f776e6564204e4654002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ee82d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265206163636570746564b02d20606e66745f6964603a206e6674206964206f6620746865206e667420746f20626520616363657074656451012d20606e65775f6f776e6572603a20656974686572206f726967696e2773206163636f756e74204944206f72206f726967696e2d6f776e6564204e46542c2077686963686576657220746865204e46542077617324202073656e7420746f2872656a6563745f6e6674080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000718f452656a6563747320616e204e46542073656e742066726f6d20616e6f74686572206163636f756e7420746f2073656c66206f72206f776e6564204e4654002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ee82d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265206163636570746564b02d20606e66745f6964603a206e6674206964206f6620746865206e667420746f206265206163636570746564606368616e67655f636f6c6c656374696f6e5f697373756572080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001286e65775f697373756572c901018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000818844368616e67652074686520697373756572206f66206120636f6c6c656374696f6e002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6efc2d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206368616e676520697373756572206f669c2d20606e65775f697373756572603a20436f6c6c656374696f6e2773206e657720697373756572307365745f70726f7065727479100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e00011476616c7565c0013c56616c75654c696d69744f663c543e00090470736574206120637573746f6d2076616c7565206f6e20616e204e46543c6c6f636b5f636f6c6c656374696f6e040134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000a043c6c6f636b20636f6c6c656374696f6e486164645f62617369635f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f757263654502017c42617369635265736f757263653c537472696e674c696d69744f663c543e3e00012c7265736f757263655f69641001285265736f757263654964000b0454437265617465206261736963207265736f757263655c6164645f636f6d706f7361626c655f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f757263654902012101436f6d706f7361626c655265736f757263653c537472696e674c696d69744f663c543e2c20426f756e6465645665633c5061727449642c20543a3a50617274734c696d69740a3e3e00012c7265736f757263655f69641001285265736f757263654964000c046843726561746520636f6d706f7361626c65207265736f75726365446164645f736c6f745f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f7572636551020178536c6f745265736f757263653c537472696e674c696d69744f663c543e3e00012c7265736f757263655f69641001285265736f757263654964000d045043726561746520736c6f74207265736f75726365407265706c6163655f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f7572636541020109015265736f7572636554797065733c537472696e674c696d69744f663c543e2c20426f756e6465645665633c5061727449642c20543a3a50617274734c696d69743e3e00012c7265736f757263655f69641001285265736f757263654964000e04585265706c616365207265736f757263652062792069643c6163636570745f7265736f757263650c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000f04e061636365707420746865206164646974696f6e206f662061206e6577207265736f7572636520746f20616e206578697374696e67204e46543c72656d6f76655f7265736f757263650c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f7572636549640010043c72656d6f7665207265736f757263655c6163636570745f7265736f757263655f72656d6f76616c0c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964001104cc616363657074207468652072656d6f76616c206f662061207265736f75726365206f6620616e206578697374696e67204e4654307365745f7072696f726974790c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001287072696f7269746965735d0201a0426f756e6465645665633c5265736f7572636549642c20543a3a4d61785072696f7269746965733e001204a8736574206120646966666572656e74206f72646572206f66207265736f75726365207072696f72697479042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000310204184f7074696f6e0404540135020108104e6f6e6500000010536f6d650400350200000100003502101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454013902045300000400550201185665633c543e000039020c2c726d726b5f747261697473207265736f757263653c5265736f75726365496e666f4d696e0834426f756e646564537472696e6701d030426f756e6465645061727473013d020008010869641001285265736f7572636549640001207265736f75726365410201a85265736f7572636554797065733c426f756e646564537472696e672c20426f756e64656450617274733e00003d02101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e000041020c2c726d726b5f747261697473207265736f75726365345265736f7572636554797065730834426f756e646564537472696e6701d030426f756e6465645061727473013d02010c14426173696304004502017042617369635265736f757263653c426f756e646564537472696e673e00000028436f6d706f7361626c650400490201bc436f6d706f7361626c655265736f757263653c426f756e646564537472696e672c20426f756e64656450617274733e00010010536c6f7404005102016c536c6f745265736f757263653c426f756e646564537472696e673e0002000045020c2c726d726b5f747261697473207265736f757263653442617369635265736f757263650434426f756e646564537472696e6701d0000401206d65746164617461d00134426f756e646564537472696e67000049020c2c726d726b5f747261697473207265736f7572636548436f6d706f7361626c655265736f757263650834426f756e646564537472696e6701d030426f756e6465645061727473013d020010011470617274733d020130426f756e6465645061727473000110626173651001184261736549640001206d657461646174611d0201544f7074696f6e3c426f756e646564537472696e673e000110736c6f744d0201604f7074696f6e3c284261736549642c20536c6f744964293e00004d0204184f7074696f6e04045401e80108104e6f6e6500000010536f6d650400e8000001000051020c2c726d726b5f747261697473207265736f7572636530536c6f745265736f757263650434426f756e646564537472696e6701d0000c0110626173651001184261736549640001206d657461646174611d0201544f7074696f6e3c426f756e646564537472696e673e000110736c6f74100118536c6f744964000055020000023902005902101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e00005d02101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e000061020c4870616c6c65745f726d726b5f6d61726b65741870616c6c65741043616c6c0404540001180c6275790c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e74c801504f7074696f6e3c42616c616e63654f663c543e3e00002051014275792061206c6973746564204e46542e20456e73757265207468617420746865204e465420697320617661696c61626c6520666f7220707572636861736520616e6420686173206e6f7420726563656e746c79806265656e207075726368617365642c2073656e742c206f72206275726e65642e002c506172616d65746572733ab0092d20606f726967696e60202d204163636f756e74206f662074686520706f74656e7469616c206275796572c8092d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e465490092d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654e0092d2060616d6f756e7460202d204f7074696f6e616c20707269636520617420776869636820627579657220707572636861736564206174106c697374100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e00011c65787069726573b801584f7074696f6e3c543a3a426c6f636b4e756d6265723e00012c4d014c697374206120524d524b204e4654206f6e20746865204d61726b6574706c61636520666f722070757263686173652e2041206c697374696e672063616e2062652063616e63656c6c65642c20616e6420697359016175746f6d61746963616c6c7920636f6e736964657265642063616e63656c6c6564207768656e2061206062757960206973206578656375746564206f6e20746f70206f66206120676976656e206c697374696e672e5501416e204e465420746861742068617320616e6f74686572204e465420617320697473206f776e65722043414e4e4f54206265206c69737465642e20416e204e4654206f776e65642062792061204e4654206d757374c066697273742062652073656e7420746f20616e206163636f756e74206265666f7265206265696e67206c69737465642e002c506172616d65746572733aec092d20606f726967696e60202d204163636f756e74206f66206f776e6572206f662074686520524d524b204e465420746f206265206c6973746564c8092d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e465490092d20606e66745f696460202d204e4654206964206f662074686520524d524b204e46548c092d2060616d6f756e7460202d205072696365206f662074686520524d524b204e46540101092d20606578706972657360202d204f7074696f6e616c20426c6f636b4e756d62657220666f72207768656e20746865206c697374696e67206578706972657318756e6c697374080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640002182d01556e6c697374206120524d524b204e4654206f6e20746865204d61726b6574706c61636520616e642072656d6f76652066726f6d2073746f7261676520696e20604c697374696e6773602e002c506172616d65746572733ac42d20606f726967696e60202d204163636f756e74206f776e6572206f6620746865206c697374656420524d524b204e4654c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654286d616b655f6f66666572100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e00011c65787069726573b801584f7074696f6e3c543a3a426c6f636b4e756d6265723e00032459014d616b6520616e206f66666572206f6e206120524d524b204e465420666f722070757263686173652e20416e206f666665722063616e20626520736574207769746820616e2065787069726174696f6e207768657265e4746865206f666665722063616e206e6f206c6f6e6765722062652061636365707465642062792074686520524d524b204e4654206f776e6572002c506172616d65746572733aac2d20606f726967696e60202d204163636f756e74206f662074686520706f74656e7469616c206275796572c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654882d2060616d6f756e7460202d205072696365206f662074686520524d524b204e4654a02d206065787069726174696f6e60202d2045787069726174696f6e206f6620746865206f666665723877697468647261775f6f66666572080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400041c5901576974686472617720616e206f66666572206f6e206120524d524b204e46542c20737563682074686174206974206973206e6f206c6f6e67657220617661696c61626c6520746f20626520616363657074656420627934746865204e4654206f776e6572002c506172616d65746572733adc2d20606f726967696e60202d204163636f756e7420746861742077616e747320746f207769746864726177207468656972206f66666572c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654306163636570745f6f666665720c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400011c6f666665726572000130543a3a4163636f756e744964000500042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e65020c3870616c6c65745f756e69717565731870616c6c65741043616c6c08045400044900016818637265617465080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011461646d696ec90101504163636f756e7449644c6f6f6b75704f663c543e000040090149737375652061206e657720636f6c6c656374696f6e206f66206e6f6e2d66756e6769626c65206974656d732066726f6d2061207075626c6963206f726967696e2e001d0154686973206e657720636f6c6c656374696f6e20686173206e6f206974656d7320696e697469616c6c7920616e6420697473206f776e657220697320746865206f726967696e2e006101546865206f726967696e206d75737420636f6e666f726d20746f2074686520636f6e6669677572656420604372656174654f726967696e6020616e6420686176652073756666696369656e742066756e647320667265652e00ac604974656d4465706f736974602066756e6473206f662073656e646572206172652072657365727665642e002c506172616d65746572733a61012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206e657720636f6c6c656374696f6e2e2054686973206d757374206e6f742062652063757272656e746c7920696e207573652e45012d206061646d696e603a205468652061646d696e206f66207468697320636f6c6c656374696f6e2e205468652061646d696e2069732074686520696e697469616c2061646472657373206f662065616368986d656d626572206f662074686520636f6c6c656374696f6e27732061646d696e207465616d2e0098456d69747320604372656174656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f2831296030666f7263655f6372656174650c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c90101504163636f756e7449644c6f6f6b75704f663c543e000130667265655f686f6c64696e67b40110626f6f6c000144190149737375652061206e657720636f6c6c656374696f6e206f66206e6f6e2d66756e6769626c65206974656d732066726f6d20612070726976696c65676564206f726967696e2e00ac54686973206e657720636f6c6c656374696f6e20686173206e6f206974656d7320696e697469616c6c792e00a4546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e602e009c556e6c696b652060637265617465602c206e6f2066756e6473206172652072657365727665642e0049012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206e6577206974656d2e2054686973206d757374206e6f742062652063757272656e746c7920696e207573652e39012d20606f776e6572603a20546865206f776e6572206f66207468697320636f6c6c656374696f6e206f66206974656d732e20546865206f776e6572206861732066756c6c207375706572757365723420207065726d697373696f6e7321016f7665722074686973206974656d2c20627574206d6179206c61746572206368616e676520616e6420636f6e66696775726520746865207065726d697373696f6e73207573696e6790607472616e736665725f6f776e6572736869706020616e6420607365745f7465616d602e00ac456d6974732060466f7263654372656174656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f283129601c64657374726f79080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011c7769746e6573736902013844657374726f795769746e65737300023c9c44657374726f79206120636f6c6c656374696f6e206f662066756e6769626c65206974656d732e005d01546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e60206f72206d75737420626520605369676e65646020616e64207468652073656e646572206d75737420626520746865686f776e6572206f66207468652060636f6c6c656374696f6e602e0005012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e20746f2062652064657374726f7965642e31012d20607769746e657373603a20496e666f726d6174696f6e206f6e20746865206974656d73206d696e74656420696e2074686520636f6c6c656374696f6e2e2054686973206d75737420626520636f72726563742e00a0456d697473206044657374726f79656460206576656e74207768656e207375636365737366756c2e00645765696768743a20604f286e202b206d29602077686572653a542d20606e203d207769746e6573732e6974656d7360782d20606d203d207769746e6573732e6974656d5f6d657461646174617360682d206061203d207769746e6573732e6174747269627574657360106d696e740c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572c90101504163636f756e7449644c6f6f6b75704f663c543e00032ca04d696e7420616e206974656d206f66206120706172746963756c617220636f6c6c656374696f6e2e004101546865206f726967696e206d757374206265205369676e656420616e64207468652073656e646572206d7573742062652074686520497373756572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265206d696e7465642ec82d20606974656d603a20546865206974656d2076616c7565206f6620746865206974656d20746f206265206d696e7465642ed82d206062656e6566696369617279603a2054686520696e697469616c206f776e6572206f6620746865206d696e746564206974656d2e0094456d697473206049737375656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f28312960106275726e0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400012c636865636b5f6f776e65726d0201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e0004345844657374726f7920612073696e676c65206974656d2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c64206265207468652041646d696e206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265206275726e65642eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265206275726e65642e51012d2060636865636b5f6f776e6572603a2049662060536f6d6560207468656e20746865206f7065726174696f6e2077696c6c206661696c2077697468206057726f6e674f776e65726020756e6c657373207468657820206974656d206973206f776e656420627920746869732076616c75652e00b4456d69747320604275726e6564602077697468207468652061637475616c20616d6f756e74206275726e65642e00385765696768743a20604f283129607c4d6f6465733a2060636865636b5f6f776e65722e69735f736f6d652829602e207472616e736665720c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064657374c90101504163636f756e7449644c6f6f6b75704f663c543e000544c04d6f766520616e206974656d2066726f6d207468652073656e646572206163636f756e7420746f20616e6f746865722e00b454686973207265736574732074686520617070726f766564206163636f756e74206f6620746865206974656d2e00f44f726967696e206d757374206265205369676e656420616e6420746865207369676e696e67206163636f756e74206d757374206265206569746865723a802d207468652041646d696e206f66207468652060636f6c6c656374696f6e603b682d20746865204f776e6572206f662074686520606974656d603b35012d2074686520617070726f7665642064656c656761746520666f722074686520606974656d602028696e207468697320636173652c2074686520617070726f76616c206973207265736574292e0028417267756d656e74733af42d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265207472616e736665727265642ec42d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265207472616e736665727265642edc2d206064657374603a20546865206163636f756e7420746f2072656365697665206f776e657273686970206f6620746865206974656d2e0050456d69747320605472616e73666572726564602e00385765696768743a20604f283129602472656465706f736974080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146974656d73d401385665633c543a3a4974656d49643e0006449852656576616c7561746520746865206465706f73697473206f6e20736f6d65206974656d732e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f2062652066726f7a656e2e29012d20606974656d73603a20546865206974656d73206f662074686520636f6c6c656374696f6e2077686f7365206465706f736974732077696c6c2062652072656576616c75617465642e002d014e4f54453a205468697320657869737473206173206120626573742d6566666f72742066756e6374696f6e2e20416e79206974656d732077686963682061726520756e6b6e6f776e206f723901696e207468652063617365207468617420746865206f776e6572206163636f756e7420646f6573206e6f7420686176652072657365727661626c652066756e647320746f2070617920666f7220614d016465706f73697420696e637265617365206172652069676e6f7265642e2047656e6572616c6c7920746865206f776e65722069736e277420676f696e6720746f2063616c6c2074686973206f6e206974656d73550177686f7365206578697374696e67206465706f736974206973206c657373207468616e2074686520726566726573686564206465706f73697420617320697420776f756c64206f6e6c7920636f7374207468656d2c78736f2069742773206f66206c6974746c6520636f6e73657175656e63652e00590149742077696c6c207374696c6c2072657475726e20616e206572726f7220696e20746865206361736520746861742074686520636f6c6c656374696f6e20697320756e6b6e6f776e206f6620746865207369676e6572706973206e6f74207065726d697474656420746f2063616c6c2069742e00605765696768743a20604f286974656d732e6c656e2829296018667265657a65080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000728c8446973616c6c6f77206675727468657220756e70726976696c65676564207472616e73666572206f6620616e206974656d2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f2062652066726f7a656e2eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f2062652066726f7a656e2e003c456d697473206046726f7a656e602e00385765696768743a20604f283129601074686177080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000828a852652d616c6c6f7720756e70726976696c65676564207472616e73666572206f6620616e206974656d2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265207468617765642eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265207468617765642e003c456d6974732060546861776564602e00385765696768743a20604f2831296044667265657a655f636f6c6c656374696f6e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000924fc446973616c6c6f77206675727468657220756e70726976696c65676564207472616e736665727320666f7220612077686f6c6520636f6c6c656374696f6e2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f2062652066726f7a656e2e0064456d6974732060436f6c6c656374696f6e46726f7a656e602e00385765696768743a20604f283129603c746861775f636f6c6c656374696f6e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000a24dc52652d616c6c6f7720756e70726976696c65676564207472616e736665727320666f7220612077686f6c6520636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c64206265207468652041646d696e206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f206265207468617765642e0064456d6974732060436f6c6c656374696f6e546861776564602e00385765696768743a20604f28312960487472616e736665725f6f776e657273686970080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c90101504163636f756e7449644c6f6f6b75704f663c543e000b2c844368616e676520746865204f776e6572206f66206120636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00f42d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e2077686f7365206f776e65722073686f756c64206265206368616e6765642e09012d20606f776e6572603a20546865206e6577204f776e6572206f66207468697320636f6c6c656374696f6e2e2054686579206d75737420686176652063616c6c656449012020607365745f6163636570745f6f776e6572736869706020776974682060636f6c6c656374696f6e6020696e206f7264657220666f722074686973206f7065726174696f6e20746f20737563636565642e0054456d69747320604f776e65724368616e676564602e00385765696768743a20604f28312960207365745f7465616d100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000118697373756572c90101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696ec90101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572c90101504163636f756e7449644c6f6f6b75704f663c543e000c30d44368616e676520746865204973737565722c2041646d696e20616e6420467265657a6572206f66206120636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00f02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e2077686f7365207465616d2073686f756c64206265206368616e6765642eb82d2060697373756572603a20546865206e657720497373756572206f66207468697320636f6c6c656374696f6e2eb02d206061646d696e603a20546865206e65772041646d696e206f66207468697320636f6c6c656374696f6e2ec02d2060667265657a6572603a20546865206e657720467265657a6572206f66207468697320636f6c6c656374696f6e2e0050456d69747320605465616d4368616e676564602e00385765696768743a20604f2831296040617070726f76655f7472616e736665720c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400012064656c6567617465c90101504163636f756e7449644c6f6f6b75704f663c543e000d381501417070726f766520616e206974656d20746f206265207472616e7366657272656420627920612064656c6567617465642074686972642d7061727479206163636f756e742e004d01546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e60206f72206d75737420626520605369676e65646020616e64207468652073656e646572206d757374206265f865697468657220746865206f776e6572206f662074686520606974656d60206f72207468652061646d696e206f662074686520636f6c6c656374696f6e2e0045012d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f20626520617070726f76656420666f722064656c656761746564207472616e736665722e15012d20606974656d603a20546865206974656d206f6620746865206974656d20746f20626520617070726f76656420666f722064656c656761746564207472616e736665722e19012d206064656c6567617465603a20546865206163636f756e7420746f2064656c6567617465207065726d697373696f6e20746f207472616e7366657220746865206974656d2e001901496d706f7274616e74204e4f54453a205468652060617070726f76656460206163636f756e7420676574732072657365742061667465722065616368207472616e736665722e0090456d6974732060417070726f7665645472616e7366657260206f6e20737563636573732e00385765696768743a20604f283129603c63616e63656c5f617070726f76616c0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001506d617962655f636865636b5f64656c65676174656d0201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e000e40110143616e63656c20746865207072696f7220617070726f76616c20666f7220746865207472616e73666572206f6620616e206974656d20627920612064656c65676174652e00584f726967696e206d757374206265206569746865723a542d207468652060466f72636560206f726967696e3bfc2d20605369676e656460207769746820746865207369676e6572206265696e67207468652041646d696e206f66207468652060636f6c6c656374696f6e603be42d20605369676e656460207769746820746865207369676e6572206265696e6720746865204f776e6572206f662074686520606974656d603b0028417267756d656e74733a3d012d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d206f662077686f736520617070726f76616c2077696c6c2062652063616e63656c6c65642e0d012d20606974656d603a20546865206974656d206f6620746865206974656d206f662077686f736520617070726f76616c2077696c6c2062652063616e63656c6c65642e51012d20606d617962655f636865636b5f64656c6567617465603a2049662060536f6d65602077696c6c20656e7375726520746861742074686520676976656e206163636f756e7420697320746865206f6e6520746fb020207768696368207065726d697373696f6e206f66207472616e736665722069732064656c6567617465642e0094456d6974732060417070726f76616c43616e63656c6c656460206f6e20737563636573732e00385765696768743a20604f2831296044666f7263655f6974656d5f7374617475731c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c90101504163636f756e7449644c6f6f6b75704f663c543e000118697373756572c90101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696ec90101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572c90101504163636f756e7449644c6f6f6b75704f663c543e000130667265655f686f6c64696e67b40110626f6f6c00012469735f66726f7a656eb40110626f6f6c000f4094416c746572207468652061747472696275746573206f66206120676976656e206974656d2e00744f726967696e206d7573742062652060466f7263654f726967696e602e00ac2d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206974656d2e982d20606f776e6572603a20546865206e6577204f776e6572206f662074686973206974656d2ea02d2060697373756572603a20546865206e657720497373756572206f662074686973206974656d2e982d206061646d696e603a20546865206e65772041646d696e206f662074686973206974656d2ea82d2060667265657a6572603a20546865206e657720467265657a6572206f662074686973206974656d2e51012d2060667265655f686f6c64696e67603a20576865746865722061206465706f7369742069732074616b656e20666f7220686f6c64696e6720616e206974656d206f66207468697320636f6c6c656374696f6e2e39012d206069735f66726f7a656e603a2057686574686572207468697320636f6c6c656374696f6e2069732066726f7a656e2065786365707420666f72207065726d697373696f6e65642f61646d696e34696e737472756374696f6e732e00e0456d69747320604974656d5374617475734368616e67656460207769746820746865206964656e74697479206f6620746865206974656d2e00385765696768743a20604f28312960347365745f617474726962757465100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e00011476616c7565c00174426f756e6465645665633c75382c20543a3a56616c75654c696d69743e001044a853657420616e2061747472696275746520666f72206120636f6c6c656374696f6e206f72206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e005101496620746865206f726967696e206973205369676e65642c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613a2901604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20286b65792e6c656e202b2076616c75652e6c656e29602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0039012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f207365742e05012d20606d617962655f6974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207365742e882d20606b6579603a20546865206b6579206f6620746865206174747269627574652ecc2d206076616c7565603a205468652076616c756520746f20776869636820746f2073657420746865206174747269627574652e0054456d6974732060417474726962757465536574602e00385765696768743a20604f283129603c636c6561725f6174747269627574650c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e001138b0436c65617220616e2061747472696275746520666f72206120636f6c6c656374696f6e206f72206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0041012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f20636c6561722e0d012d20606d617962655f6974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f20636c6561722e882d20606b6579603a20546865206b6579206f6620746865206174747269627574652e0064456d6974732060417474726962757465436c6561726564602e00385765696768743a20604f28312960307365745f6d65746164617461100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0012447453657420746865206d6574616461746120666f7220616e206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e005101496620746865206f726967696e206973205369676e65642c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613af4604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20646174612e6c656e602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0039012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f207365742eec2d20606974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207365742e4d012d206064617461603a205468652067656e6572616c20696e666f726d6174696f6e206f662074686973206974656d2e204c696d6974656420696e206c656e6774682062792060537472696e674c696d6974602e35012d206069735f66726f7a656e603a205768657468657220746865206d657461646174612073686f756c642062652066726f7a656e20616761696e73742066757274686572206368616e6765732e0050456d69747320604d65746164617461536574602e00385765696768743a20604f2831296038636c6561725f6d65746164617461080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640013347c436c65617220746865206d6574616461746120666f7220616e206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468651c606974656d602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0041012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f20636c6561722ef42d20606974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f20636c6561722e0060456d69747320604d65746164617461436c6561726564602e00385765696768743a20604f283129605c7365745f636f6c6c656374696f6e5f6d657461646174610c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0014408853657420746865206d6574616461746120666f72206120636f6c6c656374696f6e2e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e005901496620746865206f726967696e20697320605369676e6564602c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613af4604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20646174612e6c656e602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0011012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207570646174652e4d012d206064617461603a205468652067656e6572616c20696e666f726d6174696f6e206f662074686973206974656d2e204c696d6974656420696e206c656e6774682062792060537472696e674c696d6974602e35012d206069735f66726f7a656e603a205768657468657220746865206d657461646174612073686f756c642062652066726f7a656e20616761696e73742066757274686572206368616e6765732e0078456d6974732060436f6c6c656374696f6e4d65746164617461536574602e00385765696768743a20604f2831296064636c6561725f636f6c6c656374696f6e5f6d65746164617461040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400153090436c65617220746865206d6574616461746120666f72206120636f6c6c656374696f6e2e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0025012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206d6574616461746120746f20636c6561722e0088456d6974732060436f6c6c656374696f6e4d65746164617461436c6561726564602e00385765696768743a20604f28312960507365745f6163636570745f6f776e6572736869700401406d617962655f636f6c6c656374696f6eb8015c4f7074696f6e3c543a3a436f6c6c656374696f6e49643e001628110153657420286f72207265736574292074686520616363657074616e6365206f66206f776e65727368697020666f72206120706172746963756c6172206163636f756e742e0061014f726967696e206d75737420626520605369676e65646020616e6420696620606d617962655f636f6c6c656374696f6e602069732060536f6d65602c207468656e20746865207369676e6572206d757374206861766520614c70726f7669646572207265666572656e63652e0051012d20606d617962655f636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206f776e65727368697020746865207369676e65722069736101202077696c6c696e6720746f206163636570742c206f7220696620604e6f6e65602c20616e20696e6469636174696f6e207468617420746865207369676e65722069732077696c6c696e6720746f20616363657074206e6f5c20206f776e657273686970207472616e73666572616c2e008c456d69747320604f776e657273686970416363657074616e63654368616e676564602e647365745f636f6c6c656374696f6e5f6d61785f737570706c79080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d61785f737570706c7910010c75333200172ce053657420746865206d6178696d756d20616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20636f756c6420686176652e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e00e44e6f74653a20546869732066756e6374696f6e2063616e206f6e6c792073756363656564206f6e63652070657220636f6c6c656374696f6e2e00ec2d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e20746f206368616e67652e11012d20606d61785f737570706c79603a20546865206d6178696d756d20616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20636f756c6420686176652e00d4456d6974732060436f6c6c656374696f6e4d6178537570706c7953657460206576656e74207768656e207375636365737366756c2e247365745f7072696365100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001147072696365c8015c4f7074696f6e3c4974656d50726963653c542c20493e3e00014477686974656c69737465645f62757965726d0201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e00182c9453657420286f72207265736574292074686520707269636520666f7220616e206974656d2e0001014f726967696e206d757374206265205369676e656420616e64206d75737420626520746865206f776e6572206f662074686520617373657420606974656d602e00ac2d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d2ea02d20606974656d603a20546865206974656d20746f207365742074686520707269636520666f722e0d012d20607072696365603a2054686520707269636520666f7220746865206974656d2e205061737320604e6f6e65602c20746f207265736574207468652070726963652ef42d20606275796572603a205265737472696374732074686520627579206f7065726174696f6e20746f2061207370656369666963206163636f756e742e00ec456d69747320604974656d507269636553657460206f6e207375636365737320696620746865207072696365206973206e6f7420604e6f6e65602eec456d69747320604974656d507269636552656d6f76656460206f6e20737563636573732069662074686520707269636520697320604e6f6e65602e206275795f6974656d0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001246269645f707269636518013c4974656d50726963653c542c20493e001924a8416c6c6f777320746f2062757920616e206974656d206966206974277320757020666f722073616c652e00f84f726967696e206d757374206265205369676e656420616e64206d757374206e6f7420626520746865206f776e6572206f662074686520606974656d602e00ac2d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d2eac2d20606974656d603a20546865206974656d207468652073656e6465722077616e747320746f206275792ed82d20606269645f7072696365603a20546865207072696365207468652073656e6465722069732077696c6c696e6720746f207061792e0078456d69747320604974656d426f7567687460206f6e20737563636573732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e69020c3870616c6c65745f756e69717565731474797065733844657374726f795769746e65737300000c01146974656d73f0010c7533320001386974656d5f6d6574616461746173f0010c75333200012861747472696275746573f0010c75333200006d0204184f7074696f6e04045401c9010108104e6f6e6500000010536f6d650400c901000001000071020c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400011414626174636804011463616c6c737502017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00004c7c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465783d01010c75313600011063616c6ce901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c737502017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000238ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e2c64697370617463685f617308012461735f6f726967696e79020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6ce901017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000328c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292e1d012d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b20543a3a576569676874496e666f3a3a64697370617463685f617328292e2c23203c2f7765696768743e2c666f7263655f626174636804011463616c6c737502017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004387c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7502000002e9010079020858726d726b5f7375627374726174655f72756e74696d65304f726967696e43616c6c65720001081873797374656d04007d0201746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000010566f696404009d0101110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f6964000100007d020c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e650002000081020c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f2070616c6c657485020c3c70616c6c65745f74656d706c6174651870616c6c6574144572726f72040454000108244e6f6e6556616c7565000004884572726f72206e616d65732073686f756c642062652064657363726970746976652e3c53746f726167654f766572666c6f77000104f84572726f72732073686f756c6420686176652068656c7066756c20646f63756d656e746174696f6e206173736f6369617465642077697468207468656d2e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090989020c2c726d726b5f74726169747310626173652042617365496e666f08244163636f756e744964010034426f756e646564537472696e6701d0000c01186973737565720001244163636f756e744964000124626173655f74797065d00134426f756e646564537472696e6700011873796d626f6cd00134426f756e646564537472696e6700008d020000040ce810100091020000040c10d0d00095020c4470616c6c65745f726d726b5f65717569701870616c6c6574144572726f720404540001643c5065726d697373696f6e4572726f720000003c4974656d446f65736e7445786973740001004c4571756970706572446f65736e744578697374000200444e6f417661696c61626c6542617365496400030048546f6f4d616e7945717569707061626c6573000400444e6f417661696c61626c65506172744964000500484d7573744265446972656374506172656e740006003c50617274446f65736e7445786973740007003c42617365446f65736e7445786973740008004843616e7445717569704669786564506172740009007c4e6f5265736f75726365466f725468697342617365466f756e644f6e4e6674000a005c436f6c6c656374696f6e4e6f7445717569707061626c65000b00744974656d4861734e6f5265736f75726365546f45717569705468657265000c005c4e6f45717569707061626c654f6e466978656450617274000d00584e6565647344656661756c745468656d654669727374000e004c4974656d416c72656164794571756970706564000f004c536c6f74416c726561647945717569707065640010003c536c6f744e6f74457175697070656400110030556e6b6e6f776e4572726f7200120058457863656564734d617850617274735065724261736500130044546f6f4d616e7950726f706572746965730014003c4974656d4e6f74457175697070656400150094556e65717569707065724d7573744f776e4569746865724974656d4f72457175697070657200160064556e657870656374656454727946726f6d496e744572726f7200170070556e6578706563746564566563436f6e76657273696f6e4572726f7200180004b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090999020c2c726d726b5f74726169747328636f6c6c656374696f6e38436f6c6c656374696f6e496e666f0c34426f756e646564537472696e6701d034426f756e64656453796d626f6c015902244163636f756e7449640100001401186973737565720001244163636f756e7449640001206d65746164617461d00134426f756e646564537472696e6700010c6d6178b8012c4f7074696f6e3c7533323e00011873796d626f6c59020134426f756e64656453796d626f6c0001286e6674735f636f756e7410010c75333200009d020c2c726d726b5f7472616974730c6e66741c4e6674496e666f14244163636f756e744964010034526f79616c7479416d6f756e74012d0234426f756e646564537472696e6701d030436f6c6c656374696f6e49640110144e667449640110001801146f776e6572b001f44163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c4163636f756e7449642c20436f6c6c656374696f6e49642c204e667449643e00011c726f79616c7479a10201b44f7074696f6e3c526f79616c7479496e666f3c4163636f756e7449642c20526f79616c7479416d6f756e743e3e0001206d65746164617461d00134426f756e646564537472696e6700012065717569707065644d0201704f7074696f6e3c285265736f7572636549642c20536c6f744964293e00011c70656e64696e67b40110626f6f6c0001307472616e7366657261626c65b40110626f6f6c0000a10204184f7074696f6e04045401a5020108104e6f6e6500000010536f6d650400a5020000010000a5020c2c726d726b5f7472616974730c6e66742c526f79616c7479496e666f08244163636f756e744964010034526f79616c7479416d6f756e74012d0200080124726563697069656e740001244163636f756e744964000118616d6f756e742d020134526f79616c7479416d6f756e740000a9020000040c10101000ad0200000408e8e800b1020c2c726d726b5f747261697473207265736f75726365305265736f75726365496e666f0834426f756e646564537472696e6701d030426f756e6465645061727473013d020010010869641001285265736f7572636549640001207265736f75726365410201a85265736f7572636554797065733c426f756e646564537472696e672c20426f756e64656450617274733e00011c70656e64696e67b40110626f6f6c00013c70656e64696e675f72656d6f76616cb40110626f6f6c0000b50200000414101010101000b9020000040c10b8bc00bd0200000408c102c50200c1020c2c726d726b5f7472616974730c6e6674204e66744368696c640830436f6c6c656374696f6e49640110144e66744964011000080134636f6c6c656374696f6e5f6964100130436f6c6c656374696f6e49640001186e66745f69641001144e667449640000c502082c5068616e746f6d54797065307068616e746f6d5f7479706504045401c902000400cd02000000c9020c2c726d726b5f7472616974732070726f70657274793050726f7065727479496e666f0828426f756e6465644b657901bc30426f756e64656456616c756501c00008010c6b6579bc0128426f756e6465644b657900011476616c7565c00130426f756e64656456616c75650000cd0200000300000000c90200d1020c4070616c6c65745f726d726b5f636f72651870616c6c6574144572726f7204045400017c244e6f6e6556616c7565000004884572726f72206e616d65732073686f756c642062652064657363726970746976652e3c53746f726167654f766572666c6f77000104f84572726f72732073686f756c6420686176652068656c7066756c20646f63756d656e746174696f6e206173736f6369617465642077697468207468656d2e1c546f6f4c6f6e670002005c4e6f417661696c61626c65436f6c6c656374696f6e4964000300544e6f417661696c61626c655265736f757263654964000400384d657461646174614e6f745365740005003c526563697069656e744e6f74536574000600404e6f417661696c61626c654e66744964000700284e6f74496e52616e676500080034526f79616c74794e6f7453657400090044436f6c6c656374696f6e556e6b6e6f776e000a00304e6f5065726d697373696f6e000b00244e6f5769746e657373000c0048436f6c6c656374696f6e4e6f74456d707479000d0058436f6c6c656374696f6e46756c6c4f724c6f636b6564000e007043616e6e6f7453656e64546f44657363656e64656e744f7253656c66000f00545265736f75726365416c7265616479457869737473001000404e6674416c726561647945786973747300110034456d7074795265736f7572636500120044546f6f4d616e79526563757273696f6e730013049454686520726563757273696f6e206c696d697420686173206265656e20726561636865642e2c4e667449734c6f636b65640014005c43616e6e6f744163636570744e6f6e4f776e65644e66740015005c43616e6e6f7452656a6563744e6f6e4f776e65644e66740016006443616e6e6f7452656a6563744e6f6e50656e64696e674e66740017004c5265736f75726365446f65736e744578697374001800485265736f757263654e6f7450656e64696e67001904d0416363657074696e672061207265736f757263652074686174206973206e6f742070656e64696e672073686f756c64206661696c3c4e6f6e5472616e7366657261626c65001a005843616e6e6f7453656e6445717569707065644974656d001b005843616e6e6f74416363657074546f4e65774f776e6572001c006c4661696c65645472616e73666572486f6f6b73507265436865636b001d007c4661696c65645472616e73666572486f6f6b73506f73745472616e73666572001e0004b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909d5020c4870616c6c65745f726d726b5f6d61726b6574147479706573204c697374496e666f0c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d6265720110000c01246c69737465645f62790001244163636f756e744964000118616d6f756e7418011c42616c616e636500011c65787069726573b8014c4f7074696f6e3c426c6f636b4e756d6265723e0000d90200000408e80000dd020c4870616c6c65745f726d726b5f6d61726b6574147479706573144f666665720c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d6265720110000c01146d616b65720001244163636f756e744964000118616d6f756e7418011c42616c616e636500011c65787069726573b8014c4f7074696f6e3c426c6f636b4e756d6265723e0000e1020c4870616c6c65745f726d726b5f6d61726b65741870616c6c6574144572726f7204045400013c304e6f5065726d697373696f6e000004bc4e6f207065726d697373696f6e7320666f72206163636f756e7420746f20696e7465726163742077697468204e46543c546f6b656e4e6f74466f7253616c6500010458546f6b656e2063616e6e6f7420626520626f756768744c43616e6e6f7457697468647261774f66666572000204a84f6666657220616c726561647920616363657074656420616e642063616e6e6f742077697468647261774443616e6e6f74556e6c697374546f6b656e000304e443616e6e6f7420756e6c697374204e46542061732069742068617320616c7265616479206265656e20756e6c6973746564206f7220736f6c645443616e6e6f744f666665724f6e4f776e546f6b656e0004048c43616e6e6f74206d616b65206f66666572206f6e204e4654206f6e206f776e204e46544443616e6e6f744275794f776e546f6b656e0005049043616e6e6f7420627579204e4654207468617420697320616c7265616479206f776e656430556e6b6e6f776e4f66666572000604404f6666657220697320756e6b6e6f776e5c43616e6e6f744c6973744e66744f776e656442794e66740007047843616e6e6f74206c697374204e4654206f776e65642062792061204e465444546f6b656e446f65734e6f7445786973740008047843616e6e6f74206c6973742061206e6f6e2d6578697374696e67204e46542c4f66666572546f6f4c6f77000904bc4f666665722069732062656c6f7720746865204f666665724d696e696d756d416d6f756e74207468726573686f6c6438416c72656164794f666665726564000a04e04163636f756e742063616e6e6f74206f66666572206f6e2061204e465420616761696e207769746820616e20616374697665206f666665723c4f6666657248617345787069726564000b04c44163636570746564206f6666657220686173206578706972656420616e642063616e6e6f74206265206163636570746564444c697374696e6748617345787069726564000c04a04c697374696e6720686173206578706972656420616e642063616e6e6f7420626520626f756768746050726963654469666665727346726f6d4578706563746564000d04a8507269636520646966666572732066726f6d207768656e206062757960207761732065786563757465643c4e6f6e5472616e7366657261626c65000e04a44e6f7420706f737369626c6520746f206c697374206e6f6e2d7472616e7366657261626c65204e465404b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909e5020c3870616c6c65745f756e697175657314747970657344436f6c6c656374696f6e44657461696c7308244163636f756e7449640100384465706f73697442616c616e63650118002801146f776e65720001244163636f756e7449640001186973737565720001244163636f756e74496400011461646d696e0001244163636f756e74496400011c667265657a65720001244163636f756e744964000134746f74616c5f6465706f7369741801384465706f73697442616c616e6365000130667265655f686f6c64696e67b40110626f6f6c0001146974656d7310010c7533320001386974656d5f6d657461646174617310010c7533320001286174747269627574657310010c75333200012469735f66726f7a656eb40110626f6f6c0000e9020000040c00101000ed0200000408001000f1020c3870616c6c65745f756e69717565731474797065732c4974656d44657461696c7308244163636f756e7449640100384465706f73697442616c616e63650118001001146f776e65720001244163636f756e744964000120617070726f766564a001444f7074696f6e3c4163636f756e7449643e00012469735f66726f7a656eb40110626f6f6c00011c6465706f7369741801384465706f73697442616c616e63650000f5020c3870616c6c65745f756e697175657314747970657348436f6c6c656374696f6e4d6574616461746108384465706f73697442616c616e636501182c537472696e674c696d697400000c011c6465706f7369741801384465706f73697442616c616e636500011064617461d0016c426f756e6465645665633c75382c20537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0000f9020c3870616c6c65745f756e6971756573147479706573304974656d4d6574616461746108384465706f73697442616c616e636501182c537472696e674c696d697400000c011c6465706f7369741801384465706f73697442616c616e636500011064617461d0016c426f756e6465645665633c75382c20537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0000fd0200000408c0180001030000040818a00005030c3870616c6c65745f756e69717565731870616c6c6574144572726f72080454000449000148304e6f5065726d697373696f6e000004e8546865207369676e696e67206163636f756e7420686173206e6f207065726d697373696f6e20746f20646f20746865206f7065726174696f6e2e44556e6b6e6f776e436f6c6c656374696f6e0001047454686520676976656e206974656d20494420697320756e6b6e6f776e2e34416c7265616479457869737473000204b8546865206974656d2049442068617320616c7265616479206265656e207573656420666f7220616e206974656d2e2857726f6e674f776e6572000304e8546865206f776e6572207475726e6564206f757420746f20626520646966666572656e7420746f2077686174207761732065787065637465642e284261645769746e6573730004046c496e76616c6964207769746e657373206461746120676976656e2e14496e55736500050474546865206974656d20494420697320616c72656164792074616b656e2e1846726f7a656e00060484546865206974656d206f7220636f6c6c656374696f6e2069732066726f7a656e2e3457726f6e6744656c6567617465000704f45468652064656c6567617465207475726e6564206f757420746f20626520646966666572656e7420746f2077686174207761732065787065637465642e284e6f44656c6567617465000804785468657265206973206e6f2064656c656761746520617070726f7665642e28556e617070726f766564000904c44e6f20617070726f76616c20657869737473207468617420776f756c6420616c6c6f7720746865207472616e736665722e28556e6163636570746564000a042501546865206e616d6564206f776e657220686173206e6f74207369676e6564206f776e657273686970206f662074686520636f6c6c656374696f6e2069732061636365707461626c652e184c6f636b6564000b044c546865206974656d206973206c6f636b65642e404d6178537570706c7952656163686564000c046c416c6c206974656d732068617665206265656e206d696e7465642e4c4d6178537570706c79416c7265616479536574000d0490546865206d617820737570706c792068617320616c7265616479206265656e207365742e444d6178537570706c79546f6f536d616c6c000e0441015468652070726f7669646564206d617820737570706c79206973206c65737320746f2074686520616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20616c7265616479206861732e2c556e6b6e6f776e4974656d000f047454686520676976656e206974656d20494420697320756e6b6e6f776e2e284e6f74466f7253616c65001004544974656d206973206e6f7420666f722073616c652e24426964546f6f4c6f77001104705468652070726f76696465642062696420697320746f6f206c6f772e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090909030c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a0909090d03102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301c9011043616c6c01e901245369676e6174757265011103144578747261012103000400300000001103082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040085010148656432353531393a3a5369676e61747572650000001c53723235353139040015030148737232353531393a3a5369676e617475726500010014456364736104001903014065636473613a3a5369676e61747572650002000015030c1c73705f636f72651c73723235353139245369676e617475726500000400890101205b75383b2036345d000019030c1c73705f636f7265146563647361245369676e6174757265000004001d0301205b75383b2036355d00001d0300000341000000080021030000041c250329032d03310339033d03410300250310306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000290310306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e040454000000002d0310306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000310310306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004003503010c45726100003503102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000390310306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400f00120543a3a496e64657800003d0310306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000004103086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400d501013042616c616e63654f663c543e000045030858726d726b5f7375627374726174655f72756e74696d651c52756e74696d6500000000381853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010405102c8000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510300400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002c80000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010034040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004404001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022ce40400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000ec04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100b40400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100b40400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000dc040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01f801501830426c6f636b576569676874730d018101e2817a55000b00204aa9d10102004001c2e4981700010bd08e23a82e010200d000010b0098f73e5d010200f000010000c2e4981700010bd0167612a30102002001010b00204aa9d1010200400101070088526a7402005000c2e498170000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e6774681d013000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101060090000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687425014040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e2901d10238726d726b2d73756273747261746538726d726b2d7375627374726174650100000064000000010000002c643365445941c5cb01000000df6acb689907609b0400000037e397fc7c91f5e40100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000dd718d5cc53262d401000000ab3c0572291feb8b01000000ed99c5acb25eedf503000000bc9d89904f5b923f0100000037c8bb1350a9a2a80200000001000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783d01082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e014101006052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100450104000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e00000000012454696d657374616d70012454696d657374616d70080c4e6f7701002820000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e244469645570646174650100b4040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0149010004344d696e696d756d506572696f642820f401000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021041757261011041757261082c417574686f72697469657301004d010400046c205468652063757272656e7420617574686f72697479207365742e2c43757272656e74536c6f7401005d012000000000000000000c80205468652063757272656e7420736c6f74206f66207468697320626c6f636b2e009420546869732077696c6c2062652073657420696e20606f6e5f696e697469616c697a65602e00000000031c4772616e647061011c4772616e647061181453746174650100610104000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500006501040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000e80400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010028200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405281004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e016d01017404384d6178417574686f726974696573101020000000045c204d617820417574686f72697469657320696e2075736501a101042042616c616e636573012042616c616e6365731434546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200a501040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e2052657365727665730101040200b501040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e3853746f7261676556657273696f6e0100c10104000c7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076322e302e3020666f72206e6577206e6574776f726b732e01c50101880c484578697374656e7469616c4465706f7369741840f401000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d61784c6f636b7310103200000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101000000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e01d90105485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100dd0140000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e10104000000019004604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c6974706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f7269747960004d0120546869732076616c7565206973206d756c7469706c656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e0006105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01e501019400018102073854656d706c6174654d6f64756c65013854656d706c6174654d6f64756c650424536f6d657468696e6700001004000001ed0101a4000185020824526d726b45717569700124526d726b4571756970181442617365730001040510890204000cd42053746f72657320426173657320696e666f20286973737565722c20626173655f747970652c2073796d626f6c2c20706172747329ec20544f444f2068747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d7375627374726174652f6973737565732f3938f02044656c6574652050617274732066726f6d20426173657320696e666f2c2061732069742773206b65707420696e2050617274732073746f726167651450617274730001080505e8110204000cb02053746f726573205061727473202865697468657220466978656450617274206f7220536c6f745061727429a8202d20536c6f74506172743a2069642c2065717569707061626c6520286c697374292c207372632c207a60202d204669786564506172743a2069642c207372632c207a284e6578744261736549640100101000000000048c2053746f7265732074686520696e6372656d656e74696e67204e657874426173654964284e6578745061727449640101040510101000000000048c2053746f7265732074686520696e6372656d656e74696e67204e65787450617274496428457175697070696e677300010c0202028d02100400040d012053746f72657320457175697070696e677320696e666f20282865717569707065722c20626173652c20736c6f74292c2065717569707065645f7265736f7572636529185468656d657300010c0202029102d004000415012053746f726573205468656d6520696e666f202828626173652c207468656d65206e616d652c2070726f7065727479206b6579292c2070726f70657274792076616c75652901f10101a808544d617850726f706572746965735065725468656d6510106400000004d8204d6178696d756d20616c6c6f7765642050617274732028656974686572204669786564206f7220536c6f74292070657220426173657c4d6178436f6c6c656374696f6e7345717569707061626c655065725061727410106400000004cc204d6178696d756d206e756d626572206f662050726f7065727469657320616c6c6f77656420666f7220616e79205468656d650195020920526d726b436f72650120526d726b436f7265282c436f6c6c656374696f6e7300010405109902040004602053746f72657320636f6c6c656374696f6e7320696e666f104e6674730001080505e89d02040004402053746f726573206e667420696e666f285072696f72697469657300010c020202a90210040004542053746f726573207072696f7269747920696e666f204368696c6472656e0001080505ad029c040004642053746f726573206e6674206368696c6472656e20696e666f245265736f757263657300010c020202a902b102040004542053746f726573207265736f7572636520696e666f3c45717569707061626c65426173657300010c020202a9029c04000cd02053746f72657320746865206578697374656e6365206f662061206261736520666f72206120706172746963756c6172204e4654dc205468697320697320706f70756c61746564206f6e20606164645f636f6d706f7361626c655f7265736f75726365602c20616e64206973e4207573656420696e2074686520726d726b2d65717569702070616c6c6574207768656e20657175697070696e672061207265736f757263652e3c45717569707061626c65536c6f74730001140202020202b5029c040010dc2053746f72657320746865206578697374656e6365206f6620612042617365202b20536c6f7420666f72206120706172746963756c6172c4204e4654277320706172746963756c6172207265736f757263652e20205468697320697320706f70756c61746564206f6ecc20606164645f736c6f745f7265736f75726365602c20616e64206973207573656420696e2074686520726d726b2d6571756970882070616c6c6574207768656e20657175697070696e672061207265736f757263652e2850726f7065727469657300010c020202b902c0040004b4204172626974726172792070726f70657274696573202f206d65746164617461206f6620616e2061737365742e104c6f636b01010405e8b404000438204c6f636b20666f72204e4654733044756d6d7953746f726167650000bd020400149c20546869732073746f72616765206973206e6f7420757365642062792074686520636861696e2ec4204974206973206e656564206f6e6c7920666f7220506f6c6b61646f744a532074797065732067656e65726174696f6e2e00d0205468652073746f726564207479706573206172652075736520696e207468652052504320696e74657266616365206f6e6c792c090120506f6c6b61646f744a5320776f6e27742067656e657261746520545320747970657320666f72207468656d20776974686f757420746869732073746f726167652e01250201ac104c5265736f7572636553796d626f6c4c696d697410100a000000048c20546865206d6178696d756d207265736f757263652073796d626f6c206c656e6774682850617274734c696d697410101900000004cc20546865206d6178696d756d206e756d626572206f662070617274732065616368207265736f75726365206d61792068617665344d61785072696f72697469657310101900000004410120546865206d6178696d756d206e756d626572206f66207265736f757263657320746861742063616e20626520696e636c7564656420696e2061207365747072696f726974792065787472696e736963344e657374696e6742756467657410101400000004d820546865206d6178696d756d206e657374696e6720616c6c6f77656420696e207468652070616c6c65742065787472696e736963732e01d1020a28526d726b4d61726b65740128526d726b4d61726b657408284c69737465644e6674730001080202e8d502040004742053746f726573206c6973746564204e465420707269636520696e666f184f66666572730001080202d902dd020400046c2053746f726573206f66666572206f6e2061204e465420696e666f01610201c404484d696e696d756d4f66666572416d6f756e74184000e1f5050000000000000000000000000498204d696e696d756d206f6666657220616d6f756e7420617320612076616c6964206f6666657201e1020b1c556e6971756573011c556e69717565732814436c6173730001040210e502040004642044657461696c73206f66206120636f6c6c656374696f6e2e4c4f776e657273686970416363657074616e636500010402001004000429012054686520636f6c6c656374696f6e2c20696620616e792c206f6620776869636820616e206163636f756e742069732077696c6c696e6720746f2074616b65206f776e6572736869702e1c4163636f756e7400010c020202e9029c040008590120546865206974656d732068656c6420627920616e7920676976656e206163636f756e743b20736574206f757420746869732077617920736f2074686174206974656d73206f776e656420627920612073696e676c656c206163636f756e742063616e20626520656e756d6572617465642e30436c6173734163636f756e740001080202ed029c04000869012054686520636f6c6c656374696f6e73206f776e656420627920616e7920676976656e206163636f756e743b20736574206f757420746869732077617920736f207468617420636f6c6c656374696f6e73206f776e65642062799020612073696e676c65206163636f756e742063616e20626520656e756d6572617465642e1441737365740001080202e8f102040004d020546865206974656d7320696e206578697374656e636520616e64207468656972206f776e6572736869702064657461696c732e3c436c6173734d657461646174614f660001040210f50204000468204d65746164617461206f66206120636f6c6c656374696f6e2e48496e7374616e63654d657461646174614f660001080202e8f90204000454204d65746164617461206f6620616e206974656d2e2441747472696275746500010c020202b902fd02040004702041747472696275746573206f66206120636f6c6c656374696f6e2e2c4974656d50726963654f660001080202e8010304000470205072696365206f6620616e20617373657420696e7374616e63652e4c436f6c6c656374696f6e4d6178537570706c79000104021010040004f0204b6565707320747261636b206f6620746865206e756d626572206f66206974656d73206120636f6c6c656374696f6e206d6967687420686176652e01650201cc2044436f6c6c656374696f6e4465706f736974184000a0724e1809000000000000000000000401012054686520626173696320616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f7220636f6c6c656374696f6e2e2c4974656d4465706f736974184000407a10f35a0000000000000000000004f42054686520626173696320616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f7220616e206974656d2e4c4d657461646174614465706f73697442617365184000a0724e180900000000000000000000044d012054686520626173696320616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e20616464696e67206d6574616461746120746f20796f7572206974656d2e504174747269627574654465706f73697442617365184000a0724e1809000000000000000000000455012054686520626173696320616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e20616464696e6720616e2061747472696275746520746f20616e206974656d2e384465706f7369745065724279746518400010a5d4e8000000000000000000000008590120546865206164646974696f6e616c2066756e64732074686174206d75737420626520726573657276656420666f7220746865206e756d626572206f662062797465732073746f726520696e206d657461646174612cc02065697468657220226e6f726d616c22206d65746164617461206f7220617474726962757465206d657461646174612e2c537472696e674c696d697410108000000004b020546865206d6178696d756d206c656e677468206f6620646174612073746f726564206f6e2d636861696e2e204b65794c696d697410102000000004a020546865206d6178696d756d206c656e677468206f6620616e20617474726962757465206b65792e2856616c75654c696d697410100001000004a820546865206d6178696d756d206c656e677468206f6620616e206174747269627574652076616c75652e0105030c1c5574696c697479011c5574696c6974790001710201d8044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e0109030d0d03041c40436865636b5370656356657273696f6e25031038436865636b547856657273696f6e29031030436865636b47656e657369732d032c38436865636b4d6f7274616c69747931032c28436865636b4e6f6e636539039c2c436865636b5765696768743d039c604368617267655472616e73616374696f6e5061796d656e7441039c4503","id":"1"} \ No newline at end of file +{"jsonrpc":"2.0","result":"0x6d6574610e4103000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e7444617461000010000005050014083c70616c6c65745f62616c616e6365732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f7279200104540000200c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6524010c75363400012870726f6f665f73697a6524010c75363400002400000628002800000506002c083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000030000002080034102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677338013c5665633c4469676573744974656d3e0000380000023c003c102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e00060024436f6e73656e7375730800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000400105365616c0800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000500144f74686572040030011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000400000030400000008004400000248004808306672616d655f73797374656d2c4576656e745265636f7264080445014c0454012c000c01147068617365dc011450686173650001146576656e744c010445000118746f70696373e001185665633c543e00004c0858726d726b5f7375627374726174655f72756e74696d653052756e74696d654576656e7400012c1853797374656d04005001706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c4772616e647061040074015470616c6c65745f6772616e6470613a3a4576656e740004002042616c616e636573040088017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500485472616e73616374696f6e5061796d656e7404009001a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e000600105375646f040094016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0007003854656d706c6174654d6f64756c650400a4017c70616c6c65745f74656d706c6174653a3a4576656e743c52756e74696d653e00080024526d726b45717569700400a8018470616c6c65745f726d726b5f65717569703a3a4576656e743c52756e74696d653e00090020526d726b436f72650400ac018070616c6c65745f726d726b5f636f72653a3a4576656e743c52756e74696d653e000a0028526d726b4d61726b65740400c4018870616c6c65745f726d726b5f6d61726b65743a3a4576656e743c52756e74696d653e000b001c556e69717565730400cc017870616c6c65745f756e69717565733a3a4576656e743c52756e74696d653e000c001c5574696c6974790400d8015470616c6c65745f7574696c6974793a3a4576656e74000d0000500c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f5401304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7260013444697370617463684572726f7200013464697370617463685f696e666f5401304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e744964000110686173682c011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e540c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735801344469737061746368436c617373000120706179735f6665655c0110506179730000580c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f7279000200005c0c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000060082873705f72756e74696d653444697370617463684572726f72000134144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040064012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400680128546f6b656e4572726f720007002841726974686d6574696304006c013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007001485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c000064082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7240018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000070082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c6179657200010000740c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574780134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909780000027c007c00000408802800800c4c73705f66696e616c6974795f6772616e6470610c617070185075626c69630000040084013c656432353531393a3a5075626c69630000840c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000880c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001281c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e63655365740c010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e63650001207265736572766564180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475738c01185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a0909098c14346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000900c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909940c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400010c14537564696404012c7375646f5f726573756c749801384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e6765640401286f6c645f7375646f6572a001504f7074696f6e3c543a3a4163636f756e7449643e0001043901546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c696564206966206f6e6520657869737465642e285375646f4173446f6e6504012c7375646f5f726573756c749801384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909980418526573756c74080454019c044501600108084f6b04009c000000000c45727204006000000100009c0000040000a004184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000a40c3c70616c6c65745f74656d706c6174651870616c6c6574144576656e740404540001043c536f6d657468696e6753746f726564080010010c7533320000000130543a3a4163636f756e74496400000859014576656e7420646f63756d656e746174696f6e2073686f756c6420656e64207769746820616e20617272617920746861742070726f7669646573206465736372697074697665206e616d657320666f72206576656e7470706172616d65746572732e205b736f6d657468696e672c2077686f5d04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909a80c4470616c6c65745f726d726b5f65717569701870616c6c6574144576656e740404540001142c4261736543726561746564080118697373756572000130543a3a4163636f756e74496400011c626173655f696410011842617365496400000030536c6f74457175697070656410013c6974656d5f636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001206974656d5f6e6674100124543a3a4974656d496400011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400010038536c6f74556e657175697070656410013c6974656d5f636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001206974656d5f6e6674100124543a3a4974656d496400011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f7449640002004845717569707061626c65735570646174656408011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400030044426173654973737565724368616e6765640c01286f6c645f697373756572000130543a3a4163636f756e7449640001286e65775f697373756572000130543a3a4163636f756e74496400011c626173655f696410011842617365496400040004a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909ac0c4070616c6c65745f726d726b5f636f72651870616c6c6574144576656e7404045400014844436f6c6c656374696f6e43726561746564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000000244e66744d696e7465640c01146f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000100244e46544275726e65640c01146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640002004c436f6c6c656374696f6e44657374726f796564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640003001c4e465453656e7414011873656e646572000130543a3a4163636f756e744964000124726563697069656e74b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000144617070726f76616c5f7265717569726564b40110626f6f6c0004002c4e4654416363657074656410011873656e646572000130543a3a4163636f756e744964000124726563697069656e74b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640005002c4e465452656a65637465640c011873656e646572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000600344973737565724368616e6765640c01286f6c645f697373756572000130543a3a4163636f756e7449640001286e65775f697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640007002c50726f7065727479536574100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e00011476616c7565c0013c56616c75654c696d69744f663c543e0008003c50726f706572747952656d6f7665640c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e0009004450726f7065727469657352656d6f766564080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e000a0040436f6c6c656374696f6e4c6f636b6564080118697373756572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000b00345265736f7572636541646465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000c00405265736f757263655265706c616365640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000d00405265736f7572636541636365707465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000e003c5265736f7572636552656d6f76616c0c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000f005c5265736f7572636552656d6f76616c41636365707465640c01186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640010002c5072696f72697479536574080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400110004a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b00c2c726d726b5f7472616974730c6e6674744163636f756e7449644f72436f6c6c656374696f6e4e66745475706c650c244163636f756e744964010030436f6c6c656374696f6e49640110144e6674496401100108244163636f756e74496404000001244163636f756e74496400000054436f6c6c656374696f6e416e644e66745475706c650800100130436f6c6c656374696f6e496400001001144e6674496400010000b40000050000b804184f7074696f6e04045401100108104e6f6e6500000010536f6d650400100000010000bc101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000c0101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000c40c4870616c6c65745f726d726b5f6d61726b65741870616c6c6574144576656e7404045400012444546f6b656e5072696365557064617465641001146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001147072696365c801504f7074696f6e3c42616c616e63654f663c543e3e0000048454686520707269636520666f72206120746f6b656e20776173207570646174656424546f6b656e536f6c641401146f776e6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e00010474546f6b656e2077617320736f6c6420746f2061206e6577206f776e65722c546f6b656e4c69737465641001146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e0002046c546f6b656e206c6973746564206f6e204d61726b6574706c61636534546f6b656e556e6c69737465640c01146f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400030474546f6b656e20756e6c6973746564206f6e204d61726b6574706c6163652c4f66666572506c6163656410011c6f666665726572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000114707269636518013042616c616e63654f663c543e0004046c4f666665722077617320706c61636564206f6e206120746f6b656e384f6666657257697468647261776e0c011873656e646572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640005044c4f66666572207761732077697468647261776e344f6666657241636365707465641001146f776e6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000604484f666665722077617320616363657074656438526f79616c74794665655061696414011873656e646572000130543a3a4163636f756e744964000134726f79616c74795f6f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e00070484526f79616c747920666565207061696420746f20726f79616c7479206f776e6572344d61726b65744665655061696414011873656e646572000130543a3a4163636f756e7449640001446d61726b6574706c6163655f6f776e6572000130543a3a4163636f756e744964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e000804904d61726b657420666565207061696420746f206d61726b6574706c616365206f776e657204a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909c804184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000cc0c3870616c6c65745f756e69717565731870616c6c6574144576656e7408045400044900016c1c437265617465640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011c63726561746f72000130543a3a4163636f756e7449640001146f776e6572000130543a3a4163636f756e7449640000046c412060636f6c6c656374696f6e602077617320637265617465642e30466f72636543726561746564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572000130543a3a4163636f756e74496400010484412060636f6c6c656374696f6e602077617320666f7263652d637265617465642e2444657374726f796564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400020474412060636f6c6c656374696f6e60207761732064657374726f7965642e184973737565640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400030454416e20606974656d6020776173206973737565642e2c5472616e73666572726564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e74496400040468416e20606974656d6020776173207472616e736665727265642e184275726e65640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400050460416e20606974656d60207761732064657374726f7965642e1846726f7a656e080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640006045c536f6d6520606974656d60207761732066726f7a656e2e18546861776564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640007045c536f6d6520606974656d6020776173207468617765642e40436f6c6c656374696f6e46726f7a656e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400080474536f6d652060636f6c6c656374696f6e60207761732066726f7a656e2e40436f6c6c656374696f6e546861776564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400090474536f6d652060636f6c6c656374696f6e6020776173207468617765642e304f776e65724368616e676564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001246e65775f6f776e6572000130543a3a4163636f756e744964000a0448546865206f776e6572206368616e6765642e2c5465616d4368616e676564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000118697373756572000130543a3a4163636f756e74496400011461646d696e000130543a3a4163636f756e74496400011c667265657a6572000130543a3a4163636f756e744964000b0470546865206d616e6167656d656e74207465616d206368616e6765642e40417070726f7665645472616e73666572100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964000c083101416e20606974656d60206f6620612060636f6c6c656374696f6e6020686173206265656e20617070726f7665642062792074686520606f776e65726020666f72207472616e736665722062793461206064656c6567617465602e44417070726f76616c43616e63656c6c6564100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572000130543a3a4163636f756e74496400012064656c6567617465000130543a3a4163636f756e744964000d081901416e20617070726f76616c20666f722061206064656c656761746560206163636f756e7420746f207472616e736665722074686520606974656d60206f6620616e206974656da860636f6c6c656374696f6e60207761732063616e63656c6c65642062792069747320606f776e6572602e444974656d5374617475734368616e676564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000e041101412060636f6c6c656374696f6e602068617320686164206974732061747472696275746573206368616e676564206279207468652060466f72636560206f726967696e2e54436f6c6c656374696f6e4d657461646174615365740c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c000f04b44e6577206d6574616461746120686173206265656e2073657420666f7220612060636f6c6c656374696f6e602e64436f6c6c656374696f6e4d65746164617461436c6561726564040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964001004b44d6574616461746120686173206265656e20636c656172656420666f7220612060636f6c6c656374696f6e602e2c4d65746164617461536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c001104984e6577206d6574616461746120686173206265656e2073657420666f7220616e206974656d2e3c4d65746164617461436c6561726564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964001204984d6574616461746120686173206265656e20636c656172656420666f7220616e206974656d2e2c52656465706f7369746564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001407375636365737366756c5f6974656d73d401385665633c543a3a4974656d49643e001304984d6574616461746120686173206265656e20636c656172656420666f7220616e206974656d2e30417474726962757465536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e00011476616c7565c00174426f756e6465645665633c75382c20543a3a56616c75654c696d69743e00140405014e657720617474726962757465206d6574616461746120686173206265656e2073657420666f7220612060636f6c6c656374696f6e60206f7220606974656d602e40417474726962757465436c65617265640c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e0015040501417474726962757465206d6574616461746120686173206265656e20636c656172656420666f7220612060636f6c6c656374696f6e60206f7220606974656d602e684f776e657273686970416363657074616e63654368616e67656408010c77686f000130543a3a4163636f756e7449640001406d617962655f636f6c6c656374696f6eb8015c4f7074696f6e3c543a3a436f6c6c656374696f6e49643e001604c04f776e65727368697020616363657074616e636520686173206368616e67656420666f7220616e206163636f756e742e58436f6c6c656374696f6e4d6178537570706c79536574080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d61785f737570706c7910010c753332001704a44d617820737570706c7920686173206265656e2073657420666f72206120636f6c6c656374696f6e2e304974656d5072696365536574100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000114707269636518013c4974656d50726963653c542c20493e00014477686974656c69737465645f6275796572a001504f7074696f6e3c543a3a4163636f756e7449643e0018048c546865207072696365207761732073657420666f722074686520696e7374616e63652e404974656d507269636552656d6f766564080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640019049c54686520707269636520666f722074686520696e7374616e6365207761732072656d6f7665642e284974656d426f75676874140128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000114707269636518013c4974656d50726963653c542c20493e00011873656c6c6572000130543a3a4163636f756e7449640001146275796572000130543a3a4163636f756e744964001a044c416e206974656d2077617320626f756768742e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909d0101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000d40000021000d80c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000118404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7260013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7260013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c749801384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909dc08306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000e00000022c00e4000002e800e800000408101000ec08306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ef0014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65f4016473705f72756e74696d653a3a52756e74696d65537472696e670000f00000061000f40000050200f80c306672616d655f73797374656d1870616c6c65741043616c6c0404540001201872656d61726b04011872656d61726b30011c5665633c75383e000014684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e002823203c7765696768743e202d20604f283129602c23203c2f7765696768743e387365745f686561705f7061676573040114706167657328010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646530011c5665633c75383e0002306453657420746865206e65772072756e74696d6520636f64652e002823203c7765696768743e31012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f64656045012d20312063616c6c20746f206063616e5f7365745f636f6465603a20604f28532960202863616c6c73206073705f696f3a3a6d6973633a3a72756e74696d655f76657273696f6e60207768696368206973342020657870656e73697665292e842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e4d0154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652c206275742067656e6572616c6c7920746869732069732076657279b8657870656e736976652e2057652077696c6c207472656174207468697320617320612066756c6c20626c6f636b2e2c23203c2f7765696768743e5c7365745f636f64655f776974686f75745f636865636b73040110636f646530011c5665633c75383e000324190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e002823203c7765696768743e8c2d20604f2843296020776865726520604360206c656e677468206f662060636f646560842d20312073746f726167652077726974652028636f64656320604f28432960292e402d203120646967657374206974656d2e282d2031206576656e742e550154686520776569676874206f6620746869732066756e6374696f6e20697320646570656e64656e74206f6e207468652072756e74696d652e2057652077696c6c207472656174207468697320617320612066756c6c48626c6f636b2e2023203c2f7765696768743e2c7365745f73746f726167650401146974656d73fc01345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973050101205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697830010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b30011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632efc0000020101000101000004083030000501000002300009010c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c6173730d0101845065724469737061746368436c6173733c57656967687473506572436c6173733e00000d010c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454011101000c01186e6f726d616c110101045400012c6f7065726174696f6e616c11010104540001246d616e6461746f72791101010454000011010c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963150101384f7074696f6e3c5765696768743e0001246d61785f746f74616c150101384f7074696f6e3c5765696768743e0001207265736572766564150101384f7074696f6e3c5765696768743e0000150104184f7074696f6e04045401200108104e6f6e6500000010536f6d65040020000001000019010c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d61781d0101545065724469737061746368436c6173733c7533323e00001d010c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f72791001045400002101082873705f776569676874733c52756e74696d65446257656967687400000801107265616428010c753634000114777269746528010c75363400002501082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65f4013452756e74696d65537472696e67000124696d706c5f6e616d65f4013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069732901011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e080108753800002901040c436f77040454012d010004002d010000002d01000002310100310100000408350110003501000003080000000800390100000504003d010c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c65744101101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454012c045300000400e001185665633c543e000045010c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77240124543a3a4d6f6d656e7400004054536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e002823203c7765696768743e31012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4901101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454014d01045300000400550101185665633c543e00004d01104473705f636f6e73656e7375735f617572611c737232353531392c6170705f73723235353139185075626c6963000004005101013c737232353531393a3a5075626c6963000051010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d000055010000024d01005901084873705f636f6e73656e7375735f736c6f747310536c6f740000040028010c75363400005d01083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300006101083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965736501016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564b801244f7074696f6e3c4e3e00006501101c73705f636f72651c626f756e646564407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454017c0453000004007801185665633c543e000069010c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f666d0101bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6699010140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f666d0101bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6699010140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d6265720002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e6d01084c73705f66696e616c6974795f6772616e6470614445717569766f636174696f6e50726f6f66080448012c044e0110000801187365745f6964280114536574496400013065717569766f636174696f6e7101014845717569766f636174696f6e3c482c204e3e00007101084c73705f66696e616c6974795f6772616e6470613045717569766f636174696f6e080448012c044e011001081c507265766f7465040075010139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404008d010141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100007501084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c084964018004560179010453017d0100100130726f756e645f6e756d62657228010c7536340001206964656e74697479800108496400011466697273748901011828562c2053290001187365636f6e648901011828562c20532900007901084066696e616c6974795f6772616e6470611c507265766f7465080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e00007d010c4c73705f66696e616c6974795f6772616e6470610c617070245369676e61747572650000040081010148656432353531393a3a5369676e6174757265000081010c1c73705f636f72651c65643235353139245369676e617475726500000400850101205b75383b2036345d0000850100000340000000080089010000040879017d01008d01084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c084964018004560191010453017d0100100130726f756e645f6e756d62657228010c7536340001206964656e74697479800108496400011466697273749501011828562c2053290001187365636f6e649501011828562c20532900009101084066696e616c6974795f6772616e64706124507265636f6d6d6974080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e000095010000040891017d01009901081c73705f636f726510566f6964000100009d010c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909a101101c73705f636f72651c626f756e646564407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a501045300000400ad0101185665633c543e0000a501083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964350101384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73a901011c526561736f6e730000a901083c70616c6c65745f62616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000ad01000002a50100b101101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401b501045300000400b90101185665633c543e0000b501083c70616c6c65745f62616c616e6365732c52657365727665446174610844526573657276654964656e7469666965720135011c42616c616e6365011800080108696435010144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000b901000002b50100bd010c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000118207472616e7366657208011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565cd010128543a3a42616c616e6365000064d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e61012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f7220696e70757420636f6e66696794202074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e31012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c6578382020636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365cc2020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e5d0120202d2052656d6f76696e6720656e6f7567682066756e64732066726f6d20616e206163636f756e742077696c6c20747269676765722060543a3a4475737452656d6f76616c3a3a6f6e5f756e62616c616e636564602e5d0120202d20607472616e736665725f6b6565705f616c6976656020776f726b73207468652073616d652077617920617320607472616e73666572602c206275742068617320616e206164646974696f6e616c20636865636bdc202020207468617420746865207472616e736665722077696c6c206e6f74206b696c6c20746865206f726967696e206163636f756e742e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e2c7365745f62616c616e63650c010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565cd010128543a3a42616c616e63650001306e65775f7265736572766564cd010128543a3a42616c616e636500012090536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c3101616c736f20616c7465722074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e6365602920617070726f7072696174656c792e1501496620746865206e65772066726565206f722072657365727665642062616c616e63652069732062656c6f7720746865206578697374656e7469616c206465706f7369742cfc69742077696c6c20726573657420746865206163636f756e74206e6f6e63652028606672616d655f73797374656d3a3a4163636f756e744e6f6e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f75726365c10101504163636f756e7449644c6f6f6b75704f663c543e00011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565cd010128543a3a42616c616e63650002184d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e2823203c7765696768743e4d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e74206973206e6f747c2020617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e4c7472616e736665725f6b6565705f616c69766508011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565cd010128543a3a42616c616e63650003184d0153616d6520617320746865205b607472616e73666572605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74206b696c6c207468653c6f726967696e206163636f756e742e00b8393925206f66207468652074696d6520796f752077616e74205b607472616e73666572605d20696e73746561642e00c05b607472616e73666572605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665b40110626f6f6c00044405015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746fc820206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e2023203c7765696768743e39012d204f2831292e204a757374206c696b65207472616e736665722c206275742072656164696e672074686520757365722773207472616e7366657261626c652062616c616e63652066697273742e302020233c2f7765696768743e3c666f7263655f756e7265736572766508010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec1010c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e646578019c011408496404000001244163636f756e74496400000014496e6465780400c50101304163636f756e74496e6465780001000c526177040030011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400c90101205b75383b2032305d00040000c5010000069c00c901000003140000000800cd010000061800d1010c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001203856657374696e6742616c616e63650000049856657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c7565544c69717569646974795265737472696374696f6e73000104c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f736974244b656570416c6976650004048c5472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e745c4578697374696e6756657374696e675363686564756c65000504c8412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742c446561644163636f756e740006048842656e6566696369617279206163636f756e74206d757374207072652d65786973743c546f6f4d616e795265736572766573000704ac4e756d626572206f66206e616d656420726573657276657320657863656564204d6178526573657276657304b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909d5010c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000d901086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000dd010c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000110107375646f04011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e6577c10101504163636f756e7449644c6f6f6b75704f663c543e0002285d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686fc10101504163636f756e7449644c6f6f6b75704f663c543e00011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee1010858726d726b5f7375627374726174655f72756e74696d652c52756e74696d6543616c6c00012c1853797374656d0400f801ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400450101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c4772616e6470610400690101b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e0004002042616c616e6365730400bd0101b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500105375646f0400dd0101a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e0007003854656d706c6174654d6f64756c650400e50101cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54656d706c6174654d6f64756c652c2052756e74696d653e00080024526d726b45717569700400e90101b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b45717569702c2052756e74696d653e00090020526d726b436f726504001d0201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b436f72652c2052756e74696d653e000a0028526d726b4d61726b65740400590201bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526d726b4d61726b65742c2052756e74696d653e000b001c556e697175657304005d0201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c556e69717565732c2052756e74696d653e000c001c5574696c6974790400690201b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e000d0000e5010c3c70616c6c65745f74656d706c6174651870616c6c65741043616c6c04045400010830646f5f736f6d657468696e67040124736f6d657468696e6710010c7533320000085901416e206578616d706c6520646973706174636861626c6520746861742074616b657320612073696e676c65732076616c7565206173206120706172616d657465722c20777269746573207468652076616c756520746f4d0173746f7261676520616e6420656d69747320616e206576656e742e20546869732066756e6374696f6e206d75737420626520646973706174636865642062792061207369676e65642065787472696e7369632e2c63617573655f6572726f72000104d8416e206578616d706c6520646973706174636861626c652074686174206d6179207468726f77206120637573746f6d206572726f722e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ee9010c4470616c6c65745f726d726b5f65717569701870616c6c65741043616c6c040454000120486368616e67655f626173655f69737375657208011c626173655f69641001184261736549640001286e65775f697373756572c101018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650000186c4368616e67652074686520697373756572206f6620612042617365002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ea02d2060626173655f6964603a20626173655f696420746f206368616e676520697373756572206f66842d20606e65775f697373756572603a20426173652773206e6577206973737565721465717569701401106974656de8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d4964290001206571756970706572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d49642900012c7265736f757263655f69641001285265736f75726365496400011062617365100118426173654964000110736c6f74100118536c6f7449640001281d014571756970732061206368696c64204e46542773207265736f7572636520746f206120706172656e74277320736c6f742c20696620616c6c2061726520617661696c61626c652e0901457175697070696e67206f7065726174696f6e7320617265206d61696e7461696e656420696e736964652074686520457175697070696e67732073746f726167652efd014d6f64656c6564206166746572205b657175697020696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569702e6d6429002c506172616d65746572733a0d012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206e6f74206e65636573736172696c7920616e797468696e6720656c7365802d206974656d3a204368696c64204e4654206265696e67206571756970706564c02d2065717569707065723a20506172656e74204e46542077686963682077696c6c20657175697020746865206974656d61012d20626173653a204944206f6620746865206261736520776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e6761012d20736c6f743a204944206f662074686520736c6f7420776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e671c756e65717569701001106974656de8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d496429000128756e6571756970706572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d49642900011062617365100118426173654964000110736c6f74100118536c6f744964000238dc556e6571756970732061206368696c64204e46542773207265736f757263652066726f6d2069747320706172656e74277320736c6f742e5043616e206265207375636365737366756c2069665c2d204974656d2068617320626565656e206275726e6564fc2d204974656d20697320657175697070656420616e642065787472696e7369632063616c6c656420627920657175697070696e67206974656d206f776e6572f42d204974656d20697320657175697070656420616e642065787472696e7369632063616c6c6564206279206571756970706572204e4654206f776e65720901457175697070696e67206f7065726174696f6e7320617265206d61696e7461696e656420696e736964652074686520457175697070696e67732073746f726167652efd014d6f64656c6564206166746572205b657175697020696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569702e6d6429002c506172616d65746572733a0d012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206e6f74206e65636573736172696c7920616e797468696e6720656c7365882d206974656d3a204368696c64204e4654206265696e6720756e6571756970706564d02d20756e65717569707065723a20506172656e74204e46542077686963682077696c6c20756e657175697020746865206974656d61012d20626173653a204944206f6620746865206261736520776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e6761012d20736c6f743a204944206f662074686520736c6f7420776869636820746865206974656d20616e64206571756970706572206d757374206561636820686176652061207265736f75726365207265666572656e63696e672865717569707061626c650c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012c65717569707061626c6573ed0101450145717569707061626c654c6973743c426f756e6465645665633c543a3a436f6c6c656374696f6e49642c20543a3a0a4d6178436f6c6c656374696f6e7345717569707061626c65506572506172743e2c3e00032061015570646174657320746865206172726179206f6620436f6c6c656374696f6e7320616c6c6f77656420746f20626520657175697070656420746f2061204261736527732073706563696669656420536c6f7420506172742e25024d6f64656c6564206166746572205b65717569707061626c6520696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f65717569707061626c652e6d6429002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e6720757064617465645d012d2065717569707061626c65733a20546865206c697374206f662065717569707061626c657320746861742077696c6c206f76657272696465207468652063757272656e74204571756970706161626c6573206c6973743865717569707061626c655f6164640c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012865717569707061626c6510013c543a3a436f6c6c656374696f6e496400041c5501416464732061206e657720636f6c6c656374696f6e207468617420697320616c6c6f77656420746f20626520657175697070656420746f2061204261736527732073706563696669656420536c6f7420506172742e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e67207570646174656441012d2065717569707061626c653a205468652065717569707061626c6520746861742077696c6c20626520616464656420746f207468652063757272656e74204571756970706161626c6573206c6973744465717569707061626c655f72656d6f76650c011c626173655f696410011842617365496400011c736c6f745f6964100118536c6f74496400012865717569707061626c6510013c543a3a436f6c6c656374696f6e496400051cb852656d6f7665206120636f6c6c656374696f6e2066726f6d207468652065717569707061626c6573206c6973742e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365e82d20626173655f69643a20546865204261736520636f6e7461696e696e672074686520536c6f74205061727420746f2062652075706461746564fc2d20706172745f69643a2054686520536c6f7420506172742077686f73652045717569707061626c65204c697374206973206265696e67207570646174656451012d2065717569707061626c653a205468652065717569707061626c6520746861742077696c6c2062652072656d6f7665642066726f6d207468652063757272656e74204571756970706161626c6573206c697374247468656d655f61646408011c626173655f69641001184261736549640001147468656d65f5010144426f756e6465645468656d654f663c543e0006345c416464732061205468656d6520746f206120426173652e15024d6f64656c6564206166746572205b7468656d6561646420696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f7468656d656164642e6d64299c5468656d6573206172652073746f72656420696e20746865205468656d65732073746f72616765050141205468656d65206e616d6564202264656661756c7422206973207265717569726564207072696f7220746f20616464696e67206f74686572205468656d65732e002c506172616d65746572733a01012d206f726967696e3a205468652063616c6c6572206f66207468652066756e6374696f6e2c206d75737420626520697373756572206f66207468652062617365d82d20626173655f69643a20546865204261736520636f6e7461696e696e6720746865205468656d6520746f20626520757064617465645d012d207468656d653a20546865205468656d6520746f2061646420746f2074686520426173652e202041205468656d65206861732061206e616d6520616e642070726f706572746965732c2077686963682061726520616e490120206172726179206f66205b6b65792c2076616c75652c20696e68657269745d2e20205468697320617272617920697320626f756e646564206279204d617850726f706572746965735065725468656d652ecc20202d206b65793a2061726269747261727920426f756e646564537472696e672c20646566696e656420627920636c69656e74d420202d2076616c75653a2061726269747261727920426f756e646564537472696e672c20646566696e656420627920636c69656e746820202d20696e68657269743a206f7074696f6e616c20626f6f6c2c6372656174655f626173650c0124626173655f74797065d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00011873796d626f6cd00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e0001147061727473050201e501426f756e6465645665633c50617274547970653c537472696e674c696d69744f663c543e2c20426f756e6465645665633c543a3a436f6c6c656374696f6e49642c20540a3a3a4d6178436f6c6c656374696f6e7345717569707061626c65506572506172743e2c3e2c20543a3a50617274734c696d69742c3e0007244c437265617465732061206e657720426173652ef5014d6f64656c6564206166746572205b6261736520696e746572616374696f6e5d2868747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d737065632f626c6f622f6d61737465722f7374616e64617264732f726d726b322e302e302f696e746572616374696f6e732f626173652e6d6429002c506172616d65746572733af02d206f726967696e3a2043616c6c65722c2077696c6c2062652061737369676e65642061732074686520697373756572206f662074686520426173658c2d20626173655f747970653a206d6564696120747970652c20652e672e20227376672209012d2073796d626f6c3a2061726269747261727920636c69656e742d63686f73656e2073796d626f6c2c20652e672e20226b616e617269615f7375706572626972642241012d2070617274733a206172726179206f6620466978656420616e6420536c6f7420706172747320636f6d706f73696e672074686520626173652c20636f6e66696e656420696e206c656e67746820627930202050617274734c696d6974042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632eed010c2c726d726b5f74726169747310706172743845717569707061626c654c6973740454426f756e646564436f6c6c656374696f6e4c69737401f101010c0c416c6c00000014456d70747900010018437573746f6d0400f1010154426f756e646564436f6c6c656374696f6e4c69737400020000f101101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e0000f5010c2c726d726b5f747261697473147468656d65145468656d650834426f756e646564537472696e6701d058426f756e6465645468656d6550726f7065727469657301f901000c01106e616d65d00134426f756e646564537472696e6700012870726f70657274696573f9010158426f756e6465645468656d6550726f7065727469657300011c696e6865726974b40110626f6f6c0000f901101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401fd01045300000400010201185665633c543e0000fd010c2c726d726b5f747261697473147468656d65345468656d6550726f70657274790434426f756e646564537472696e6701d00008010c6b6579d00134426f756e646564537472696e6700011476616c7565d00134426f756e646564537472696e6700000102000002fd01000502101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e646564566563080454010902045300000400190201185665633c543e000009020c2c726d726b5f74726169747310706172742050617274547970650834426f756e646564537472696e6701d054426f756e646564436f6c6c656374696f6e4c69737401f10101082446697865645061727404000d0201604669786564506172743c426f756e646564537472696e673e00000020536c6f74506172740400110201b8536c6f74506172743c426f756e646564537472696e672c20426f756e646564436f6c6c656374696f6e4c6973743e000100000d020c2c726d726b5f7472616974731070617274244669786564506172740434426f756e646564537472696e6701d0000c010869641001185061727449640001047a1001185a496e64657800010c737263d00134426f756e646564537472696e67000011020c2c726d726b5f747261697473107061727420536c6f74506172740834426f756e646564537472696e6701d054426f756e646564436f6c6c656374696f6e4c69737401f10100100108696410011850617274496400012865717569707061626c65ed01019445717569707061626c654c6973743c426f756e646564436f6c6c656374696f6e4c6973743e00010c737263150201544f7074696f6e3c426f756e646564537472696e673e0001047a1001185a496e6465780000150204184f7074696f6e04045401d00108104e6f6e6500000010536f6d650400d0000001000019020000020902001d020c4070616c6c65745f726d726b5f636f72651870616c6c65741043616c6c04045400014c206d696e745f6e66742001146f776e6572a001504f7074696f6e3c543a3a4163636f756e7449643e0001186e66745f6964100124543a3a4974656d4964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000144726f79616c74795f726563697069656e74a001504f7074696f6e3c543a3a4163636f756e7449643e00011c726f79616c74792102013c4f7074696f6e3c5065726d696c6c3e0001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e0001307472616e7366657261626c65b40110626f6f6c0001247265736f7572636573290201904f7074696f6e3c426f756e6465645265736f75726365496e666f547970654f663c543e3e000024a04d696e747320616e204e465420696e207468652073706563696669656420636f6c6c656374696f6e9c53657473206d6574616461746120616e642074686520726f79616c747920617474726962757465002c506172616d65746572733af02d2060636f6c6c656374696f6e5f6964603a2054686520636f6c6c656374696f6e206f662074686520617373657420746f206265206d696e7465642ed02d20606e66745f6964603a20546865206e66742076616c7565206f662074686520617373657420746f206265206d696e7465642e982d2060726563697069656e74603a205265636569766572206f662074686520726f79616c747901012d2060726f79616c7479603a205065726d696c6c616765207265776172642066726f6d206561636820747261646520666f722074686520526563697069656e74e42d20606d65746164617461603a2041726269747261727920646174612061626f757420616e206e66742c20652e672e20495046532068617368606d696e745f6e66745f6469726563746c795f746f5f6e66742001146f776e6572e8017028543a3a436f6c6c656374696f6e49642c20543a3a4974656d4964290001186e66745f6964100124543a3a4974656d4964000134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000144726f79616c74795f726563697069656e74a001504f7074696f6e3c543a3a4163636f756e7449643e00011c726f79616c74792102013c4f7074696f6e3c5065726d696c6c3e0001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e0001307472616e7366657261626c65b40110626f6f6c0001247265736f7572636573290201904f7074696f6e3c426f756e6465645265736f75726365496e666f547970654f663c543e3e00012401014d696e747320616e204e465420696e207468652073706563696669656420636f6c6c656374696f6e206469726563746c7920746f20616e6f74686572204e46549c53657473206d6574616461746120616e642074686520726f79616c747920617474726962757465002c506172616d65746572733adc2d2060636f6c6c656374696f6e5f6964603a2054686520636c617373206f662074686520617373657420746f206265206d696e7465642ed02d20606e66745f6964603a20546865206e66742076616c7565206f662074686520617373657420746f206265206d696e7465642e982d2060726563697069656e74603a205265636569766572206f662074686520726f79616c747901012d2060726f79616c7479603a205065726d696c6c616765207265776172642066726f6d206561636820747261646520666f722074686520526563697069656e74e42d20606d65746164617461603a2041726269747261727920646174612061626f757420616e206e66742c20652e672e20495046532068617368446372656174655f636f6c6c656374696f6e100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001206d65746164617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00010c6d6178b8012c4f7074696f6e3c7533323e00011873796d626f6c51020170426f756e646564436f6c6c656374696f6e53796d626f6c4f663c543e0002044c437265617465206120636f6c6c656374696f6e206275726e5f6e6674080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000304206275726e206e66744864657374726f795f636f6c6c656374696f6e040134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640004044864657374726f7920636f6c6c656374696f6e1073656e640c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001246e65775f6f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e00051c11015472616e73666572732061204e46542066726f6d20616e204163636f756e74206f72204e4654204120746f20616e6f74686572204163636f756e74206f72204e46542042002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ef42d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265207472616e73666572726564bc2d20606e66745f6964603a206e6674206964206f6620746865206e667420746f206265207472616e736665727265642d012d20606e65775f6f776e6572603a206e6577206f776e6572206f6620746865206e66742077686963682063616e2062652065697468657220616e206163636f756e74206f722061204e4654286163636570745f6e66740c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001246e65775f6f776e6572b00121014163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c543a3a4163636f756e7449642c20543a3a436f6c6c656374696f6e49642c20543a3a4974656d49640a3e000620f44163636570747320616e204e46542073656e742066726f6d20616e6f74686572206163636f756e7420746f2073656c66206f72206f776e6564204e4654002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ee82d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265206163636570746564b02d20606e66745f6964603a206e6674206964206f6620746865206e667420746f20626520616363657074656451012d20606e65775f6f776e6572603a20656974686572206f726967696e2773206163636f756e74204944206f72206f726967696e2d6f776e6564204e46542c2077686963686576657220746865204e46542077617324202073656e7420746f2872656a6563745f6e6674080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000718f452656a6563747320616e204e46542073656e742066726f6d20616e6f74686572206163636f756e7420746f2073656c66206f72206f776e6564204e4654002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6ee82d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206265206163636570746564b02d20606e66745f6964603a206e6674206964206f6620746865206e667420746f206265206163636570746564606368616e67655f636f6c6c656374696f6e5f697373756572080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001286e65775f697373756572c101018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000818844368616e67652074686520697373756572206f66206120636f6c6c656374696f6e002c506172616d65746572733a942d20606f726967696e603a2073656e646572206f6620746865207472616e73616374696f6efc2d2060636f6c6c656374696f6e5f6964603a20636f6c6c656374696f6e206964206f6620746865206e667420746f206368616e676520697373756572206f669c2d20606e65775f697373756572603a20436f6c6c656374696f6e2773206e657720697373756572307365745f70726f7065727479100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001306d617962655f6e66745f6964b801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc01344b65794c696d69744f663c543e00011476616c7565c0013c56616c75654c696d69744f663c543e00090470736574206120637573746f6d2076616c7565206f6e20616e204e46543c6c6f636b5f636f6c6c656374696f6e040134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e4964000a043c6c6f636b20636f6c6c656374696f6e486164645f62617369635f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f757263653d02017c42617369635265736f757263653c537472696e674c696d69744f663c543e3e00012c7265736f757263655f69641001285265736f757263654964000b0454437265617465206261736963207265736f757263655c6164645f636f6d706f7361626c655f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f757263654102012101436f6d706f7361626c655265736f757263653c537472696e674c696d69744f663c543e2c20426f756e6465645665633c5061727449642c20543a3a50617274734c696d69740a3e3e00012c7265736f757263655f69641001285265736f757263654964000c046843726561746520636f6d706f7361626c65207265736f75726365446164645f736c6f745f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f7572636549020178536c6f745265736f757263653c537472696e674c696d69744f663c543e3e00012c7265736f757263655f69641001285265736f757263654964000d045043726561746520736c6f74207265736f75726365407265706c6163655f7265736f75726365100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001207265736f7572636539020109015265736f7572636554797065733c537472696e674c696d69744f663c543e2c20426f756e6465645665633c5061727449642c20543a3a50617274734c696d69743e3e00012c7265736f757263655f69641001285265736f757263654964000e04585265706c616365207265736f757263652062792069643c6163636570745f7265736f757263650c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964000f04e061636365707420746865206164646974696f6e206f662061206e6577207265736f7572636520746f20616e206578697374696e67204e46543c72656d6f76655f7265736f757263650c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f7572636549640010043c72656d6f7665207265736f757263655c6163636570745f7265736f757263655f72656d6f76616c0c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400012c7265736f757263655f69641001285265736f757263654964001104cc616363657074207468652072656d6f76616c206f662061207265736f75726365206f6620616e206578697374696e67204e4654307365745f7072696f726974790c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640001287072696f726974696573550201a0426f756e6465645665633c5265736f7572636549642c20543a3a4d61785072696f7269746965733e001204a8736574206120646966666572656e74206f72646572206f66207265736f75726365207072696f72697479042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e210204184f7074696f6e0404540125020108104e6f6e6500000010536f6d6504002502000001000025020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000290204184f7074696f6e040454012d020108104e6f6e6500000010536f6d6504002d0200000100002d02101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540131020453000004004d0201185665633c543e000031020c2c726d726b5f747261697473207265736f757263653c5265736f75726365496e666f4d696e0834426f756e646564537472696e6701d030426f756e64656450617274730135020008010869641001285265736f7572636549640001207265736f75726365390201a85265736f7572636554797065733c426f756e646564537472696e672c20426f756e64656450617274733e00003502101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e000039020c2c726d726b5f747261697473207265736f75726365345265736f7572636554797065730834426f756e646564537472696e6701d030426f756e6465645061727473013502010c14426173696304003d02017042617369635265736f757263653c426f756e646564537472696e673e00000028436f6d706f7361626c650400410201bc436f6d706f7361626c655265736f757263653c426f756e646564537472696e672c20426f756e64656450617274733e00010010536c6f7404004902016c536c6f745265736f757263653c426f756e646564537472696e673e000200003d020c2c726d726b5f747261697473207265736f757263653442617369635265736f757263650434426f756e646564537472696e6701d0000401206d65746164617461d00134426f756e646564537472696e67000041020c2c726d726b5f747261697473207265736f7572636548436f6d706f7361626c655265736f757263650834426f756e646564537472696e6701d030426f756e646564506172747301350200100114706172747335020130426f756e6465645061727473000110626173651001184261736549640001206d65746164617461150201544f7074696f6e3c426f756e646564537472696e673e000110736c6f74450201604f7074696f6e3c284261736549642c20536c6f744964293e0000450204184f7074696f6e04045401e80108104e6f6e6500000010536f6d650400e8000001000049020c2c726d726b5f747261697473207265736f7572636530536c6f745265736f757263650434426f756e646564537472696e6701d0000c0110626173651001184261736549640001206d65746164617461150201544f7074696f6e3c426f756e646564537472696e673e000110736c6f74100118536c6f74496400004d020000023102005102101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e00005502101c73705f636f72651c626f756e6465642c626f756e6465645f76656328426f756e6465645665630804540110045300000400d401185665633c543e000059020c4870616c6c65745f726d726b5f6d61726b65741870616c6c65741043616c6c0404540001180c6275790c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e74c801504f7074696f6e3c42616c616e63654f663c543e3e00002051014275792061206c6973746564204e46542e20456e73757265207468617420746865204e465420697320617661696c61626c6520666f7220707572636861736520616e6420686173206e6f7420726563656e746c79806265656e207075726368617365642c2073656e742c206f72206275726e65642e002c506172616d65746572733ab0092d20606f726967696e60202d204163636f756e74206f662074686520706f74656e7469616c206275796572c8092d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e465490092d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654e0092d2060616d6f756e7460202d204f7074696f6e616c20707269636520617420776869636820627579657220707572636861736564206174106c697374100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e00011c65787069726573b801584f7074696f6e3c543a3a426c6f636b4e756d6265723e00012c4d014c697374206120524d524b204e4654206f6e20746865204d61726b6574706c61636520666f722070757263686173652e2041206c697374696e672063616e2062652063616e63656c6c65642c20616e6420697359016175746f6d61746963616c6c7920636f6e736964657265642063616e63656c6c6564207768656e2061206062757960206973206578656375746564206f6e20746f70206f66206120676976656e206c697374696e672e5501416e204e465420746861742068617320616e6f74686572204e465420617320697473206f776e65722043414e4e4f54206265206c69737465642e20416e204e4654206f776e65642062792061204e4654206d757374c066697273742062652073656e7420746f20616e206163636f756e74206265666f7265206265696e67206c69737465642e002c506172616d65746572733aec092d20606f726967696e60202d204163636f756e74206f66206f776e6572206f662074686520524d524b204e465420746f206265206c6973746564c8092d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e465490092d20606e66745f696460202d204e4654206964206f662074686520524d524b204e46548c092d2060616d6f756e7460202d205072696365206f662074686520524d524b204e46540101092d20606578706972657360202d204f7074696f6e616c20426c6f636b4e756d62657220666f72207768656e20746865206c697374696e67206578706972657318756e6c697374080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d49640002182d01556e6c697374206120524d524b204e4654206f6e20746865204d61726b6574706c61636520616e642072656d6f76652066726f6d2073746f7261676520696e20604c697374696e6773602e002c506172616d65746572733ac42d20606f726967696e60202d204163636f756e74206f776e6572206f6620746865206c697374656420524d524b204e4654c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654286d616b655f6f66666572100134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d4964000118616d6f756e7418013042616c616e63654f663c543e00011c65787069726573b801584f7074696f6e3c543a3a426c6f636b4e756d6265723e00032459014d616b6520616e206f66666572206f6e206120524d524b204e465420666f722070757263686173652e20416e206f666665722063616e20626520736574207769746820616e2065787069726174696f6e207768657265e4746865206f666665722063616e206e6f206c6f6e6765722062652061636365707465642062792074686520524d524b204e4654206f776e6572002c506172616d65746572733aac2d20606f726967696e60202d204163636f756e74206f662074686520706f74656e7469616c206275796572c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654882d2060616d6f756e7460202d205072696365206f662074686520524d524b204e4654a02d206065787069726174696f6e60202d2045787069726174696f6e206f6620746865206f666665723877697468647261775f6f66666572080134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400041c5901576974686472617720616e206f66666572206f6e206120524d524b204e46542c20737563682074686174206974206973206e6f206c6f6e67657220617661696c61626c6520746f20626520616363657074656420627934746865204e4654206f776e6572002c506172616d65746572733adc2d20606f726967696e60202d204163636f756e7420746861742077616e747320746f207769746864726177207468656972206f66666572c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654306163636570745f6f666665720c0134636f6c6c656374696f6e5f696410013c543a3a436f6c6c656374696f6e49640001186e66745f6964100124543a3a4974656d496400011c6f666665726572000130543a3a4163636f756e74496400051cd441636365707420616e206f66666572206f6e206120524d524b204e46542066726f6d206120706f74656e7469616c2062757965722e002c506172616d65746572733a3d012d20606f726967696e60202d204163636f756e74206f66207468652063757272656e74206f776e6572207468617420697320616363657074696e6720746865206f6666657265722773206f66666572c42d2060636f6c6c656374696f6e5f696460202d20436f6c6c656374696f6e206964206f662074686520524d524b204e46548c2d20606e66745f696460202d204e4654206964206f662074686520524d524b204e4654a42d20606f66666572657260202d204163636f756e742074686174206d61646520746865206f66666572042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e5d020c3870616c6c65745f756e69717565731870616c6c65741043616c6c08045400044900016818637265617465080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011461646d696ec10101504163636f756e7449644c6f6f6b75704f663c543e000040090149737375652061206e657720636f6c6c656374696f6e206f66206e6f6e2d66756e6769626c65206974656d732066726f6d2061207075626c6963206f726967696e2e001d0154686973206e657720636f6c6c656374696f6e20686173206e6f206974656d7320696e697469616c6c7920616e6420697473206f776e657220697320746865206f726967696e2e006101546865206f726967696e206d75737420636f6e666f726d20746f2074686520636f6e6669677572656420604372656174654f726967696e6020616e6420686176652073756666696369656e742066756e647320667265652e00ac604974656d4465706f736974602066756e6473206f662073656e646572206172652072657365727665642e002c506172616d65746572733a61012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206e657720636f6c6c656374696f6e2e2054686973206d757374206e6f742062652063757272656e746c7920696e207573652e45012d206061646d696e603a205468652061646d696e206f66207468697320636f6c6c656374696f6e2e205468652061646d696e2069732074686520696e697469616c2061646472657373206f662065616368986d656d626572206f662074686520636f6c6c656374696f6e27732061646d696e207465616d2e0098456d69747320604372656174656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f2831296030666f7263655f6372656174650c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c10101504163636f756e7449644c6f6f6b75704f663c543e000130667265655f686f6c64696e67b40110626f6f6c000144190149737375652061206e657720636f6c6c656374696f6e206f66206e6f6e2d66756e6769626c65206974656d732066726f6d20612070726976696c65676564206f726967696e2e00ac54686973206e657720636f6c6c656374696f6e20686173206e6f206974656d7320696e697469616c6c792e00a4546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e602e009c556e6c696b652060637265617465602c206e6f2066756e6473206172652072657365727665642e0049012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206e6577206974656d2e2054686973206d757374206e6f742062652063757272656e746c7920696e207573652e39012d20606f776e6572603a20546865206f776e6572206f66207468697320636f6c6c656374696f6e206f66206974656d732e20546865206f776e6572206861732066756c6c207375706572757365723420207065726d697373696f6e7321016f7665722074686973206974656d2c20627574206d6179206c61746572206368616e676520616e6420636f6e66696775726520746865207065726d697373696f6e73207573696e6790607472616e736665725f6f776e6572736869706020616e6420607365745f7465616d602e00ac456d6974732060466f7263654372656174656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f283129601c64657374726f79080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011c7769746e6573736102013844657374726f795769746e65737300023c9c44657374726f79206120636f6c6c656374696f6e206f662066756e6769626c65206974656d732e005d01546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e60206f72206d75737420626520605369676e65646020616e64207468652073656e646572206d75737420626520746865686f776e6572206f66207468652060636f6c6c656374696f6e602e0005012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e20746f2062652064657374726f7965642e31012d20607769746e657373603a20496e666f726d6174696f6e206f6e20746865206974656d73206d696e74656420696e2074686520636f6c6c656374696f6e2e2054686973206d75737420626520636f72726563742e00a0456d697473206044657374726f79656460206576656e74207768656e207375636365737366756c2e00645765696768743a20604f286e202b206d29602077686572653a542d20606e203d207769746e6573732e6974656d7360782d20606d203d207769746e6573732e6974656d5f6d657461646174617360682d206061203d207769746e6573732e6174747269627574657360106d696e740c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001146f776e6572c10101504163636f756e7449644c6f6f6b75704f663c543e00032ca04d696e7420616e206974656d206f66206120706172746963756c617220636f6c6c656374696f6e2e004101546865206f726967696e206d757374206265205369676e656420616e64207468652073656e646572206d7573742062652074686520497373756572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265206d696e7465642ec82d20606974656d603a20546865206974656d2076616c7565206f6620746865206974656d20746f206265206d696e7465642ed82d206062656e6566696369617279603a2054686520696e697469616c206f776e6572206f6620746865206d696e746564206974656d2e0094456d697473206049737375656460206576656e74207768656e207375636365737366756c2e00385765696768743a20604f28312960106275726e0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400012c636865636b5f6f776e6572650201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e00043c5844657374726f7920612073696e676c65206974656d2e00f44f726967696e206d757374206265205369676e656420616e6420746865207369676e696e67206163636f756e74206d757374206265206569746865723a802d207468652041646d696e206f66207468652060636f6c6c656374696f6e603b682d20746865204f776e6572206f662074686520606974656d603b00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265206275726e65642eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265206275726e65642e51012d2060636865636b5f6f776e6572603a2049662060536f6d6560207468656e20746865206f7065726174696f6e2077696c6c206661696c2077697468206057726f6e674f776e65726020756e6c657373207468657820206974656d206973206f776e656420627920746869732076616c75652e00b4456d69747320604275726e6564602077697468207468652061637475616c20616d6f756e74206275726e65642e00385765696768743a20604f283129607c4d6f6465733a2060636865636b5f6f776e65722e69735f736f6d652829602e207472616e736665720c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064657374c10101504163636f756e7449644c6f6f6b75704f663c543e000544c04d6f766520616e206974656d2066726f6d207468652073656e646572206163636f756e7420746f20616e6f746865722e00b454686973207265736574732074686520617070726f766564206163636f756e74206f6620746865206974656d2e00f44f726967696e206d757374206265205369676e656420616e6420746865207369676e696e67206163636f756e74206d757374206265206569746865723a802d207468652041646d696e206f66207468652060636f6c6c656374696f6e603b682d20746865204f776e6572206f662074686520606974656d603b35012d2074686520617070726f7665642064656c656761746520666f722074686520606974656d602028696e207468697320636173652c2074686520617070726f76616c206973207265736574292e0028417267756d656e74733af42d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265207472616e736665727265642ec42d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265207472616e736665727265642edc2d206064657374603a20546865206163636f756e7420746f2072656365697665206f776e657273686970206f6620746865206974656d2e0050456d69747320605472616e73666572726564602e00385765696768743a20604f283129602472656465706f736974080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146974656d73d401385665633c543a3a4974656d49643e0006449852656576616c7561746520746865206465706f73697473206f6e20736f6d65206974656d732e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f2062652066726f7a656e2e29012d20606974656d73603a20546865206974656d73206f662074686520636f6c6c656374696f6e2077686f7365206465706f736974732077696c6c2062652072656576616c75617465642e002d014e4f54453a205468697320657869737473206173206120626573742d6566666f72742066756e6374696f6e2e20416e79206974656d732077686963682061726520756e6b6e6f776e206f723901696e207468652063617365207468617420746865206f776e6572206163636f756e7420646f6573206e6f7420686176652072657365727661626c652066756e647320746f2070617920666f7220614d016465706f73697420696e637265617365206172652069676e6f7265642e2047656e6572616c6c7920746865206f776e65722069736e277420676f696e6720746f2063616c6c2074686973206f6e206974656d73550177686f7365206578697374696e67206465706f736974206973206c657373207468616e2074686520726566726573686564206465706f73697420617320697420776f756c64206f6e6c7920636f7374207468656d2c78736f2069742773206f66206c6974746c6520636f6e73657175656e63652e00590149742077696c6c207374696c6c2072657475726e20616e206572726f7220696e20746865206361736520746861742074686520636f6c6c656374696f6e20697320756e6b6e6f776e206f6620746865207369676e6572706973206e6f74207065726d697474656420746f2063616c6c2069742e00605765696768743a20604f286974656d732e6c656e2829296018667265657a65080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000728c8446973616c6c6f77206675727468657220756e70726976696c65676564207472616e73666572206f6620616e206974656d2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f2062652066726f7a656e2eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f2062652066726f7a656e2e003c456d697473206046726f7a656e602e00385765696768743a20604f283129601074686177080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d4964000828a852652d616c6c6f7720756e70726976696c65676564207472616e73666572206f6620616e206974656d2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00e02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f206265207468617765642eb02d20606974656d603a20546865206974656d206f6620746865206974656d20746f206265207468617765642e003c456d6974732060546861776564602e00385765696768743a20604f2831296044667265657a655f636f6c6c656374696f6e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000924fc446973616c6c6f77206675727468657220756e70726976696c65676564207472616e736665727320666f7220612077686f6c6520636f6c6c656374696f6e2e003d014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c642062652074686520467265657a6572206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f2062652066726f7a656e2e0064456d6974732060436f6c6c656374696f6e46726f7a656e602e00385765696768743a20604f283129603c746861775f636f6c6c656374696f6e040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000a24dc52652d616c6c6f7720756e70726976696c65676564207472616e736665727320666f7220612077686f6c6520636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c64206265207468652041646d696e206f66207468652060636f6c6c656374696f6e602e00b02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e20746f206265207468617765642e0064456d6974732060436f6c6c656374696f6e546861776564602e00385765696768743a20604f28312960487472616e736665725f6f776e657273686970080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c10101504163636f756e7449644c6f6f6b75704f663c543e000b2c844368616e676520746865204f776e6572206f66206120636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00f42d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e2077686f7365206f776e65722073686f756c64206265206368616e6765642e09012d20606f776e6572603a20546865206e6577204f776e6572206f66207468697320636f6c6c656374696f6e2e2054686579206d75737420686176652063616c6c656449012020607365745f6163636570745f6f776e6572736869706020776974682060636f6c6c656374696f6e6020696e206f7264657220666f722074686973206f7065726174696f6e20746f20737563636565642e0054456d69747320604f776e65724368616e676564602e00385765696768743a20604f28312960207365745f7465616d100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e4964000118697373756572c10101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696ec10101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572c10101504163636f756e7449644c6f6f6b75704f663c543e000c30d44368616e676520746865204973737565722c2041646d696e20616e6420467265657a6572206f66206120636f6c6c656374696f6e2e0035014f726967696e206d757374206265205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468652060636f6c6c656374696f6e602e00f02d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e2077686f7365207465616d2073686f756c64206265206368616e6765642eb82d2060697373756572603a20546865206e657720497373756572206f66207468697320636f6c6c656374696f6e2eb02d206061646d696e603a20546865206e65772041646d696e206f66207468697320636f6c6c656374696f6e2ec02d2060667265657a6572603a20546865206e657720467265657a6572206f66207468697320636f6c6c656374696f6e2e0050456d69747320605465616d4368616e676564602e00385765696768743a20604f2831296040617070726f76655f7472616e736665720c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400012064656c6567617465c10101504163636f756e7449644c6f6f6b75704f663c543e000d381501417070726f766520616e206974656d20746f206265207472616e7366657272656420627920612064656c6567617465642074686972642d7061727479206163636f756e742e004d01546865206f726967696e206d75737420636f6e666f726d20746f2060466f7263654f726967696e60206f72206d75737420626520605369676e65646020616e64207468652073656e646572206d757374206265f865697468657220746865206f776e6572206f662074686520606974656d60206f72207468652061646d696e206f662074686520636f6c6c656374696f6e2e0045012d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d20746f20626520617070726f76656420666f722064656c656761746564207472616e736665722e15012d20606974656d603a20546865206974656d206f6620746865206974656d20746f20626520617070726f76656420666f722064656c656761746564207472616e736665722e19012d206064656c6567617465603a20546865206163636f756e7420746f2064656c6567617465207065726d697373696f6e20746f207472616e7366657220746865206974656d2e001901496d706f7274616e74204e4f54453a205468652060617070726f76656460206163636f756e7420676574732072657365742061667465722065616368207472616e736665722e0090456d6974732060417070726f7665645472616e7366657260206f6e20737563636573732e00385765696768743a20604f283129603c63616e63656c5f617070726f76616c0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001506d617962655f636865636b5f64656c6567617465650201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e000e40110143616e63656c20746865207072696f7220617070726f76616c20666f7220746865207472616e73666572206f6620616e206974656d20627920612064656c65676174652e00584f726967696e206d757374206265206569746865723a542d207468652060466f72636560206f726967696e3bfc2d20605369676e656460207769746820746865207369676e6572206265696e67207468652041646d696e206f66207468652060636f6c6c656374696f6e603be42d20605369676e656460207769746820746865207369676e6572206265696e6720746865204f776e6572206f662074686520606974656d603b0028417267756d656e74733a3d012d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d206f662077686f736520617070726f76616c2077696c6c2062652063616e63656c6c65642e0d012d20606974656d603a20546865206974656d206f6620746865206974656d206f662077686f736520617070726f76616c2077696c6c2062652063616e63656c6c65642e51012d20606d617962655f636865636b5f64656c6567617465603a2049662060536f6d65602077696c6c20656e7375726520746861742074686520676976656e206163636f756e7420697320746865206f6e6520746fb020207768696368207065726d697373696f6e206f66207472616e736665722069732064656c6567617465642e0094456d6974732060417070726f76616c43616e63656c6c656460206f6e20737563636573732e00385765696768743a20604f2831296044666f7263655f6974656d5f7374617475731c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001146f776e6572c10101504163636f756e7449644c6f6f6b75704f663c543e000118697373756572c10101504163636f756e7449644c6f6f6b75704f663c543e00011461646d696ec10101504163636f756e7449644c6f6f6b75704f663c543e00011c667265657a6572c10101504163636f756e7449644c6f6f6b75704f663c543e000130667265655f686f6c64696e67b40110626f6f6c00012469735f66726f7a656eb40110626f6f6c000f4094416c746572207468652061747472696275746573206f66206120676976656e206974656d2e00744f726967696e206d7573742062652060466f7263654f726967696e602e00ac2d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206974656d2e982d20606f776e6572603a20546865206e6577204f776e6572206f662074686973206974656d2ea02d2060697373756572603a20546865206e657720497373756572206f662074686973206974656d2e982d206061646d696e603a20546865206e65772041646d696e206f662074686973206974656d2ea82d2060667265657a6572603a20546865206e657720467265657a6572206f662074686973206974656d2e51012d2060667265655f686f6c64696e67603a20576865746865722061206465706f7369742069732074616b656e20666f7220686f6c64696e6720616e206974656d206f66207468697320636f6c6c656374696f6e2e39012d206069735f66726f7a656e603a2057686574686572207468697320636f6c6c656374696f6e2069732066726f7a656e2065786365707420666f72207065726d697373696f6e65642f61646d696e34696e737472756374696f6e732e00e0456d69747320604974656d5374617475734368616e67656460207769746820746865206964656e74697479206f6620746865206974656d2e00385765696768743a20604f28312960347365745f617474726962757465100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e00011476616c7565c00174426f756e6465645665633c75382c20543a3a56616c75654c696d69743e001044a853657420616e2061747472696275746520666f72206120636f6c6c656374696f6e206f72206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e005101496620746865206f726967696e206973205369676e65642c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613a2901604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20286b65792e6c656e202b2076616c75652e6c656e29602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0039012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f207365742e05012d20606d617962655f6974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207365742e882d20606b6579603a20546865206b6579206f6620746865206174747269627574652ecc2d206076616c7565603a205468652076616c756520746f20776869636820746f2073657420746865206174747269627574652e0054456d6974732060417474726962757465536574602e00385765696768743a20604f283129603c636c6561725f6174747269627574650c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d617962655f6974656db801444f7074696f6e3c543a3a4974656d49643e00010c6b6579bc016c426f756e6465645665633c75382c20543a3a4b65794c696d69743e001138b0436c65617220616e2061747472696275746520666f72206120636f6c6c656374696f6e206f72206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0041012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f20636c6561722e0d012d20606d617962655f6974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f20636c6561722e882d20606b6579603a20546865206b6579206f6620746865206174747269627574652e0064456d6974732060417474726962757465436c6561726564602e00385765696768743a20604f28312960307365745f6d65746164617461100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0012447453657420746865206d6574616461746120666f7220616e206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468653460636f6c6c656374696f6e602e005101496620746865206f726967696e206973205369676e65642c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613af4604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20646174612e6c656e602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0039012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f207365742eec2d20606974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207365742e4d012d206064617461603a205468652067656e6572616c20696e666f726d6174696f6e206f662074686973206974656d2e204c696d6974656420696e206c656e6774682062792060537472696e674c696d6974602e35012d206069735f66726f7a656e603a205768657468657220746865206d657461646174612073686f756c642062652066726f7a656e20616761696e73742066757274686572206368616e6765732e0050456d69747320604d65746164617461536574602e00385765696768743a20604f2831296038636c6561725f6d65746164617461080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640013347c436c65617220746865206d6574616461746120666f7220616e206974656d2e005d014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f72205369676e656420616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66207468651c606974656d602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0041012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206974656d2773206d6574616461746120746f20636c6561722ef42d20606974656d603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f20636c6561722e0060456d69747320604d65746164617461436c6561726564602e00385765696768743a20604f283129605c7365745f636f6c6c656374696f6e5f6d657461646174610c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400011064617461d00178426f756e6465645665633c75382c20543a3a537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0014408853657420746865206d6574616461746120666f72206120636f6c6c656374696f6e2e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e005901496620746865206f726967696e20697320605369676e6564602c207468656e2066756e6473206f66207369676e657220617265207265736572766564206163636f7264696e6720746f2074686520666f726d756c613af4604d657461646174614465706f73697442617365202b204465706f73697450657242797465202a20646174612e6c656e602074616b696e6720696e746f8c6163636f756e7420616e7920616c72656164792072657365727665642066756e64732e0011012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f6620746865206974656d2077686f7365206d6574616461746120746f207570646174652e4d012d206064617461603a205468652067656e6572616c20696e666f726d6174696f6e206f662074686973206974656d2e204c696d6974656420696e206c656e6774682062792060537472696e674c696d6974602e35012d206069735f66726f7a656e603a205768657468657220746865206d657461646174612073686f756c642062652066726f7a656e20616761696e73742066757274686572206368616e6765732e0078456d6974732060436f6c6c656374696f6e4d65746164617461536574602e00385765696768743a20604f2831296064636c6561725f636f6c6c656374696f6e5f6d65746164617461040128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e496400153090436c65617220746865206d6574616461746120666f72206120636f6c6c656374696f6e2e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e00c0416e79206465706f73697420697320667265656420666f722074686520636f6c6c656374696f6e2773206f776e65722e0025012d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206d6574616461746120746f20636c6561722e0088456d6974732060436f6c6c656374696f6e4d65746164617461436c6561726564602e00385765696768743a20604f28312960507365745f6163636570745f6f776e6572736869700401406d617962655f636f6c6c656374696f6eb8015c4f7074696f6e3c543a3a436f6c6c656374696f6e49643e001628110153657420286f72207265736574292074686520616363657074616e6365206f66206f776e65727368697020666f72206120706172746963756c6172206163636f756e742e0061014f726967696e206d75737420626520605369676e65646020616e6420696620606d617962655f636f6c6c656374696f6e602069732060536f6d65602c207468656e20746865207369676e6572206d757374206861766520614c70726f7669646572207265666572656e63652e0051012d20606d617962655f636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e2077686f7365206f776e65727368697020746865207369676e65722069736101202077696c6c696e6720746f206163636570742c206f7220696620604e6f6e65602c20616e20696e6469636174696f6e207468617420746865207369676e65722069732077696c6c696e6720746f20616363657074206e6f5c20206f776e657273686970207472616e73666572616c2e008c456d69747320604f776e657273686970416363657074616e63654368616e676564602e647365745f636f6c6c656374696f6e5f6d61785f737570706c79080128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001286d61785f737570706c7910010c75333200172ce053657420746865206d6178696d756d20616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20636f756c6420686176652e0055014f726967696e206d757374206265206569746865722060466f7263654f726967696e60206f7220605369676e65646020616e64207468652073656e6465722073686f756c6420626520746865204f776e6572206f66447468652060636f6c6c656374696f6e602e00e44e6f74653a20546869732066756e6374696f6e2063616e206f6e6c792073756363656564206f6e63652070657220636f6c6c656374696f6e2e00ec2d2060636f6c6c656374696f6e603a20546865206964656e746966696572206f662074686520636f6c6c656374696f6e20746f206368616e67652e11012d20606d61785f737570706c79603a20546865206d6178696d756d20616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20636f756c6420686176652e00d4456d6974732060436f6c6c656374696f6e4d6178537570706c7953657460206576656e74207768656e207375636365737366756c2e247365745f7072696365100128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001147072696365c8015c4f7074696f6e3c4974656d50726963653c542c20493e3e00014477686974656c69737465645f6275796572650201704f7074696f6e3c4163636f756e7449644c6f6f6b75704f663c543e3e00182c9453657420286f72207265736574292074686520707269636520666f7220616e206974656d2e0001014f726967696e206d757374206265205369676e656420616e64206d75737420626520746865206f776e6572206f662074686520617373657420606974656d602e00ac2d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d2ea02d20606974656d603a20546865206974656d20746f207365742074686520707269636520666f722e0d012d20607072696365603a2054686520707269636520666f7220746865206974656d2e205061737320604e6f6e65602c20746f207265736574207468652070726963652ef42d20606275796572603a205265737472696374732074686520627579206f7065726174696f6e20746f2061207370656369666963206163636f756e742e00ec456d69747320604974656d507269636553657460206f6e207375636365737320696620746865207072696365206973206e6f7420604e6f6e65602eec456d69747320604974656d507269636552656d6f76656460206f6e20737563636573732069662074686520707269636520697320604e6f6e65602e206275795f6974656d0c0128636f6c6c656374696f6e10013c543a3a436f6c6c656374696f6e49640001106974656d100124543a3a4974656d49640001246269645f707269636518013c4974656d50726963653c542c20493e001924a8416c6c6f777320746f2062757920616e206974656d206966206974277320757020666f722073616c652e00f84f726967696e206d757374206265205369676e656420616e64206d757374206e6f7420626520746865206f776e6572206f662074686520606974656d602e00ac2d2060636f6c6c656374696f6e603a2054686520636f6c6c656374696f6e206f6620746865206974656d2eac2d20606974656d603a20546865206974656d207468652073656e6465722077616e747320746f206275792ed82d20606269645f7072696365603a20546865207072696365207468652073656e6465722069732077696c6c696e6720746f207061792e0078456d69747320604974656d426f7567687460206f6e20737563636573732e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e61020c3870616c6c65745f756e69717565731474797065733844657374726f795769746e65737300000c01146974656d73f0010c7533320001386974656d5f6d6574616461746173f0010c75333200012861747472696275746573f0010c7533320000650204184f7074696f6e04045401c1010108104e6f6e6500000010536f6d650400c101000001000069020c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400011814626174636804011463616c6c736d02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00004c7c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465783901010c75313600011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c736d02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000238ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e2c64697370617463685f617308012461735f6f726967696e71020154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000328c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292e1d012d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b20543a3a576569676874496e666f3a3a64697370617463685f617328292e2c23203c2f7765696768743e2c666f7263655f626174636804011463616c6c736d02017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004387c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e002823203c7765696768743e01012d20436f6d706c65786974793a204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c23203c2f7765696768743e2c776974685f77656967687408011063616c6ce101017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874200118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e6d02000002e1010071020858726d726b5f7375627374726174655f72756e74696d65304f726967696e43616c6c65720001081873797374656d0400750201746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000010566f69640400990101110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f69640001000075020c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e650002000079020c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f2070616c6c65747d020c3c70616c6c65745f74656d706c6174651870616c6c6574144572726f72040454000108244e6f6e6556616c7565000004884572726f72206e616d65732073686f756c642062652064657363726970746976652e3c53746f726167654f766572666c6f77000104f84572726f72732073686f756c6420686176652068656c7066756c20646f63756d656e746174696f6e206173736f6369617465642077697468207468656d2e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090981020c2c726d726b5f74726169747310626173652042617365496e666f08244163636f756e744964010034426f756e646564537472696e6701d0000c01186973737565720001244163636f756e744964000124626173655f74797065d00134426f756e646564537472696e6700011873796d626f6cd00134426f756e646564537472696e67000085020000040ce810100089020000040c10d0d0008d020c4470616c6c65745f726d726b5f65717569701870616c6c6574144572726f720404540001643c5065726d697373696f6e4572726f720000003c4974656d446f65736e7445786973740001004c4571756970706572446f65736e744578697374000200444e6f417661696c61626c6542617365496400030048546f6f4d616e7945717569707061626c6573000400444e6f417661696c61626c65506172744964000500484d7573744265446972656374506172656e740006003c50617274446f65736e7445786973740007003c42617365446f65736e7445786973740008004843616e7445717569704669786564506172740009007c4e6f5265736f75726365466f725468697342617365466f756e644f6e4e6674000a005c436f6c6c656374696f6e4e6f7445717569707061626c65000b00744974656d4861734e6f5265736f75726365546f45717569705468657265000c005c4e6f45717569707061626c654f6e466978656450617274000d00584e6565647344656661756c745468656d654669727374000e004c4974656d416c72656164794571756970706564000f004c536c6f74416c726561647945717569707065640010003c536c6f744e6f74457175697070656400110030556e6b6e6f776e4572726f7200120058457863656564734d617850617274735065724261736500130044546f6f4d616e7950726f706572746965730014003c4974656d4e6f74457175697070656400150094556e65717569707065724d7573744f776e4569746865724974656d4f72457175697070657200160064556e657870656374656454727946726f6d496e744572726f7200170070556e6578706563746564566563436f6e76657273696f6e4572726f7200180004b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090991020c2c726d726b5f74726169747328636f6c6c656374696f6e38436f6c6c656374696f6e496e666f0c34426f756e646564537472696e6701d034426f756e64656453796d626f6c015102244163636f756e7449640100001401186973737565720001244163636f756e7449640001206d65746164617461d00134426f756e646564537472696e6700010c6d6178b8012c4f7074696f6e3c7533323e00011873796d626f6c51020134426f756e64656453796d626f6c0001286e6674735f636f756e7410010c753332000095020c2c726d726b5f7472616974730c6e66741c4e6674496e666f14244163636f756e744964010034526f79616c7479416d6f756e7401250234426f756e646564537472696e6701d030436f6c6c656374696f6e49640110144e667449640110001801146f776e6572b001f44163636f756e7449644f72436f6c6c656374696f6e4e66745475706c653c4163636f756e7449642c20436f6c6c656374696f6e49642c204e667449643e00011c726f79616c7479990201b44f7074696f6e3c526f79616c7479496e666f3c4163636f756e7449642c20526f79616c7479416d6f756e743e3e0001206d65746164617461d00134426f756e646564537472696e670001206571756970706564450201704f7074696f6e3c285265736f7572636549642c20536c6f744964293e00011c70656e64696e67b40110626f6f6c0001307472616e7366657261626c65b40110626f6f6c0000990204184f7074696f6e040454019d020108104e6f6e6500000010536f6d6504009d0200000100009d020c2c726d726b5f7472616974730c6e66742c526f79616c7479496e666f08244163636f756e744964010034526f79616c7479416d6f756e7401250200080124726563697069656e740001244163636f756e744964000118616d6f756e7425020134526f79616c7479416d6f756e740000a1020000040c10101000a50200000408e8e800a9020c2c726d726b5f747261697473207265736f75726365305265736f75726365496e666f0834426f756e646564537472696e6701d030426f756e64656450617274730135020010010869641001285265736f7572636549640001207265736f75726365390201a85265736f7572636554797065733c426f756e646564537472696e672c20426f756e64656450617274733e00011c70656e64696e67b40110626f6f6c00013c70656e64696e675f72656d6f76616cb40110626f6f6c0000ad0200000414101010101000b1020000040c10b8bc00b50200000408b902bd0200b9020c2c726d726b5f7472616974730c6e6674204e66744368696c640830436f6c6c656374696f6e49640110144e66744964011000080134636f6c6c656374696f6e5f6964100130436f6c6c656374696f6e49640001186e66745f69641001144e667449640000bd02082c5068616e746f6d54797065307068616e746f6d5f7479706504045401c102000400c502000000c1020c2c726d726b5f7472616974732070726f70657274793050726f7065727479496e666f0828426f756e6465644b657901bc30426f756e64656456616c756501c00008010c6b6579bc0128426f756e6465644b657900011476616c7565c00130426f756e64656456616c75650000c50200000300000000c10200c9020c4070616c6c65745f726d726b5f636f72651870616c6c6574144572726f7204045400017c244e6f6e6556616c7565000004884572726f72206e616d65732073686f756c642062652064657363726970746976652e3c53746f726167654f766572666c6f77000104f84572726f72732073686f756c6420686176652068656c7066756c20646f63756d656e746174696f6e206173736f6369617465642077697468207468656d2e1c546f6f4c6f6e670002005c4e6f417661696c61626c65436f6c6c656374696f6e4964000300544e6f417661696c61626c655265736f757263654964000400384d657461646174614e6f745365740005003c526563697069656e744e6f74536574000600404e6f417661696c61626c654e66744964000700284e6f74496e52616e676500080034526f79616c74794e6f7453657400090044436f6c6c656374696f6e556e6b6e6f776e000a00304e6f5065726d697373696f6e000b00244e6f5769746e657373000c0048436f6c6c656374696f6e4e6f74456d707479000d0058436f6c6c656374696f6e46756c6c4f724c6f636b6564000e007043616e6e6f7453656e64546f44657363656e64656e744f7253656c66000f00545265736f75726365416c7265616479457869737473001000404e6674416c726561647945786973747300110034456d7074795265736f7572636500120044546f6f4d616e79526563757273696f6e730013049454686520726563757273696f6e206c696d697420686173206265656e20726561636865642e2c4e667449734c6f636b65640014005c43616e6e6f744163636570744e6f6e4f776e65644e66740015005c43616e6e6f7452656a6563744e6f6e4f776e65644e66740016006443616e6e6f7452656a6563744e6f6e50656e64696e674e66740017004c5265736f75726365446f65736e744578697374001800485265736f757263654e6f7450656e64696e67001904d0416363657074696e672061207265736f757263652074686174206973206e6f742070656e64696e672073686f756c64206661696c3c4e6f6e5472616e7366657261626c65001a005843616e6e6f7453656e6445717569707065644974656d001b005843616e6e6f74416363657074546f4e65774f776e6572001c006c4661696c65645472616e73666572486f6f6b73507265436865636b001d007c4661696c65645472616e73666572486f6f6b73506f73745472616e73666572001e0004b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909cd020c4870616c6c65745f726d726b5f6d61726b6574147479706573204c697374496e666f0c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d6265720110000c01246c69737465645f62790001244163636f756e744964000118616d6f756e7418011c42616c616e636500011c65787069726573b8014c4f7074696f6e3c426c6f636b4e756d6265723e0000d10200000408e80000d5020c4870616c6c65745f726d726b5f6d61726b6574147479706573144f666665720c244163636f756e74496401001c42616c616e636501182c426c6f636b4e756d6265720110000c01146d616b65720001244163636f756e744964000118616d6f756e7418011c42616c616e636500011c65787069726573b8014c4f7074696f6e3c426c6f636b4e756d6265723e0000d9020c4870616c6c65745f726d726b5f6d61726b65741870616c6c6574144572726f72040454000144304e6f5065726d697373696f6e000004bc4e6f207065726d697373696f6e7320666f72206163636f756e7420746f20696e7465726163742077697468204e46543c546f6b656e4e6f74466f7253616c6500010458546f6b656e2063616e6e6f7420626520626f756768744c43616e6e6f7457697468647261774f66666572000204a84f6666657220616c726561647920616363657074656420616e642063616e6e6f742077697468647261774443616e6e6f74556e6c697374546f6b656e000304e443616e6e6f7420756e6c697374204e46542061732069742068617320616c7265616479206265656e20756e6c6973746564206f7220736f6c645443616e6e6f744f666665724f6e4f776e546f6b656e0004048c43616e6e6f74206d616b65206f66666572206f6e204e4654206f6e206f776e204e46544443616e6e6f744275794f776e546f6b656e0005049043616e6e6f7420627579204e4654207468617420697320616c7265616479206f776e656430556e6b6e6f776e4f66666572000604404f6666657220697320756e6b6e6f776e5c43616e6e6f744c6973744e66744f776e656442794e66740007047843616e6e6f74206c697374204e4654206f776e65642062792061204e465444546f6b656e446f65734e6f7445786973740008047843616e6e6f74206c6973742061206e6f6e2d6578697374696e67204e46542c4f66666572546f6f4c6f77000904bc4f666665722069732062656c6f7720746865204f666665724d696e696d756d416d6f756e74207468726573686f6c6438416c72656164794f666665726564000a04e04163636f756e742063616e6e6f74206f66666572206f6e2061204e465420616761696e207769746820616e20616374697665206f666665723c4f6666657248617345787069726564000b04c44163636570746564206f6666657220686173206578706972656420616e642063616e6e6f74206265206163636570746564444c697374696e6748617345787069726564000c04a04c697374696e6720686173206578706972656420616e642063616e6e6f7420626520626f756768746050726963654469666665727346726f6d4578706563746564000d04a8507269636520646966666572732066726f6d207768656e206062757960207761732065786563757465643c4e6f6e5472616e7366657261626c65000e04a44e6f7420706f737369626c6520746f206c697374206e6f6e2d7472616e7366657261626c65204e4654584d61726b6574706c6163654f776e65724e6f74536574000f04804d61726b6574706c616365206f776e6572206e6f7420636f6e666967757265643443616e6e6f744c6973744e6674001004410143616e6e6f74206c697374204e4654206261736564206f6e20646f776e73747265616d206c6f67696320696d706c656d656e74656420666f72204d61726b6574706c616365486f6f6b7320747261697404b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909dd020c3870616c6c65745f756e697175657314747970657344436f6c6c656374696f6e44657461696c7308244163636f756e7449640100384465706f73697442616c616e63650118002801146f776e65720001244163636f756e7449640001186973737565720001244163636f756e74496400011461646d696e0001244163636f756e74496400011c667265657a65720001244163636f756e744964000134746f74616c5f6465706f7369741801384465706f73697442616c616e6365000130667265655f686f6c64696e67b40110626f6f6c0001146974656d7310010c7533320001386974656d5f6d657461646174617310010c7533320001286174747269627574657310010c75333200012469735f66726f7a656eb40110626f6f6c0000e1020000040c00101000e50200000408001000e9020c3870616c6c65745f756e69717565731474797065732c4974656d44657461696c7308244163636f756e7449640100384465706f73697442616c616e63650118001001146f776e65720001244163636f756e744964000120617070726f766564a001444f7074696f6e3c4163636f756e7449643e00012469735f66726f7a656eb40110626f6f6c00011c6465706f7369741801384465706f73697442616c616e63650000ed020c3870616c6c65745f756e697175657314747970657348436f6c6c656374696f6e4d6574616461746108384465706f73697442616c616e636501182c537472696e674c696d697400000c011c6465706f7369741801384465706f73697442616c616e636500011064617461d0016c426f756e6465645665633c75382c20537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0000f1020c3870616c6c65745f756e6971756573147479706573304974656d4d6574616461746108384465706f73697442616c616e636501182c537472696e674c696d697400000c011c6465706f7369741801384465706f73697442616c616e636500011064617461d0016c426f756e6465645665633c75382c20537472696e674c696d69743e00012469735f66726f7a656eb40110626f6f6c0000f50200000408c01800f9020000040818a000fd020c3870616c6c65745f756e69717565731870616c6c6574144572726f72080454000449000148304e6f5065726d697373696f6e000004e8546865207369676e696e67206163636f756e7420686173206e6f207065726d697373696f6e20746f20646f20746865206f7065726174696f6e2e44556e6b6e6f776e436f6c6c656374696f6e0001047454686520676976656e206974656d20494420697320756e6b6e6f776e2e34416c7265616479457869737473000204b8546865206974656d2049442068617320616c7265616479206265656e207573656420666f7220616e206974656d2e2857726f6e674f776e6572000304e8546865206f776e6572207475726e6564206f757420746f20626520646966666572656e7420746f2077686174207761732065787065637465642e284261645769746e6573730004046c496e76616c6964207769746e657373206461746120676976656e2e14496e55736500050474546865206974656d20494420697320616c72656164792074616b656e2e1846726f7a656e00060484546865206974656d206f7220636f6c6c656374696f6e2069732066726f7a656e2e3457726f6e6744656c6567617465000704f45468652064656c6567617465207475726e6564206f757420746f20626520646966666572656e7420746f2077686174207761732065787065637465642e284e6f44656c6567617465000804785468657265206973206e6f2064656c656761746520617070726f7665642e28556e617070726f766564000904c44e6f20617070726f76616c20657869737473207468617420776f756c6420616c6c6f7720746865207472616e736665722e28556e6163636570746564000a042501546865206e616d6564206f776e657220686173206e6f74207369676e6564206f776e657273686970206f662074686520636f6c6c656374696f6e2069732061636365707461626c652e184c6f636b6564000b044c546865206974656d206973206c6f636b65642e404d6178537570706c7952656163686564000c046c416c6c206974656d732068617665206265656e206d696e7465642e4c4d6178537570706c79416c7265616479536574000d0490546865206d617820737570706c792068617320616c7265616479206265656e207365742e444d6178537570706c79546f6f536d616c6c000e0441015468652070726f7669646564206d617820737570706c79206973206c65737320746f2074686520616d6f756e74206f66206974656d73206120636f6c6c656374696f6e20616c7265616479206861732e2c556e6b6e6f776e4974656d000f047454686520676976656e206974656d20494420697320756e6b6e6f776e2e284e6f74466f7253616c65001004544974656d206973206e6f7420666f722073616c652e24426964546f6f4c6f77001104705468652070726f76696465642062696420697320746f6f206c6f772e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090901030c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a0909090503102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301c1011043616c6c01e101245369676e6174757265010903144578747261011903000400300000000903082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040081010148656432353531393a3a5369676e61747572650000001c5372323535313904000d030148737232353531393a3a5369676e617475726500010014456364736104001103014065636473613a3a5369676e6174757265000200000d030c1c73705f636f72651c73723235353139245369676e617475726500000400850101205b75383b2036345d000011030c1c73705f636f7265146563647361245369676e617475726500000400150301205b75383b2036355d0000150300000341000000080019030000041c1d03210325032903310335033903001d0310306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000210310306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000250310306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000290310306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004002d03010c45726100002d03102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000310310306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400f00120543a3a496e6465780000350310306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000003903086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400cd01013042616c616e63654f663c543e00003d030858726d726b5f7375627374726174655f72756e74696d651c52756e74696d6500000000381853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010405102c8000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510300400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002c80000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010034040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004404001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022ce40400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000ec04000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e740100b40400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100b40400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000dc040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01f801501830426c6f636b5765696768747309018101e2817a55000b00204aa9d10102004001c2e4981700010bd08e23a82e010200d000010b0098f73e5d010200f000010000c2e4981700010bd0167612a30102002001010b00204aa9d1010200400101070088526a7402005000c2e498170000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746819013000003c00000050000000500004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101060090000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687421014040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e2501010338726d726b2d73756273747261746538726d726b2d73756273747261746501000000640000000100000030643365445941c5cb01000000df6acb689907609b0400000037e397fc7c91f5e40100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000dd718d5cc53262d401000000ab3c0572291feb8b01000000ed99c5acb25eedf503000000bc9d89904f5b923f0100000037c8bb1350a9a2a80200000067f4b8fba858782a0100000001000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669783901082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e013d01006052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100410104000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e00000000012454696d657374616d70012454696d657374616d70080c4e6f7701002820000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e244469645570646174650100b4040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0145010004344d696e696d756d506572696f642820f401000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021041757261011041757261082c417574686f726974696573010049010400046c205468652063757272656e7420617574686f72697479207365742e2c43757272656e74536c6f74010059012000000000000000000c80205468652063757272656e7420736c6f74206f66207468697320626c6f636b2e009420546869732077696c6c2062652073657420696e20606f6e5f696e697469616c697a65602e00000000031c4772616e647061011c4772616e6470611814537461746501005d0104000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500006101040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000e80400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010028200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405281004001059012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e016901017404384d6178417574686f726974696573101020000000045c204d617820417574686f72697469657320696e20757365019d01042042616c616e636573012042616c616e6365731434546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b730101040200a101040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e2052657365727665730101040200b101040004a4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e01bd0101880c484578697374656e7469616c4465706f7369741840f401000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d61784c6f636b7310103200000008f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e2c4d61785265736572766573101000000000040d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e01d10105485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100d50140000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100d90104000000019004604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c6974706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f7269747960004d0120546869732076616c7565206973206d756c7469706c656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e0006105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01dd01019400017902073854656d706c6174654d6f64756c65013854656d706c6174654d6f64756c650424536f6d657468696e6700001004000001e50101a400017d020824526d726b45717569700124526d726b4571756970181442617365730001040510810204000cd42053746f72657320426173657320696e666f20286973737565722c20626173655f747970652c2073796d626f6c2c20706172747329ec20544f444f2068747470733a2f2f6769746875622e636f6d2f726d726b2d7465616d2f726d726b2d7375627374726174652f6973737565732f3938f02044656c6574652050617274732066726f6d20426173657320696e666f2c2061732069742773206b65707420696e2050617274732073746f726167651450617274730001080505e8090204000cb02053746f726573205061727473202865697468657220466978656450617274206f7220536c6f745061727429a8202d20536c6f74506172743a2069642c2065717569707061626c6520286c697374292c207372632c207a60202d204669786564506172743a2069642c207372632c207a284e6578744261736549640100101000000000048c2053746f7265732074686520696e6372656d656e74696e67204e657874426173654964284e6578745061727449640101040510101000000000048c2053746f7265732074686520696e6372656d656e74696e67204e65787450617274496428457175697070696e677300010c0202028502100400040d012053746f72657320457175697070696e677320696e666f20282865717569707065722c20626173652c20736c6f74292c2065717569707065645f7265736f7572636529185468656d657300010c0202028902d004000415012053746f726573205468656d6520696e666f202828626173652c207468656d65206e616d652c2070726f7065727479206b6579292c2070726f70657274792076616c75652901e90101a808544d617850726f706572746965735065725468656d6510106400000004d8204d6178696d756d20616c6c6f7765642050617274732028656974686572204669786564206f7220536c6f74292070657220426173657c4d6178436f6c6c656374696f6e7345717569707061626c655065725061727410106400000004cc204d6178696d756d206e756d626572206f662050726f7065727469657320616c6c6f77656420666f7220616e79205468656d65018d020920526d726b436f72650120526d726b436f7265282c436f6c6c656374696f6e7300010405109102040004602053746f72657320636f6c6c656374696f6e7320696e666f104e6674730001080505e89502040004402053746f726573206e667420696e666f285072696f72697469657300010c020202a10210040004542053746f726573207072696f7269747920696e666f204368696c6472656e0001080505a5029c040004642053746f726573206e6674206368696c6472656e20696e666f245265736f757263657300010c020202a102a902040004542053746f726573207265736f7572636520696e666f3c45717569707061626c65426173657300010c020202a1029c04000cd02053746f72657320746865206578697374656e6365206f662061206261736520666f72206120706172746963756c6172204e4654dc205468697320697320706f70756c61746564206f6e20606164645f636f6d706f7361626c655f7265736f75726365602c20616e64206973e4207573656420696e2074686520726d726b2d65717569702070616c6c6574207768656e20657175697070696e672061207265736f757263652e3c45717569707061626c65536c6f74730001140202020202ad029c040010dc2053746f72657320746865206578697374656e6365206f6620612042617365202b20536c6f7420666f72206120706172746963756c6172c4204e4654277320706172746963756c6172207265736f757263652e20205468697320697320706f70756c61746564206f6ecc20606164645f736c6f745f7265736f75726365602c20616e64206973207573656420696e2074686520726d726b2d6571756970882070616c6c6574207768656e20657175697070696e672061207265736f757263652e2850726f7065727469657300010c020202b102c0040004b4204172626974726172792070726f70657274696573202f206d65746164617461206f6620616e2061737365742e104c6f636b01010405e8b404000438204c6f636b20666f72204e4654733044756d6d7953746f726167650000b5020400149c20546869732073746f72616765206973206e6f7420757365642062792074686520636861696e2ec4204974206973206e656564206f6e6c7920666f7220506f6c6b61646f744a532074797065732067656e65726174696f6e2e00d0205468652073746f726564207479706573206172652075736520696e207468652052504320696e74657266616365206f6e6c792c090120506f6c6b61646f744a5320776f6e27742067656e657261746520545320747970657320666f72207468656d20776974686f757420746869732073746f726167652e011d0201ac144c5265736f7572636553796d626f6c4c696d697410100a000000048c20546865206d6178696d756d207265736f757263652073796d626f6c206c656e6774682850617274734c696d697410101900000004cc20546865206d6178696d756d206e756d626572206f662070617274732065616368207265736f75726365206d61792068617665344d61785072696f72697469657310101900000004410120546865206d6178696d756d206e756d626572206f66207265736f757263657320746861742063616e20626520696e636c7564656420696e2061207365747072696f726974792065787472696e7369633c50726f706572746965734c696d697410101900000004bc20546865206d6178696d756d206e756d626572206f662070726f7065727469657320656163682063616e2068617665344e657374696e6742756467657410101400000004d820546865206d6178696d756d206e657374696e6720616c6c6f77656420696e207468652070616c6c65742065787472696e736963732e01c9020a28526d726b4d61726b65740128526d726b4d61726b65740c284c69737465644e6674730001080202e8cd02040004742053746f726573206c6973746564204e465420707269636520696e666f184f66666572730001080202d102d5020400046c2053746f726573206f66666572206f6e2061204e465420696e666f404d61726b6574706c6163654f776e6572000000040004942053746f72657320746865206d61726b6574706c616365206f776e6572206163636f756e7401590201c408484d696e696d756d4f66666572416d6f756e74184000e1f5050000000000000000000000000498204d696e696d756d206f6666657220616d6f756e7420617320612076616c6964206f66666572244d61726b65744665652502100000000004a4204d61726b65742066656520746f20626520696d706c656d656e74656420646f776e73747265616d2e01d9020b1c556e6971756573011c556e69717565732814436c6173730001040210dd02040004642044657461696c73206f66206120636f6c6c656374696f6e2e4c4f776e657273686970416363657074616e636500010402001004000429012054686520636f6c6c656374696f6e2c20696620616e792c206f6620776869636820616e206163636f756e742069732077696c6c696e6720746f2074616b65206f776e6572736869702e1c4163636f756e7400010c020202e1029c040008590120546865206974656d732068656c6420627920616e7920676976656e206163636f756e743b20736574206f757420746869732077617920736f2074686174206974656d73206f776e656420627920612073696e676c656c206163636f756e742063616e20626520656e756d6572617465642e30436c6173734163636f756e740001080202e5029c04000869012054686520636f6c6c656374696f6e73206f776e656420627920616e7920676976656e206163636f756e743b20736574206f757420746869732077617920736f207468617420636f6c6c656374696f6e73206f776e65642062799020612073696e676c65206163636f756e742063616e20626520656e756d6572617465642e1441737365740001080202e8e902040004d020546865206974656d7320696e206578697374656e636520616e64207468656972206f776e6572736869702064657461696c732e3c436c6173734d657461646174614f660001040210ed0204000468204d65746164617461206f66206120636f6c6c656374696f6e2e48496e7374616e63654d657461646174614f660001080202e8f10204000454204d65746164617461206f6620616e206974656d2e2441747472696275746500010c020202b102f502040004702041747472696275746573206f66206120636f6c6c656374696f6e2e2c4974656d50726963654f660001080202e8f90204000470205072696365206f6620616e20617373657420696e7374616e63652e4c436f6c6c656374696f6e4d6178537570706c79000104021010040004f0204b6565707320747261636b206f6620746865206e756d626572206f66206974656d73206120636f6c6c656374696f6e206d6967687420686176652e015d0201cc2044436f6c6c656374696f6e4465706f736974184000a0724e1809000000000000000000000401012054686520626173696320616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f7220636f6c6c656374696f6e2e2c4974656d4465706f736974184000407a10f35a0000000000000000000004f42054686520626173696320616d6f756e74206f662066756e64732074686174206d75737420626520726573657276656420666f7220616e206974656d2e4c4d657461646174614465706f73697442617365184000a0724e180900000000000000000000044d012054686520626173696320616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e20616464696e67206d6574616461746120746f20796f7572206974656d2e504174747269627574654465706f73697442617365184000a0724e1809000000000000000000000455012054686520626173696320616d6f756e74206f662066756e64732074686174206d757374206265207265736572766564207768656e20616464696e6720616e2061747472696275746520746f20616e206974656d2e384465706f7369745065724279746518400010a5d4e8000000000000000000000008590120546865206164646974696f6e616c2066756e64732074686174206d75737420626520726573657276656420666f7220746865206e756d626572206f662062797465732073746f726520696e206d657461646174612cc02065697468657220226e6f726d616c22206d65746164617461206f7220617474726962757465206d657461646174612e2c537472696e674c696d697410108000000004b020546865206d6178696d756d206c656e677468206f6620646174612073746f726564206f6e2d636861696e2e204b65794c696d697410102000000004a020546865206d6178696d756d206c656e677468206f6620616e20617474726962757465206b65792e2856616c75654c696d697410100001000004a820546865206d6178696d756d206c656e677468206f6620616e206174747269627574652076616c75652e01fd020c1c5574696c697479011c5574696c6974790001690201d8044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e0101030d0503041c40436865636b5370656356657273696f6e1d031038436865636b547856657273696f6e21031030436865636b47656e6573697325032c38436865636b4d6f7274616c69747929032c28436865636b4e6f6e636531039c2c436865636b57656967687435039c604368617267655472616e73616374696f6e5061796d656e7439039c3d03","id":"1"} \ No newline at end of file diff --git a/tests/src/interfaces/registry.ts b/tests/src/interfaces/registry.ts index 33ae9321..064f9cde 100644 --- a/tests/src/interfaces/registry.ts +++ b/tests/src/interfaces/registry.ts @@ -1,7 +1,7 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { FinalityGrandpaEquivocationPrecommit, FinalityGrandpaEquivocationPrevote, FinalityGrandpaPrecommit, FinalityGrandpaPrevote, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportDispatchRawOrigin, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletRmrkMarketCall, PalletRmrkMarketError, PalletRmrkMarketEvent, PalletRmrkMarketListInfo, PalletRmrkMarketOffer, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateCall, PalletTemplateError, PalletTemplateEvent, PalletTimestampCall, PalletTransactionPaymentChargeTransactionPayment, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletUniquesCall, PalletUniquesCollectionDetails, PalletUniquesCollectionMetadata, PalletUniquesDestroyWitness, PalletUniquesError, PalletUniquesEvent, PalletUniquesItemDetails, PalletUniquesItemMetadata, PalletUtilityCall, PalletUtilityError, PalletUtilityEvent, PhantomTypePhantomType, RmrkSubstrateRuntimeOriginCaller, RmrkSubstrateRuntimeRuntime, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceInfoMin, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpConsensusAuraSr25519AppSr25519Public, SpCoreEcdsaSignature, SpCoreEd25519Public, SpCoreEd25519Signature, SpCoreSr25519Public, SpCoreSr25519Signature, SpCoreVoid, SpFinalityGrandpaAppPublic, SpFinalityGrandpaAppSignature, SpFinalityGrandpaEquivocation, SpFinalityGrandpaEquivocationProof, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; +import type { FinalityGrandpaEquivocationPrecommit, FinalityGrandpaEquivocationPrevote, FinalityGrandpaPrecommit, FinalityGrandpaPrevote, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportDispatchRawOrigin, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReserveData, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletRmrkMarketCall, PalletRmrkMarketError, PalletRmrkMarketEvent, PalletRmrkMarketListInfo, PalletRmrkMarketOffer, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateCall, PalletTemplateError, PalletTemplateEvent, PalletTimestampCall, PalletTransactionPaymentChargeTransactionPayment, PalletTransactionPaymentEvent, PalletTransactionPaymentReleases, PalletUniquesCall, PalletUniquesCollectionDetails, PalletUniquesCollectionMetadata, PalletUniquesDestroyWitness, PalletUniquesError, PalletUniquesEvent, PalletUniquesItemDetails, PalletUniquesItemMetadata, PalletUtilityCall, PalletUtilityError, PalletUtilityEvent, PhantomTypePhantomType, RmrkSubstrateRuntimeOriginCaller, RmrkSubstrateRuntimeRuntime, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceInfoMin, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpArithmeticArithmeticError, SpConsensusAuraSr25519AppSr25519Public, SpCoreEcdsaSignature, SpCoreEd25519Public, SpCoreEd25519Signature, SpCoreSr25519Public, SpCoreSr25519Signature, SpCoreVoid, SpFinalityGrandpaAppPublic, SpFinalityGrandpaAppSignature, SpFinalityGrandpaEquivocation, SpFinalityGrandpaEquivocationProof, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -38,7 +38,6 @@ declare module '@polkadot/types/types/registry' { PalletBalancesError: PalletBalancesError; PalletBalancesEvent: PalletBalancesEvent; PalletBalancesReasons: PalletBalancesReasons; - PalletBalancesReleases: PalletBalancesReleases; PalletBalancesReserveData: PalletBalancesReserveData; PalletGrandpaCall: PalletGrandpaCall; PalletGrandpaError: PalletGrandpaError; @@ -99,6 +98,7 @@ declare module '@polkadot/types/types/registry' { RmrkTraitsResourceSlotResource: RmrkTraitsResourceSlotResource; RmrkTraitsTheme: RmrkTraitsTheme; RmrkTraitsThemeThemeProperty: RmrkTraitsThemeThemeProperty; + SpArithmeticArithmeticError: SpArithmeticArithmeticError; SpConsensusAuraSr25519AppSr25519Public: SpConsensusAuraSr25519AppSr25519Public; SpCoreEcdsaSignature: SpCoreEcdsaSignature; SpCoreEd25519Public: SpCoreEd25519Public; @@ -110,7 +110,6 @@ declare module '@polkadot/types/types/registry' { SpFinalityGrandpaAppSignature: SpFinalityGrandpaAppSignature; SpFinalityGrandpaEquivocation: SpFinalityGrandpaEquivocation; SpFinalityGrandpaEquivocationProof: SpFinalityGrandpaEquivocationProof; - SpRuntimeArithmeticError: SpRuntimeArithmeticError; SpRuntimeDigest: SpRuntimeDigest; SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem; SpRuntimeDispatchError: SpRuntimeDispatchError; diff --git a/tests/src/interfaces/types-lookup.ts b/tests/src/interfaces/types-lookup.ts index d96c56cf..8cf70b11 100644 --- a/tests/src/interfaces/types-lookup.ts +++ b/tests/src/interfaces/types-lookup.ts @@ -4,7 +4,7 @@ declare module '@polkadot/types/lookup' { import type { Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; - import type { AccountId32, Call, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; + import type { AccountId32, Call, H256, MultiAddress, Permill } from '@polkadot/types/interfaces/runtime'; import type { Event } from '@polkadot/types/interfaces/system'; /** @name FrameSystemAccountInfo (3) */ @@ -126,7 +126,7 @@ declare module '@polkadot/types/lookup' { readonly isToken: boolean; readonly asToken: SpRuntimeTokenError; readonly isArithmetic: boolean; - readonly asArithmetic: SpRuntimeArithmeticError; + readonly asArithmetic: SpArithmeticArithmeticError; readonly isTransactional: boolean; readonly asTransactional: SpRuntimeTransactionalError; readonly isExhausted: boolean; @@ -153,8 +153,8 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported'; } - /** @name SpRuntimeArithmeticError (27) */ - export interface SpRuntimeArithmeticError extends Enum { + /** @name SpArithmeticArithmeticError (27) */ + export interface SpArithmeticArithmeticError extends Enum { readonly isUnderflow: boolean; readonly isOverflow: boolean; readonly isDivisionByZero: boolean; @@ -385,6 +385,11 @@ declare module '@polkadot/types/lookup' { readonly maybeNftId: Option; readonly key: Bytes; } & Struct; + readonly isPropertiesRemoved: boolean; + readonly asPropertiesRemoved: { + readonly collectionId: u32; + readonly maybeNftId: Option; + } & Struct; readonly isCollectionLocked: boolean; readonly asCollectionLocked: { readonly issuer: AccountId32; @@ -425,7 +430,7 @@ declare module '@polkadot/types/lookup' { readonly collectionId: u32; readonly nftId: u32; } & Struct; - readonly type: 'CollectionCreated' | 'NftMinted' | 'NftBurned' | 'CollectionDestroyed' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'IssuerChanged' | 'PropertySet' | 'PropertyRemoved' | 'CollectionLocked' | 'ResourceAdded' | 'ResourceReplaced' | 'ResourceAccepted' | 'ResourceRemoval' | 'ResourceRemovalAccepted' | 'PrioritySet'; + readonly type: 'CollectionCreated' | 'NftMinted' | 'NftBurned' | 'CollectionDestroyed' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'IssuerChanged' | 'PropertySet' | 'PropertyRemoved' | 'PropertiesRemoved' | 'CollectionLocked' | 'ResourceAdded' | 'ResourceReplaced' | 'ResourceAccepted' | 'ResourceRemoval' | 'ResourceRemovalAccepted' | 'PrioritySet'; } /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (44) */ @@ -487,7 +492,23 @@ declare module '@polkadot/types/lookup' { readonly collectionId: u32; readonly nftId: u32; } & Struct; - readonly type: 'TokenPriceUpdated' | 'TokenSold' | 'TokenListed' | 'TokenUnlisted' | 'OfferPlaced' | 'OfferWithdrawn' | 'OfferAccepted'; + readonly isRoyaltyFeePaid: boolean; + readonly asRoyaltyFeePaid: { + readonly sender: AccountId32; + readonly royaltyOwner: AccountId32; + readonly collectionId: u32; + readonly nftId: u32; + readonly amount: u128; + } & Struct; + readonly isMarketFeePaid: boolean; + readonly asMarketFeePaid: { + readonly sender: AccountId32; + readonly marketplaceOwner: AccountId32; + readonly collectionId: u32; + readonly nftId: u32; + readonly amount: u128; + } & Struct; + readonly type: 'TokenPriceUpdated' | 'TokenSold' | 'TokenListed' | 'TokenUnlisted' | 'OfferPlaced' | 'OfferWithdrawn' | 'OfferAccepted' | 'RoyaltyFeePaid' | 'MarketFeePaid'; } /** @name PalletUniquesEvent (51) */ @@ -685,10 +706,6 @@ declare module '@polkadot/types/lookup' { /** @name FrameSystemCall (62) */ export interface FrameSystemCall extends Enum { - readonly isFillBlock: boolean; - readonly asFillBlock: { - readonly ratio: Perbill; - } & Struct; readonly isRemark: boolean; readonly asRemark: { readonly remark: Bytes; @@ -722,24 +739,24 @@ declare module '@polkadot/types/lookup' { readonly asRemarkWithEvent: { readonly remark: Bytes; } & Struct; - readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; + readonly type: 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; } - /** @name FrameSystemLimitsBlockWeights (67) */ + /** @name FrameSystemLimitsBlockWeights (66) */ export interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (68) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (67) */ export interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (69) */ + /** @name FrameSystemLimitsWeightsPerClass (68) */ export interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -747,25 +764,25 @@ declare module '@polkadot/types/lookup' { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (71) */ + /** @name FrameSystemLimitsBlockLength (70) */ export interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (72) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (71) */ export interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (73) */ + /** @name SpWeightsRuntimeDbWeight (72) */ export interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (74) */ + /** @name SpVersionRuntimeVersion (73) */ export interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -777,7 +794,7 @@ declare module '@polkadot/types/lookup' { readonly stateVersion: u8; } - /** @name FrameSystemError (80) */ + /** @name FrameSystemError (79) */ export interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -788,7 +805,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered'; } - /** @name PalletTimestampCall (82) */ + /** @name PalletTimestampCall (81) */ export interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -797,13 +814,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Set'; } - /** @name SpConsensusAuraSr25519AppSr25519Public (84) */ + /** @name SpConsensusAuraSr25519AppSr25519Public (83) */ export interface SpConsensusAuraSr25519AppSr25519Public extends SpCoreSr25519Public {} - /** @name SpCoreSr25519Public (85) */ + /** @name SpCoreSr25519Public (84) */ export interface SpCoreSr25519Public extends U8aFixed {} - /** @name PalletGrandpaStoredState (88) */ + /** @name PalletGrandpaStoredState (87) */ export interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -820,7 +837,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; } - /** @name PalletGrandpaStoredPendingChange (89) */ + /** @name PalletGrandpaStoredPendingChange (88) */ export interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -828,7 +845,7 @@ declare module '@polkadot/types/lookup' { readonly forced: Option; } - /** @name PalletGrandpaCall (91) */ + /** @name PalletGrandpaCall (90) */ export interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -848,13 +865,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; } - /** @name SpFinalityGrandpaEquivocationProof (92) */ + /** @name SpFinalityGrandpaEquivocationProof (91) */ export interface SpFinalityGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpFinalityGrandpaEquivocation; } - /** @name SpFinalityGrandpaEquivocation (93) */ + /** @name SpFinalityGrandpaEquivocation (92) */ export interface SpFinalityGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -863,7 +880,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Prevote' | 'Precommit'; } - /** @name FinalityGrandpaEquivocationPrevote (94) */ + /** @name FinalityGrandpaEquivocationPrevote (93) */ export interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -871,19 +888,19 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrevote, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (95) */ + /** @name FinalityGrandpaPrevote (94) */ export interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpFinalityGrandpaAppSignature (96) */ + /** @name SpFinalityGrandpaAppSignature (95) */ export interface SpFinalityGrandpaAppSignature extends SpCoreEd25519Signature {} - /** @name SpCoreEd25519Signature (97) */ + /** @name SpCoreEd25519Signature (96) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (100) */ + /** @name FinalityGrandpaEquivocationPrecommit (99) */ export interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpFinalityGrandpaAppPublic; @@ -891,16 +908,16 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrecommit, SpFinalityGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (101) */ + /** @name FinalityGrandpaPrecommit (100) */ export interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpCoreVoid (103) */ + /** @name SpCoreVoid (102) */ export type SpCoreVoid = Null; - /** @name PalletGrandpaError (104) */ + /** @name PalletGrandpaError (103) */ export interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -912,14 +929,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; } - /** @name PalletBalancesBalanceLock (106) */ + /** @name PalletBalancesBalanceLock (105) */ export interface PalletBalancesBalanceLock extends Struct { readonly id: U8aFixed; readonly amount: u128; readonly reasons: PalletBalancesReasons; } - /** @name PalletBalancesReasons (107) */ + /** @name PalletBalancesReasons (106) */ export interface PalletBalancesReasons extends Enum { readonly isFee: boolean; readonly isMisc: boolean; @@ -927,20 +944,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Fee' | 'Misc' | 'All'; } - /** @name PalletBalancesReserveData (110) */ + /** @name PalletBalancesReserveData (109) */ export interface PalletBalancesReserveData extends Struct { readonly id: U8aFixed; readonly amount: u128; } - /** @name PalletBalancesReleases (112) */ - export interface PalletBalancesReleases extends Enum { - readonly isV100: boolean; - readonly isV200: boolean; - readonly type: 'V100' | 'V200'; - } - - /** @name PalletBalancesCall (113) */ + /** @name PalletBalancesCall (111) */ export interface PalletBalancesCall extends Enum { readonly isTransfer: boolean; readonly asTransfer: { @@ -977,7 +987,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve'; } - /** @name PalletBalancesError (118) */ + /** @name PalletBalancesError (116) */ export interface PalletBalancesError extends Enum { readonly isVestingBalance: boolean; readonly isLiquidityRestrictions: boolean; @@ -990,14 +1000,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves'; } - /** @name PalletTransactionPaymentReleases (120) */ + /** @name PalletTransactionPaymentReleases (118) */ export interface PalletTransactionPaymentReleases extends Enum { readonly isV1Ancient: boolean; readonly isV2: boolean; readonly type: 'V1Ancient' | 'V2'; } - /** @name PalletSudoCall (121) */ + /** @name PalletSudoCall (119) */ export interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -1020,7 +1030,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; } - /** @name PalletTemplateCall (123) */ + /** @name PalletTemplateCall (121) */ export interface PalletTemplateCall extends Enum { readonly isDoSomething: boolean; readonly asDoSomething: { @@ -1030,7 +1040,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DoSomething' | 'CauseError'; } - /** @name PalletRmrkEquipCall (124) */ + /** @name PalletRmrkEquipCall (122) */ export interface PalletRmrkEquipCall extends Enum { readonly isChangeBaseIssuer: boolean; readonly asChangeBaseIssuer: { @@ -1084,7 +1094,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeBaseIssuer' | 'Equip' | 'Unequip' | 'Equippable' | 'EquippableAdd' | 'EquippableRemove' | 'ThemeAdd' | 'CreateBase'; } - /** @name RmrkTraitsPartEquippableList (125) */ + /** @name RmrkTraitsPartEquippableList (123) */ export interface RmrkTraitsPartEquippableList extends Enum { readonly isAll: boolean; readonly isEmpty: boolean; @@ -1093,20 +1103,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'All' | 'Empty' | 'Custom'; } - /** @name RmrkTraitsTheme (127) */ + /** @name RmrkTraitsTheme (125) */ export interface RmrkTraitsTheme extends Struct { readonly name: Bytes; readonly properties: Vec; readonly inherit: bool; } - /** @name RmrkTraitsThemeThemeProperty (129) */ + /** @name RmrkTraitsThemeThemeProperty (127) */ export interface RmrkTraitsThemeThemeProperty extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name RmrkTraitsPartPartType (132) */ + /** @name RmrkTraitsPartPartType (130) */ export interface RmrkTraitsPartPartType extends Enum { readonly isFixedPart: boolean; readonly asFixedPart: RmrkTraitsPartFixedPart; @@ -1115,14 +1125,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'FixedPart' | 'SlotPart'; } - /** @name RmrkTraitsPartFixedPart (133) */ + /** @name RmrkTraitsPartFixedPart (131) */ export interface RmrkTraitsPartFixedPart extends Struct { readonly id: u32; readonly z: u32; readonly src: Bytes; } - /** @name RmrkTraitsPartSlotPart (134) */ + /** @name RmrkTraitsPartSlotPart (132) */ export interface RmrkTraitsPartSlotPart extends Struct { readonly id: u32; readonly equippable: RmrkTraitsPartEquippableList; @@ -1130,7 +1140,7 @@ declare module '@polkadot/types/lookup' { readonly z: u32; } - /** @name PalletRmrkCoreCall (137) */ + /** @name PalletRmrkCoreCall (135) */ export interface PalletRmrkCoreCall extends Enum { readonly isMintNft: boolean; readonly asMintNft: { @@ -1258,13 +1268,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'MintNft' | 'MintNftDirectlyToNft' | 'CreateCollection' | 'BurnNft' | 'DestroyCollection' | 'Send' | 'AcceptNft' | 'RejectNft' | 'ChangeCollectionIssuer' | 'SetProperty' | 'LockCollection' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'ReplaceResource' | 'AcceptResource' | 'RemoveResource' | 'AcceptResourceRemoval' | 'SetPriority'; } - /** @name RmrkTraitsResourceResourceInfoMin (142) */ + /** @name RmrkTraitsResourceResourceInfoMin (140) */ export interface RmrkTraitsResourceResourceInfoMin extends Struct { readonly id: u32; readonly resource: RmrkTraitsResourceResourceTypes; } - /** @name RmrkTraitsResourceResourceTypes (144) */ + /** @name RmrkTraitsResourceResourceTypes (142) */ export interface RmrkTraitsResourceResourceTypes extends Enum { readonly isBasic: boolean; readonly asBasic: RmrkTraitsResourceBasicResource; @@ -1275,12 +1285,12 @@ declare module '@polkadot/types/lookup' { readonly type: 'Basic' | 'Composable' | 'Slot'; } - /** @name RmrkTraitsResourceBasicResource (145) */ + /** @name RmrkTraitsResourceBasicResource (143) */ export interface RmrkTraitsResourceBasicResource extends Struct { readonly metadata: Bytes; } - /** @name RmrkTraitsResourceComposableResource (146) */ + /** @name RmrkTraitsResourceComposableResource (144) */ export interface RmrkTraitsResourceComposableResource extends Struct { readonly parts: Vec; readonly base: u32; @@ -1288,14 +1298,14 @@ declare module '@polkadot/types/lookup' { readonly slot: Option>; } - /** @name RmrkTraitsResourceSlotResource (148) */ + /** @name RmrkTraitsResourceSlotResource (146) */ export interface RmrkTraitsResourceSlotResource extends Struct { readonly base: u32; readonly metadata: Option; readonly slot: u32; } - /** @name PalletRmrkMarketCall (152) */ + /** @name PalletRmrkMarketCall (150) */ export interface PalletRmrkMarketCall extends Enum { readonly isBuy: boolean; readonly asBuy: { @@ -1336,7 +1346,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Buy' | 'List' | 'Unlist' | 'MakeOffer' | 'WithdrawOffer' | 'AcceptOffer'; } - /** @name PalletUniquesCall (153) */ + /** @name PalletUniquesCall (151) */ export interface PalletUniquesCall extends Enum { readonly isCreate: boolean; readonly asCreate: { @@ -1489,14 +1499,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Create' | 'ForceCreate' | 'Destroy' | 'Mint' | 'Burn' | 'Transfer' | 'Redeposit' | 'Freeze' | 'Thaw' | 'FreezeCollection' | 'ThawCollection' | 'TransferOwnership' | 'SetTeam' | 'ApproveTransfer' | 'CancelApproval' | 'ForceItemStatus' | 'SetAttribute' | 'ClearAttribute' | 'SetMetadata' | 'ClearMetadata' | 'SetCollectionMetadata' | 'ClearCollectionMetadata' | 'SetAcceptOwnership' | 'SetCollectionMaxSupply' | 'SetPrice' | 'BuyItem'; } - /** @name PalletUniquesDestroyWitness (154) */ + /** @name PalletUniquesDestroyWitness (152) */ export interface PalletUniquesDestroyWitness extends Struct { readonly items: Compact; readonly itemMetadatas: Compact; readonly attributes: Compact; } - /** @name PalletUtilityCall (156) */ + /** @name PalletUtilityCall (154) */ export interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -1520,10 +1530,15 @@ declare module '@polkadot/types/lookup' { readonly asForceBatch: { readonly calls: Vec; } & Struct; - readonly type: 'Batch' | 'AsDerivative' | 'BatchAll' | 'DispatchAs' | 'ForceBatch'; + readonly isWithWeight: boolean; + readonly asWithWeight: { + readonly call: Call; + readonly weight: SpWeightsWeightV2Weight; + } & Struct; + readonly type: 'Batch' | 'AsDerivative' | 'BatchAll' | 'DispatchAs' | 'ForceBatch' | 'WithWeight'; } - /** @name RmrkSubstrateRuntimeOriginCaller (158) */ + /** @name RmrkSubstrateRuntimeOriginCaller (156) */ export interface RmrkSubstrateRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -1531,7 +1546,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'System' | 'Void'; } - /** @name FrameSupportDispatchRawOrigin (159) */ + /** @name FrameSupportDispatchRawOrigin (157) */ export interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -1540,27 +1555,27 @@ declare module '@polkadot/types/lookup' { readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletSudoError (160) */ + /** @name PalletSudoError (158) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name PalletTemplateError (161) */ + /** @name PalletTemplateError (159) */ export interface PalletTemplateError extends Enum { readonly isNoneValue: boolean; readonly isStorageOverflow: boolean; readonly type: 'NoneValue' | 'StorageOverflow'; } - /** @name RmrkTraitsBaseBaseInfo (162) */ + /** @name RmrkTraitsBaseBaseInfo (160) */ export interface RmrkTraitsBaseBaseInfo extends Struct { readonly issuer: AccountId32; readonly baseType: Bytes; readonly symbol: Bytes; } - /** @name PalletRmrkEquipError (165) */ + /** @name PalletRmrkEquipError (163) */ export interface PalletRmrkEquipError extends Enum { readonly isPermissionError: boolean; readonly isItemDoesntExist: boolean; @@ -1590,7 +1605,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PermissionError' | 'ItemDoesntExist' | 'EquipperDoesntExist' | 'NoAvailableBaseId' | 'TooManyEquippables' | 'NoAvailablePartId' | 'MustBeDirectParent' | 'PartDoesntExist' | 'BaseDoesntExist' | 'CantEquipFixedPart' | 'NoResourceForThisBaseFoundOnNft' | 'CollectionNotEquippable' | 'ItemHasNoResourceToEquipThere' | 'NoEquippableOnFixedPart' | 'NeedsDefaultThemeFirst' | 'ItemAlreadyEquipped' | 'SlotAlreadyEquipped' | 'SlotNotEquipped' | 'UnknownError' | 'ExceedsMaxPartsPerBase' | 'TooManyProperties' | 'ItemNotEquipped' | 'UnequipperMustOwnEitherItemOrEquipper' | 'UnexpectedTryFromIntError' | 'UnexpectedVecConversionError'; } - /** @name RmrkTraitsCollectionCollectionInfo (166) */ + /** @name RmrkTraitsCollectionCollectionInfo (164) */ export interface RmrkTraitsCollectionCollectionInfo extends Struct { readonly issuer: AccountId32; readonly metadata: Bytes; @@ -1599,7 +1614,7 @@ declare module '@polkadot/types/lookup' { readonly nftsCount: u32; } - /** @name RmrkTraitsNftNftInfo (167) */ + /** @name RmrkTraitsNftNftInfo (165) */ export interface RmrkTraitsNftNftInfo extends Struct { readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple; readonly royalty: Option; @@ -1609,13 +1624,13 @@ declare module '@polkadot/types/lookup' { readonly transferable: bool; } - /** @name RmrkTraitsNftRoyaltyInfo (169) */ + /** @name RmrkTraitsNftRoyaltyInfo (167) */ export interface RmrkTraitsNftRoyaltyInfo extends Struct { readonly recipient: AccountId32; readonly amount: Permill; } - /** @name RmrkTraitsResourceResourceInfo (172) */ + /** @name RmrkTraitsResourceResourceInfo (170) */ export interface RmrkTraitsResourceResourceInfo extends Struct { readonly id: u32; readonly resource: RmrkTraitsResourceResourceTypes; @@ -1623,22 +1638,22 @@ declare module '@polkadot/types/lookup' { readonly pendingRemoval: bool; } - /** @name RmrkTraitsNftNftChild (176) */ + /** @name RmrkTraitsNftNftChild (174) */ export interface RmrkTraitsNftNftChild extends Struct { readonly collectionId: u32; readonly nftId: u32; } - /** @name PhantomTypePhantomType (177) */ + /** @name PhantomTypePhantomType (175) */ export interface PhantomTypePhantomType extends Vec {} - /** @name RmrkTraitsPropertyPropertyInfo (178) */ + /** @name RmrkTraitsPropertyPropertyInfo (176) */ export interface RmrkTraitsPropertyPropertyInfo extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name PalletRmrkCoreError (180) */ + /** @name PalletRmrkCoreError (178) */ export interface PalletRmrkCoreError extends Enum { readonly isNoneValue: boolean; readonly isStorageOverflow: boolean; @@ -1674,21 +1689,21 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoneValue' | 'StorageOverflow' | 'TooLong' | 'NoAvailableCollectionId' | 'NoAvailableResourceId' | 'MetadataNotSet' | 'RecipientNotSet' | 'NoAvailableNftId' | 'NotInRange' | 'RoyaltyNotSet' | 'CollectionUnknown' | 'NoPermission' | 'NoWitness' | 'CollectionNotEmpty' | 'CollectionFullOrLocked' | 'CannotSendToDescendentOrSelf' | 'ResourceAlreadyExists' | 'NftAlreadyExists' | 'EmptyResource' | 'TooManyRecursions' | 'NftIsLocked' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceDoesntExist' | 'ResourceNotPending' | 'NonTransferable' | 'CannotSendEquippedItem' | 'CannotAcceptToNewOwner' | 'FailedTransferHooksPreCheck' | 'FailedTransferHooksPostTransfer'; } - /** @name PalletRmrkMarketListInfo (181) */ + /** @name PalletRmrkMarketListInfo (179) */ export interface PalletRmrkMarketListInfo extends Struct { readonly listedBy: AccountId32; readonly amount: u128; readonly expires: Option; } - /** @name PalletRmrkMarketOffer (183) */ + /** @name PalletRmrkMarketOffer (181) */ export interface PalletRmrkMarketOffer extends Struct { readonly maker: AccountId32; readonly amount: u128; readonly expires: Option; } - /** @name PalletRmrkMarketError (184) */ + /** @name PalletRmrkMarketError (182) */ export interface PalletRmrkMarketError extends Enum { readonly isNoPermission: boolean; readonly isTokenNotForSale: boolean; @@ -1705,10 +1720,12 @@ declare module '@polkadot/types/lookup' { readonly isListingHasExpired: boolean; readonly isPriceDiffersFromExpected: boolean; readonly isNonTransferable: boolean; - readonly type: 'NoPermission' | 'TokenNotForSale' | 'CannotWithdrawOffer' | 'CannotUnlistToken' | 'CannotOfferOnOwnToken' | 'CannotBuyOwnToken' | 'UnknownOffer' | 'CannotListNftOwnedByNft' | 'TokenDoesNotExist' | 'OfferTooLow' | 'AlreadyOffered' | 'OfferHasExpired' | 'ListingHasExpired' | 'PriceDiffersFromExpected' | 'NonTransferable'; + readonly isMarketplaceOwnerNotSet: boolean; + readonly isCannotListNft: boolean; + readonly type: 'NoPermission' | 'TokenNotForSale' | 'CannotWithdrawOffer' | 'CannotUnlistToken' | 'CannotOfferOnOwnToken' | 'CannotBuyOwnToken' | 'UnknownOffer' | 'CannotListNftOwnedByNft' | 'TokenDoesNotExist' | 'OfferTooLow' | 'AlreadyOffered' | 'OfferHasExpired' | 'ListingHasExpired' | 'PriceDiffersFromExpected' | 'NonTransferable' | 'MarketplaceOwnerNotSet' | 'CannotListNft'; } - /** @name PalletUniquesCollectionDetails (185) */ + /** @name PalletUniquesCollectionDetails (183) */ export interface PalletUniquesCollectionDetails extends Struct { readonly owner: AccountId32; readonly issuer: AccountId32; @@ -1722,7 +1739,7 @@ declare module '@polkadot/types/lookup' { readonly isFrozen: bool; } - /** @name PalletUniquesItemDetails (188) */ + /** @name PalletUniquesItemDetails (186) */ export interface PalletUniquesItemDetails extends Struct { readonly owner: AccountId32; readonly approved: Option; @@ -1730,21 +1747,21 @@ declare module '@polkadot/types/lookup' { readonly deposit: u128; } - /** @name PalletUniquesCollectionMetadata (189) */ + /** @name PalletUniquesCollectionMetadata (187) */ export interface PalletUniquesCollectionMetadata extends Struct { readonly deposit: u128; readonly data: Bytes; readonly isFrozen: bool; } - /** @name PalletUniquesItemMetadata (190) */ + /** @name PalletUniquesItemMetadata (188) */ export interface PalletUniquesItemMetadata extends Struct { readonly deposit: u128; readonly data: Bytes; readonly isFrozen: bool; } - /** @name PalletUniquesError (193) */ + /** @name PalletUniquesError (191) */ export interface PalletUniquesError extends Enum { readonly isNoPermission: boolean; readonly isUnknownCollection: boolean; @@ -1767,13 +1784,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoPermission' | 'UnknownCollection' | 'AlreadyExists' | 'WrongOwner' | 'BadWitness' | 'InUse' | 'Frozen' | 'WrongDelegate' | 'NoDelegate' | 'Unapproved' | 'Unaccepted' | 'Locked' | 'MaxSupplyReached' | 'MaxSupplyAlreadySet' | 'MaxSupplyTooSmall' | 'UnknownItem' | 'NotForSale' | 'BidTooLow'; } - /** @name PalletUtilityError (194) */ + /** @name PalletUtilityError (192) */ export interface PalletUtilityError extends Enum { readonly isTooManyCalls: boolean; readonly type: 'TooManyCalls'; } - /** @name SpRuntimeMultiSignature (196) */ + /** @name SpRuntimeMultiSignature (194) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -1784,31 +1801,31 @@ declare module '@polkadot/types/lookup' { readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreSr25519Signature (197) */ + /** @name SpCoreSr25519Signature (195) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name SpCoreEcdsaSignature (198) */ + /** @name SpCoreEcdsaSignature (196) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name FrameSystemExtensionsCheckSpecVersion (201) */ + /** @name FrameSystemExtensionsCheckSpecVersion (199) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (202) */ + /** @name FrameSystemExtensionsCheckTxVersion (200) */ export type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (203) */ + /** @name FrameSystemExtensionsCheckGenesis (201) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (206) */ + /** @name FrameSystemExtensionsCheckNonce (204) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (207) */ + /** @name FrameSystemExtensionsCheckWeight (205) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (208) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (206) */ export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name RmrkSubstrateRuntimeRuntime (209) */ + /** @name RmrkSubstrateRuntimeRuntime (207) */ export type RmrkSubstrateRuntimeRuntime = Null; } // declare module diff --git a/traits/Cargo.toml b/traits/Cargo.toml index 1dd5436a..ede956a0 100644 --- a/traits/Cargo.toml +++ b/traits/Cargo.toml @@ -12,21 +12,21 @@ targets = ['x86_64-unknown-linux-gnu'] [dependencies] serde = { version = "1.0.111", default-features = false, features = ["derive"] } -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = [ "derive", ] } scale-info = { version = "2.0.1", default-features = false, features = ["derive"] } -frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.36" } +frame-support = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-system = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +frame-benchmarking = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true, branch = "polkadot-v0.9.37" } -pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +pallet-balances = { default-features = false, version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [dev-dependencies] -sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } -sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.36" } +sp-runtime = { default-features = false, version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } +sp-std = { default-features = false, version = "5.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.37" } [features] default = ["std"] diff --git a/traits/src/misc.rs b/traits/src/misc.rs index 12e7770b..7ffb1ad6 100644 --- a/traits/src/misc.rs +++ b/traits/src/misc.rs @@ -7,7 +7,12 @@ pub trait TransferHooks { /// Check if the NFT's pre-checks and post-checks for the transfer function based on the sender, /// `collection_id` and `nft_id` parameters. - fn pre_check(sender: &AccountId, collection_id: &CollectionId, nft_id: &NftId) -> bool; + fn pre_check( + sender: &AccountId, + recipient: &AccountId, + collection_id: &CollectionId, + nft_id: &NftId, + ) -> bool; fn post_transfer( sender: &AccountId, recipient: &AccountId, @@ -17,7 +22,12 @@ pub trait TransferHooks { } impl TransferHooks for () { - fn pre_check(_sender: &AccountId, _collection_id: &CollectionId, _nft_id: &NftId) -> bool { + fn pre_check( + _sender: &AccountId, + _recipient: &AccountId, + _collection_id: &CollectionId, + _nft_id: &NftId, + ) -> bool { true } diff --git a/traits/src/nft.rs b/traits/src/nft.rs index fcabf9e5..47efc66f 100644 --- a/traits/src/nft.rs +++ b/traits/src/nft.rs @@ -29,8 +29,8 @@ pub enum AccountIdOrCollectionNftTuple { } /// Royalty information (recipient and amount) -#[cfg_attr(feature = "std", derive(PartialEq, Eq, Serialize))] -#[derive(Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] +#[cfg_attr(feature = "std", derive(Serialize))] +#[derive(Encode, Decode, Clone, Debug, PartialEq, Eq, TypeInfo, MaxEncodedLen)] pub struct RoyaltyInfo { /// Recipient (AccountId) of the royalty pub recipient: AccountId,