diff --git a/Anchor.toml b/Anchor.toml index 616eb71..cb1fabc 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -19,10 +19,12 @@ skip-lint = false [programs.localnet] resq_delivery = "DeL1v3ry111111111111111111111111111111111111" resq_airspace = "A1rSpAcE1111111111111111111111111111111111111" +resq_gating = "GaT1ngA1rSpAcE111111111111111111111111111111" [programs.devnet] resq_delivery = "DeL1v3ry111111111111111111111111111111111111" resq_airspace = "A1rSpAcE1111111111111111111111111111111111111" +resq_gating = "GaT1ngA1rSpAcE111111111111111111111111111111" [registry] url = "https://api.apr.dev" diff --git a/Cargo.lock b/Cargo.lock index 74b5dcd..6e977b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "generic-array", ] @@ -181,7 +181,7 @@ dependencies = [ "num-traits", "solana-account 3.4.0", "solana-account-info", - "solana-big-mod-exp", + "solana-big-mod-exp 3.0.0", "solana-blake3-hasher", "solana-bn254", "solana-clock", @@ -299,11 +299,10 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "anchor-attribute-access-control" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28de9e469f62d92afe64c8a9b98d0b2761c019d7a04126d2695a3e3cb43251ea" +checksum = "0b8cd233e382ea499e3c1e51bf4f0cb367abb37bb64e9e3667a5d618af3fe265" dependencies = [ - "anchor-syn", "proc-macro2", "quote", "syn 1.0.109", @@ -311,9 +310,9 @@ dependencies = [ [[package]] name = "anchor-attribute-account" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734727de477cad344c40764addcd4ac3b029c33166bb4e2dcfdbea91f58aafa2" +checksum = "2e12171382e24c5cda6b0f7236a4f6bb9b657da997780c88a0ef794a419298bf" dependencies = [ "anchor-syn", "proc-macro2", @@ -323,9 +322,9 @@ dependencies = [ [[package]] name = "anchor-attribute-constant" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f28305967fc74ca1c7c9a5fef63069e4d39aaca623c67899ae3287da4a78d17" +checksum = "510f8db71375446405dfabdaf157fb7d3fbf33470c98ed75fad4c467e8ca0080" dependencies = [ "anchor-syn", "quote", @@ -334,9 +333,9 @@ dependencies = [ [[package]] name = "anchor-attribute-error" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c459b23449e7c38521f2addddbd66f76282d1a77ff14f8988b53f4aa486408" +checksum = "72b203169a49ea74da7782281e740ea8e21017c85f8f3b1ab452712c9796d28f" dependencies = [ "anchor-syn", "quote", @@ -345,9 +344,9 @@ dependencies = [ [[package]] name = "anchor-attribute-event" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0267e367fa3b8ffda09958546d0656423fd19345a97d071e5d3c43f7e28fd3d8" +checksum = "c50a462651e573ec6cc632e8f607e8b1e11f620f6fc26badaeff04fd49f45cc1" dependencies = [ "anchor-syn", "proc-macro2", @@ -357,9 +356,9 @@ dependencies = [ [[package]] name = "anchor-attribute-program" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fadb368831981336bcf975663e1710c947e92d7fff66c4c4d1424017bd3a41" +checksum = "84704ee25a7e788afd9d846945cba536cfdcd53b463e8a337cf237cd897ca4d9" dependencies = [ "anchor-lang-idl", "anchor-syn", @@ -367,15 +366,14 @@ dependencies = [ "heck 0.3.3", "proc-macro2", "quote", - "serde_json", "syn 1.0.109", ] [[package]] name = "anchor-derive-accounts" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90777c2b4bb8f6516c377741692a50daa1bf650da8cfe829940a52ec3214ee4d" +checksum = "98bf49664527c7bb0ebca04e9b5bfb618d6ceb849ef44a8149241d244bbfb0f6" dependencies = [ "anchor-syn", "quote", @@ -384,11 +382,12 @@ dependencies = [ [[package]] name = "anchor-derive-serde" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2cae1e3422834f87cf83eff7d37e9f29e76a4d28b7f8df966774ba3be79454" +checksum = "8140a40827bdfd74720f1f3084778fa081262f2f43bd4bdbc350f98ce1b341c6" dependencies = [ "anchor-syn", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -396,9 +395,9 @@ dependencies = [ [[package]] name = "anchor-derive-space" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7deb5c0a71cd96917d210e8d1dc10903b2a2f96d4869ac3e51637502a15314a4" +checksum = "1ee5b6fa5dde037399d3e0bb322a1c7360ad8adc6b6afdd797d19566c039dcfb" dependencies = [ "proc-macro2", "quote", @@ -407,9 +406,9 @@ dependencies = [ [[package]] name = "anchor-lang" -version = "1.0.0-rc.2" +version = "1.0.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23437c1b687f8edbc34f3ebea2be3e4005d00394446d891112d530080a2a28c" +checksum = "d64764977af5f54c8ee481bbbbdb1341b60ee7b7b913d325c8d96d1dd7096ee3" dependencies = [ "anchor-attribute-access-control", "anchor-attribute-account", @@ -432,7 +431,7 @@ dependencies = [ "solana-define-syscall 3.0.0", "solana-feature-gate-interface", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.1", "solana-invoke", "solana-loader-v3-interface", "solana-msg", @@ -441,7 +440,7 @@ dependencies = [ "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk-ids", "solana-stake-interface", "solana-system-interface 2.0.0", @@ -477,9 +476,9 @@ dependencies = [ [[package]] name = "anchor-syn" -version = "1.0.0-rc.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8758d5e4ccf25414fbb7bcfc95906673d1a662823a1ee639e4e1979d4a3d6b" +checksum = "6940253e80acf0f8e83b1ebd9c4772c496aedcce6ad19aa85ce75d0b6b188298" dependencies = [ "anyhow", "bs58", @@ -488,7 +487,6 @@ dependencies = [ "proc-macro2", "quote", "serde", - "serde_json", "sha2 0.10.9", "syn 1.0.109", "thiserror 1.0.69", @@ -555,9 +553,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.104" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "anza-quinn" @@ -1083,6 +1081,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + [[package]] name = "blst" version = "0.3.16" @@ -1301,17 +1308,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "chacha20" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.0", - "rand_core 0.10.1", -] - [[package]] name = "chrono" version = "0.4.44" @@ -1338,7 +1334,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "inout", ] @@ -1487,9 +1483,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.20" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] @@ -1529,6 +1525,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "crypto-mac" version = "0.8.0" @@ -1590,38 +1595,14 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - [[package]] name = "darling" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.23.0", - "darling_macro 0.23.0", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.117", + "darling_core", + "darling_macro", ] [[package]] @@ -1637,24 +1618,13 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.117", -] - [[package]] name = "darling_macro" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.23.0", + "darling_core", "quote", "syn 2.0.117", ] @@ -1753,10 +1723,20 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "const-oid", - "crypto-common", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "crypto-common 0.2.2", +] + [[package]] name = "dir-diff" version = "0.3.3" @@ -2362,13 +2342,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.1", "wasip2", "wasip3", - "wasm-bindgen", ] [[package]] @@ -2450,6 +2428,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", + "equivalent", "foldhash", ] @@ -2578,6 +2557,15 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +[[package]] +name = "hybrid-array" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "1.8.1" @@ -3208,9 +3196,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.11" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] @@ -3254,9 +3242,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -3632,9 +3620,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pastey" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pbkdf2" @@ -3910,15 +3898,14 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.16" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ "bytes", - "getrandom 0.4.2", + "getrandom 0.3.4", "lru-slab", - "rand 0.10.2", - "rand_pcg", + "rand 0.9.3", "ring", "rustc-hash", "rustls", @@ -4011,7 +3998,6 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "chacha20", "getrandom 0.4.2", "rand_core 0.10.1", ] @@ -4088,15 +4074,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_pcg" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" -dependencies = [ - "rand_core 0.10.1", -] - [[package]] name = "rand_xorshift" version = "0.3.0" @@ -4257,10 +4234,10 @@ dependencies = [ "solana-keypair", "solana-program-entrypoint", "solana-program-test", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk", "solana-signer", - "solana-system-interface 3.1.0", + "solana-system-interface 3.3.0", "solana-transaction 3.1.0", "tokio", ] @@ -4277,10 +4254,31 @@ dependencies = [ "solana-keypair", "solana-program-entrypoint", "solana-program-test", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk", "solana-signer", - "solana-system-interface 3.1.0", + "solana-system-interface 3.3.0", + "solana-transaction 3.1.0", + "tokio", +] + +[[package]] +name = "resq-gating" +version = "0.1.0" +dependencies = [ + "anchor-lang", + "solana-account 3.4.0", + "solana-account-info", + "solana-instruction", + "solana-instructions-sysvar 3.0.1", + "solana-keypair", + "solana-program", + "solana-program-entrypoint", + "solana-program-test", + "solana-pubkey 4.3.0", + "solana-sdk", + "solana-signer", + "solana-system-interface 3.3.0", "solana-transaction 3.1.0", "tokio", ] @@ -4599,9 +4597,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a" dependencies = [ "serde_core", "serde_with_macros", @@ -4609,11 +4607,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46" dependencies = [ - "darling 0.23.0", + "darling", "proc-macro2", "quote", "syn 2.0.117", @@ -4654,6 +4652,17 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + [[package]] name = "sha2-const-stable" version = "0.1.0" @@ -4784,16 +4793,16 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk-ids", "solana-sysvar 3.0.0", ] [[package]] name = "solana-account" -version = "4.1.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862b95723ec6f2a27451d2fc7f4f8cf1f80a79627dcfed63879aac4ea5fe3bc2" +checksum = "2c83d346056532a7ef16177dbb799abf73da080e93eae3de6a901c726ce47fb0" dependencies = [ "bincode", "serde", @@ -4802,9 +4811,9 @@ dependencies = [ "solana-account-info", "solana-clock", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk-ids", - "solana-sysvar 4.0.0", + "solana-sysvar 4.3.0", ] [[package]] @@ -4866,13 +4875,13 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" +checksum = "a9cf16495d9eb53e3d04e72366a33bb1c20c24e78c171d8b8f5978357b63ae95" dependencies = [ "bincode", "serde_core", - "solana-address 2.3.0", + "solana-address 2.7.0", "solana-program-error", "solana-program-memory", ] @@ -4896,7 +4905,7 @@ dependencies = [ "itertools 0.12.1", "log", "lz4", - "memmap2 0.9.11", + "memmap2 0.9.10", "modular-bitfield", "num_cpus", "num_enum", @@ -4942,14 +4951,14 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "solana-address 2.3.0", + "solana-address 2.7.0", ] [[package]] name = "solana-address" -version = "2.3.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500b83d41bda401b84ebff6033e2e7bc828870ea444805112d15fc0a3e470b9c" +checksum = "01332a01c0a3098404d55a724c8d9a92aed4a50fe40a7dd0c7a51e29274c14de" dependencies = [ "borsh", "bytemuck", @@ -4962,7 +4971,7 @@ dependencies = [ "serde_derive", "sha2-const-stable", "solana-atomic-u64", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "solana-program-error", "solana-sanitize", "solana-sha256-hasher", @@ -4982,7 +4991,7 @@ dependencies = [ "solana-clock", "solana-instruction", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk-ids", "solana-slot-hashes", ] @@ -5085,6 +5094,16 @@ dependencies = [ "solana-define-syscall 3.0.0", ] +[[package]] +name = "solana-big-mod-exp" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05789c4afc39164132db9dcc117218d412ca1f1271d2c629fc6f554c19e5a44" +dependencies = [ + "num-bigint 0.4.6", + "solana-define-syscall 5.2.0", +] + [[package]] name = "solana-bincode" version = "3.1.0" @@ -5104,7 +5123,7 @@ checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" dependencies = [ "blake3", "solana-define-syscall 4.0.1", - "solana-hash 4.2.0", + "solana-hash 4.6.0", ] [[package]] @@ -5142,7 +5161,7 @@ dependencies = [ "ark-ff 0.5.0", "ark-serialize 0.5.0", "bytemuck", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "thiserror 2.0.18", ] @@ -5193,7 +5212,7 @@ dependencies = [ "bv", "bytemuck", "bytemuck_derive", - "memmap2 0.9.11", + "memmap2 0.9.10", "modular-bitfield", "num_enum", "rand 0.8.6", @@ -5312,12 +5331,13 @@ dependencies = [ [[package]] name = "solana-clock" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95cf11109c3b6115cc510f1e31f06fdd52f504271bc24ef5f1249fbbcae5f9f3" +checksum = "a7708bdb262fd9c257c3a56d4289297b10a3e821b8cba3f7cf42b49c40201ab9" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -5331,7 +5351,7 @@ checksum = "3a494cf8eda7d98d9f0144b288bb409c88308d2e86f15cc1045aa77b83304718" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-hash 4.6.0", ] [[package]] @@ -5350,7 +5370,7 @@ version = "3.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c346408840a596e128b1b5214fd72a2c1cf8484cc96965e10333f6a18fcb897b" dependencies = [ - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-program-runtime", ] @@ -5451,7 +5471,7 @@ dependencies = [ "solana-compute-budget", "solana-compute-budget-instruction", "solana-compute-budget-interface", - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-metrics", "solana-packet", "solana-pubkey 3.0.0", @@ -5473,7 +5493,7 @@ dependencies = [ "solana-define-syscall 4.0.1", "solana-instruction", "solana-program-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-stable-layout", ] @@ -5505,9 +5525,9 @@ checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" [[package]] name = "solana-define-syscall" -version = "5.0.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" +checksum = "bf8209ece2bd9f1450e672858ffc0e5c8c786ff6916d2a862b126dd0128f380f" [[package]] name = "solana-derivation-path" @@ -5520,6 +5540,26 @@ dependencies = [ "uriparse", ] +[[package]] +name = "solana-ed25519" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4c7caf3fe3d70815869a5838ee45b4d2b009eaacea1790ef3cd9b3c89edbbd" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "curve25519-dalek-derive", + "digest 0.11.3", + "ed25519 2.2.3", + "hashbrown 0.15.5", + "rand 0.10.2", + "rand_core 0.10.1", + "rustc_version", + "sha2 0.11.0", + "subtle", + "zeroize", +] + [[package]] name = "solana-ed25519-program" version = "3.0.0" @@ -5544,13 +5584,14 @@ dependencies = [ [[package]] name = "solana-epoch-rewards" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5e7b0ba210593ba8ddd39d6d234d81795d1671cebf3026baa10d5dc23ac42f0" +checksum = "0788d74ee15778deecaa15ed1a1e37727ba954f86cbc35225450a1f2b5012969" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-get-sysvar", + "solana-hash 4.6.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -5563,18 +5604,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee8beac9bff4db9225e57d532d169b0be5e447f1e6601a2f50f27a01bf5518f" dependencies = [ "siphasher 0.3.11", - "solana-address 2.3.0", - "solana-hash 4.2.0", + "solana-address 2.7.0", + "solana-hash 4.6.0", ] [[package]] name = "solana-epoch-schedule" -version = "3.0.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +checksum = "a1633cfd10cde127f2caf8f12021b4f8e9a425e7e4eea4326e428c422376d6fd" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", + "solana-program-error", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -5586,8 +5629,8 @@ version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "027e6d0b9e7daac5b2ac7c3f9ca1b727861121d9ef05084cf435ff736051e7c2" dependencies = [ - "solana-define-syscall 5.0.0", - "solana-pubkey 4.1.0", + "solana-define-syscall 5.2.0", + "solana-pubkey 4.3.0", ] [[package]] @@ -5598,12 +5641,12 @@ checksum = "0eb265ff95e28eceda117e2e3d2d2a611ecbbfe911dfeeeecd1521814540ffab" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-hash 4.6.0", "solana-instruction", "solana-nonce", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sdk-ids", - "solana-system-interface 3.1.0", + "solana-system-interface 3.3.0", "thiserror 2.0.18", ] @@ -5620,10 +5663,10 @@ dependencies = [ "solana-account-info", "solana-instruction", "solana-program-error", - "solana-pubkey 4.1.0", - "solana-rent 4.1.0", + "solana-pubkey 4.3.0", + "solana-rent 4.4.0", "solana-sdk-ids", - "solana-system-interface 3.1.0", + "solana-system-interface 3.3.0", ] [[package]] @@ -5633,15 +5676,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56a1e5ee3af013f0851107fbf873c4949aeb7bfaeaea5444fa7ed0adb209696f" dependencies = [ "agave-feature-set", - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-svm-transaction", ] [[package]] name = "solana-fee-calculator" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2a5675b2cf8d407c672dc1776492b1f382337720ddf566645ae43237a3d8c3" +checksum = "d4bf4f4afb4704212ef1d994ee65bef7293441721639dfd16f0e60996f37be51" dependencies = [ "log", "serde", @@ -5658,6 +5701,16 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "solana-fee-structure" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3591f4827715ebb49c290b829f707ec1747a152973436f27699897f752a31cd6" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "solana-genesis-config" version = "3.0.0" @@ -5687,6 +5740,17 @@ dependencies = [ "solana-time-utils", ] +[[package]] +name = "solana-get-sysvar" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef3bc859fc036ed490146793557386cbfae614ebba4adc704c37d94350824ed4" +dependencies = [ + "solana-address 2.7.0", + "solana-define-syscall 5.2.0", + "solana-program-error", +] + [[package]] name = "solana-hard-forks" version = "3.0.1" @@ -5703,14 +5767,14 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" dependencies = [ - "solana-hash 4.2.0", + "solana-hash 4.6.0", ] [[package]] name = "solana-hash" -version = "4.2.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" +checksum = "0df9b01495ed31100aca97a7f5862d5e19ab1636d60d1a9f02391408dd9dec84" dependencies = [ "borsh", "bytemuck", @@ -5725,9 +5789,9 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92f37a14e7c660628752833250dd3dcd8e95309876aee751d7f8769a27947c6" +checksum = "dbf186550ea7438e2708bd0c233f01fe9c3fa45b9b607ff993b650ce60af102e" dependencies = [ "serde", "serde_derive", @@ -5735,24 +5799,24 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "3.2.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a6d22d0a6fdf345be294bb9afdcd40c296cdc095e64e7ceaa3bb3c2f608c1c" +checksum = "d70cf6ece1070a66d25e68274f338f29664794669c175223940a298645ef3495" dependencies = [ "bincode", "borsh", "serde", "serde_derive", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", ] [[package]] name = "solana-instruction-error" -version = "2.2.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3d048edaaeef5a3dc8c01853e585539a74417e4c2d43a9e2c161270045b838" +checksum = "e8e7db78c122d02189619490b1fef04a2a042c389662920617c0e6381fdf8fdd" dependencies = [ "num-traits", "serde", @@ -5762,16 +5826,32 @@ dependencies = [ [[package]] name = "solana-instructions-sysvar" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" +checksum = "9e0732294560e88ecdb2bbc656e67383e9f88c78ec09469cef172f0d28cd1bcd" +dependencies = [ + "bitflags", + "solana-account-info", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e38363a181313d607f7a118df2b401bb27b477a0104b09283cbf504f5f0f00cc" dependencies = [ "bitflags", "solana-account-info", "solana-instruction", "solana-instruction-error", "solana-program-error", - "solana-pubkey 3.0.0", "solana-sanitize", "solana-sdk-ids", "solana-serialize-utils", @@ -5798,7 +5878,7 @@ checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" dependencies = [ "sha3", "solana-define-syscall 4.0.1", - "solana-hash 4.2.0", + "solana-hash 4.6.0", ] [[package]] @@ -5810,7 +5890,7 @@ dependencies = [ "five8", "five8_core", "rand 0.9.3", - "solana-address 2.3.0", + "solana-address 2.7.0", "solana-derivation-path", "solana-seed-derivable", "solana-seed-phrase", @@ -5820,12 +5900,13 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +checksum = "5099e736c3c06c451b307a60637d69eb65b3144143ebeed899e2fd1134f4fc35" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -5914,8 +5995,8 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-address 2.3.0", - "solana-hash 4.2.0", + "solana-address 2.7.0", + "solana-hash 4.6.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -5925,16 +6006,15 @@ dependencies = [ [[package]] name = "solana-message" -version = "4.0.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6435a6070b6c5898201aae845db328cf3bd3cebc17b55af9b43138da5ced4a85" +checksum = "188f4df6f4f4d5bd8b9d82aee0f053b6c37826dcd96933f7b59f684b406a7b3c" dependencies = [ "blake3", - "lazy_static", "serde", "serde_derive", - "solana-address 2.3.0", - "solana-hash 4.2.0", + "solana-address 2.7.0", + "solana-hash 4.6.0", "solana-instruction", "solana-sanitize", "solana-sdk-ids", @@ -5965,7 +6045,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726b7cbbc6be6f1c6f29146ac824343b9415133eee8cce156452ad1db93f8008" dependencies = [ - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", ] [[package]] @@ -6012,8 +6092,8 @@ dependencies = [ "serde", "serde_derive", "solana-fee-calculator", - "solana-hash 4.2.0", - "solana-pubkey 4.1.0", + "solana-hash 4.6.0", + "solana-pubkey 4.3.0", "solana-sha256-hasher", ] @@ -6138,27 +6218,26 @@ dependencies = [ [[package]] name = "solana-program" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778f08fb0eaf52c9a3bef2978247f7fab0ccfddc44cfddb936d5ad9f98ede886" +checksum = "4c9f2e1b36b5f1c407cff098a383a45890268e848481af32540064986e7397a6" dependencies = [ - "memoffset", "solana-account-info", - "solana-big-mod-exp", + "solana-big-mod-exp 4.0.0", "solana-blake3-hasher", "solana-borsh", "solana-clock", "solana-cpi", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "solana-epoch-rewards", "solana-epoch-schedule", "solana-epoch-stake", "solana-example-mocks", "solana-fee-calculator", - "solana-hash 4.2.0", + "solana-hash 4.6.0", "solana-instruction", "solana-instruction-error", - "solana-instructions-sysvar", + "solana-instructions-sysvar 4.0.0", "solana-keccak-hasher", "solana-last-restart-slot", "solana-msg", @@ -6168,8 +6247,8 @@ dependencies = [ "solana-program-memory", "solana-program-option", "solana-program-pack", - "solana-pubkey 4.1.0", - "solana-rent 4.1.0", + "solana-pubkey 4.3.0", + "solana-rent 4.4.0", "solana-sdk-ids", "solana-secp256k1-recover", "solana-serde-varint", @@ -6179,7 +6258,7 @@ dependencies = [ "solana-slot-hashes", "solana-slot-history", "solana-stable-layout", - "solana-sysvar 4.0.0", + "solana-sysvar 4.3.0", "solana-sysvar-id", ] @@ -6208,7 +6287,7 @@ dependencies = [ "solana-account-info", "solana-define-syscall 4.0.1", "solana-program-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", ] [[package]] @@ -6264,7 +6343,7 @@ dependencies = [ "solana-clock", "solana-epoch-rewards", "solana-epoch-schedule", - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-hash 3.1.0", "solana-instruction", "solana-last-restart-slot", @@ -6344,7 +6423,7 @@ dependencies = [ "solana-svm-timings", "solana-system-interface 2.0.0", "solana-sysvar 3.0.0", - "solana-sysvar 4.0.0", + "solana-sysvar 4.3.0", "solana-sysvar-id", "solana-transaction 3.1.0", "solana-transaction-context", @@ -6367,12 +6446,12 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "4.1.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b06bd918d60111ee1f97de817113e2040ca0cedb740099ee8d646233f6b906c" +checksum = "10f71b7a414de2ced1071f015834e9be581592d013432adbd06d02e4af11eba9" dependencies = [ "rand 0.9.3", - "solana-address 2.3.0", + "solana-address 2.7.0", ] [[package]] @@ -6465,12 +6544,13 @@ dependencies = [ [[package]] name = "solana-rent" -version = "4.1.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1771d726d4854f1818c750e14aff40b19d84720d0b1b6d53e50e8f16cb6bd62" +checksum = "dc016b348926395ba01f8288cdf5da25fc30f5a0806028b32d5e5b3147b10bf9" dependencies = [ "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -6623,7 +6703,7 @@ dependencies = [ "libc", "log", "lz4", - "memmap2 0.9.11", + "memmap2 0.9.10", "mockall", "modular-bitfield", "num-derive", @@ -6664,7 +6744,7 @@ dependencies = [ "solana-feature-gate-interface", "solana-fee", "solana-fee-calculator", - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-genesis-config", "solana-hard-forks", "solana-hash 3.1.0", @@ -6775,25 +6855,25 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "4.0.1" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "657e20ea41ba32cad0c493bec60b6d55cc6c30d2c1073b94cfee96dda0d764dd" +checksum = "2811d87cfebb200ccd16ed706faed78fa7fd4ac99694efb0074f196211241937" dependencies = [ "bincode", "bs58", "serde", - "solana-account 4.1.0", + "solana-account 4.6.0", "solana-epoch-info", "solana-epoch-rewards-hasher", - "solana-fee-structure", + "solana-fee-structure 4.1.0", "solana-inflation", "solana-keypair", - "solana-message 4.0.0", + "solana-message 4.5.0", "solana-offchain-message", "solana-presigner", "solana-program", "solana-program-memory", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sanitize", "solana-sdk-ids", "solana-sdk-macro", @@ -6806,7 +6886,7 @@ dependencies = [ "solana-signature", "solana-signer", "solana-time-utils", - "solana-transaction 4.0.0", + "solana-transaction 4.3.0", "solana-transaction-error", "thiserror 2.0.18", ] @@ -6817,7 +6897,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" dependencies = [ - "solana-address 2.3.0", + "solana-address 2.7.0", ] [[package]] @@ -6848,12 +6928,12 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "3.1.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c5f18893d62e6c73117dcba48f8f5e3266d90e5ec3d0a0a90f9785adac36c1" +checksum = "ce0d2e8d53946f04e789476d6c407e4997b7fb412483df5fc10c075c65cb2edf" dependencies = [ "k256", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "thiserror 2.0.18", ] @@ -6937,12 +7017,12 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "3.1.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cc401931d178472358e6b78dc72d031dc08f752d7410f0e8bd259dd6f02fa" +checksum = "761357b0853c9623bf12c1d2314b3d6160a85b087b84c45224fb85766d22616b" dependencies = [ "solana-instruction-error", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", "solana-sanitize", ] @@ -6954,16 +7034,17 @@ checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2 0.10.9", "solana-define-syscall 4.0.1", - "solana-hash 4.2.0", + "solana-hash 4.6.0", ] [[package]] name = "solana-short-vec" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3bd991c2cc415291c86bb0b6b4d53e93d13bb40344e4c5a2884e0e4f5fa93f" +checksum = "c75782529cc4521114c1ecd71c7e2cdebd41a6fe9844b5d088fd36ef08c57c36" dependencies = [ "serde_core", + "wincode", ] [[package]] @@ -6973,59 +7054,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6c79722e299d957958bf33695f7cd1ef6724ff55563c60fd9e3e24487cccde2" dependencies = [ "solana-hard-forks", - "solana-hash 4.2.0", + "solana-hash 4.6.0", "solana-sha256-hasher", ] [[package]] name = "solana-signature" -version = "3.3.0" +version = "3.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132a93134f1262aa832f1849b83bec6c9945669b866da18661a427943b9e801e" +checksum = "fe45ce95700ac8045e422344b88e273843d70185873cc1cc880ba06dd9fa9002" dependencies = [ - "ed25519-dalek 2.2.0", "five8", "rand 0.9.3", "serde", "serde-big-array", "serde_derive", + "solana-ed25519", "solana-sanitize", "wincode", ] [[package]] name = "solana-signer" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +checksum = "520bd6021163ee517f4bdc7ae03ded904f97e11320001ba0b3355f45eb14f558" dependencies = [ - "solana-pubkey 3.0.0", + "solana-pubkey 4.3.0", "solana-signature", "solana-transaction-error", ] [[package]] name = "solana-slot-hashes" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2585f70191623887329dfb5078da3a00e15e3980ea67f42c2e10b07028419f43" +checksum = "007d6bc909599eea325c9d09f7ff16ef6166c134876ff47a6a122d693d058dad" dependencies = [ "serde", "serde_derive", - "solana-hash 4.2.0", + "solana-get-sysvar", + "solana-hash 4.6.0", "solana-sdk-ids", "solana-sysvar-id", ] [[package]] name = "solana-slot-history" -version = "3.0.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" +checksum = "4560fde841a6f2001aedc33b74fe99840ee3d56a71fe9b98ee332303b8597900" dependencies = [ "bv", "serde", "serde_derive", + "solana-get-sysvar", "solana-sdk-ids", "solana-sysvar-id", ] @@ -7037,7 +7120,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9f6a291ba063a37780af29e7db14bdd3dc447584d8ba5b3fc4b88e2bbc982fa" dependencies = [ "solana-instruction", - "solana-pubkey 4.1.0", + "solana-pubkey 4.3.0", +] + +[[package]] +name = "solana-stake-history" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c814b4e2570f8c343eb1d4f968ff981bdf518afc3643d070d8e5a28158e85a4b" +dependencies = [ + "serde", + "serde_derive", + "solana-clock", + "solana-get-sysvar", + "solana-sdk-ids", + "solana-sysvar-id", ] [[package]] @@ -7119,10 +7216,10 @@ dependencies = [ "serde", "solana-account 3.4.0", "solana-clock", - "solana-fee-structure", + "solana-fee-structure 3.0.0", "solana-hash 3.1.0", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.1", "solana-loader-v3-interface", "solana-loader-v4-interface", "solana-loader-v4-program", @@ -7234,14 +7331,14 @@ dependencies = [ [[package]] name = "solana-system-interface" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a95a6f2e23ed861d6444ad4a6d6896c418d7d101b960787e65a8e33157cee81b" +checksum = "2e2d5311d0584af231c6c2b0503ba1c3aa50118ead4f503ab215ccbdd1ffac57" dependencies = [ "num-traits", "serde", "serde_derive", - "solana-address 2.3.0", + "solana-address 2.7.0", "solana-instruction", "solana-msg", "solana-program-error", @@ -7322,9 +7419,9 @@ dependencies = [ [[package]] name = "solana-sysvar" -version = "4.0.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1632b69b4f72489db5949a10e8308c229dfa003f99ecaa7477b376807c7b81f4" +checksum = "552f9d54ec9597f5a17469df500a1ac345c262e5a9859938ef5e5541844fdac5" dependencies = [ "base64 0.22.1", "bincode", @@ -7335,22 +7432,24 @@ dependencies = [ "serde_derive", "solana-account-info", "solana-clock", - "solana-define-syscall 5.0.0", + "solana-define-syscall 5.2.0", "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash 4.2.0", + "solana-get-sysvar", + "solana-hash 4.6.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", "solana-program-error", "solana-program-memory", - "solana-pubkey 4.1.0", - "solana-rent 4.1.0", + "solana-pubkey 4.3.0", + "solana-rent 4.4.0", "solana-sdk-ids", "solana-sdk-macro", "solana-slot-hashes", "solana-slot-history", + "solana-stake-history", "solana-sysvar-id", ] @@ -7360,7 +7459,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" dependencies = [ - "solana-address 2.3.0", + "solana-address 2.7.0", "solana-sdk-ids", ] @@ -7453,8 +7552,8 @@ dependencies = [ "bincode", "serde", "serde_derive", - "solana-address 2.3.0", - "solana-hash 4.2.0", + "solana-address 2.7.0", + "solana-hash 4.6.0", "solana-instruction", "solana-instruction-error", "solana-message 3.1.0", @@ -7468,17 +7567,17 @@ dependencies = [ [[package]] name = "solana-transaction" -version = "4.0.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dc0d18f4f109cc1777459271800755705ca6d1aba319934611e1d4f6bb162b5" +checksum = "444a979f617ef7ed4e01aa228800df52d0af55f533e1840e8d48d468e607885f" dependencies = [ "serde", "serde_derive", - "solana-address 2.3.0", - "solana-hash 4.2.0", + "solana-address 2.7.0", + "solana-hash 4.6.0", "solana-instruction", "solana-instruction-error", - "solana-message 4.0.0", + "solana-message 4.5.0", "solana-sanitize", "solana-sdk-ids", "solana-short-vec", @@ -7498,7 +7597,7 @@ dependencies = [ "serde", "solana-account 3.4.0", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.1", "solana-pubkey 3.0.0", "solana-rent 3.1.0", "solana-sbpf", @@ -7507,9 +7606,9 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "3.1.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8396904805b0b385b9de115a652fe80fd01e5b98ce0513f4fcd8184ada9bb792" +checksum = "8a37cf28c58b03878d38c38411f0414d3a99a9e3b7e5ebb0f83f3317b2796d18" dependencies = [ "serde", "serde_derive", @@ -7913,7 +8012,7 @@ dependencies = [ "solana-account-info", "solana-curve25519", "solana-instruction", - "solana-instructions-sysvar", + "solana-instructions-sysvar 3.0.1", "solana-msg", "solana-program-error", "solana-pubkey 3.0.0", @@ -8302,9 +8401,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.50.0" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -8319,9 +8418,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -8656,7 +8755,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.7", "subtle", ] @@ -8967,25 +9066,24 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "wincode" -version = "0.4.8" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc91ddd8c932a38bbec58ed536d9e93ce9cd01b6af9b6de3c501132cf98ddec6" +checksum = "bfc6339f1ba427bf7ad7c42403b28e524832ba2ddb5eef1bb2cc3b85db6b7b75" dependencies = [ "pastey", "proc-macro2", "quote", - "solana-short-vec", "thiserror 2.0.18", "wincode-derive", ] [[package]] name = "wincode-derive" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca057fc9a13dd19cdb64ef558635d43c42667c0afa1ae7915ea1fa66993fd1a" +checksum = "11d582d9fc9d813264407a9e16bfa16846ccf15ef032f9bbcd700741bdc00255" dependencies = [ - "darling 0.21.3", + "darling", "proc-macro2", "quote", "syn 2.0.117", diff --git a/Cargo.toml b/Cargo.toml index 79ccf52..b402f2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,24 +17,25 @@ resolver = "2" members = [ "resq-delivery", "resq-airspace", + "resq-gating", ] [workspace.lints.rust] unsafe_code = "warn" [workspace.dependencies] -anchor-lang = { version = "1.0.0-rc.2", features = ["init-if-needed"] } +anchor-lang = { version = "1.0.0-rc.4", features = ["init-if-needed"] } anchor-client = "1.0.0-rc.2" solana-account = "3.2.0" -solana-account-info = "3.1.0" -solana-instruction = "3.2.0" +solana-account-info = "3.1.1" +solana-instruction = "3.4.0" solana-keypair = "3.1.2" solana-program-entrypoint = "3.1.1" solana-program-test = { version = "3.1.10", features = ["agave-unstable-api"] } -solana-pubkey = "4.1.0" +solana-pubkey = "4.2.0" solana-sdk = "4.0.1" -solana-signer = "3.0.0" -solana-system-interface = "3.1.0" +solana-signer = "3.0.1" +solana-system-interface = "3.2.0" solana-transaction = "3.1.0" tokio = { version = "1", features = ["full"] } diff --git a/README.md b/README.md index 3172c28..05251a1 100644 --- a/README.md +++ b/README.md @@ -216,7 +216,6 @@ Configuration for local development and deployments is managed in `Anchor.toml`. * **`[programs.localnet]` / `[programs.devnet]`**: Defines custom Program IDs for each cluster. Ensure these match the `declare_id!("...")` macro in your Rust code. * **`[provider]`**: Configures the default cluster URL and wallet keypair for Anchor commands. -* **`[scripts]`**: Defines the `anchor test` entrypoint (`bash ./scripts/test.sh`). * **Environment Overrides**: * `SOLANA_VERSION`: Ensure the `solana-cli` version matches dependencies. * `ANCHOR_VERSION`: Managed by `avm` (via Nix). @@ -244,6 +243,15 @@ Configuration for local development and deployments is managed in `Anchor.toml`. * **Arguments**: `ipfs_cid`, `lat`, `lon`, `alt_m`, `delivered_at`. * **Accounts**: `drone` (mut), `airspace` (account info), `delivery_record` (init), `system_program`. +## Configuration + +Configuration is primarily handled via `Anchor.toml` and environment variables. + +* **`Anchor.toml`**: Specifies program IDs for different clusters (`localnet`, `devnet`), default provider settings (cluster URL, wallet), and script commands. +* **Environment Variables**: + * `SOLANA_CLI_VERSION`: Not directly used, but `bootstrap.sh` and `flake.nix` pin specific versions. + * `ANCHOR_VERSION`: Managed by `avm` for cross-version compatibility. + ## Development ### Error Handling @@ -285,7 +293,7 @@ When the AI is invoked (e.g., through an integrated chat interface or specific c * **Economic Audits**: Specific focus on incentive alignment and potential economic attack vectors. * **Access Control**: Strict adherence to owner-only mutations, PDA authority checks, and role-based permissions. -## Testing and Validation +## Development ### Repository Validation diff --git a/resq-airspace/src/error.rs b/resq-airspace/src/error.rs index c49f6e9..020213c 100644 --- a/resq-airspace/src/error.rs +++ b/resq-airspace/src/error.rs @@ -69,4 +69,4 @@ pub enum AirspaceError { /// drone_pda is the zero address; no key can sign as the default pubkey. #[msg("Drone PDA must not be the zero address")] InvalidDronePda, -} +} \ No newline at end of file diff --git a/resq-airspace/src/instructions/grant_permit.rs b/resq-airspace/src/instructions/grant_permit.rs index 1525f9c..cc534f9 100644 --- a/resq-airspace/src/instructions/grant_permit.rs +++ b/resq-airspace/src/instructions/grant_permit.rs @@ -53,10 +53,7 @@ pub struct GrantPermit<'info> { /// * `drone_pda` – the drone's Program-Derived Address /// * `expires_at` – Unix timestamp when the permit expires (0 = never) pub fn handler(ctx: Context, drone_pda: Pubkey, expires_at: i64) -> Result<()> { - require!( - drone_pda != Pubkey::default(), - AirspaceError::InvalidDronePda - ); + require!(drone_pda != Pubkey::default(), AirspaceError::InvalidDronePda); let clock = Clock::get()?; require!( expires_at == 0 || expires_at > clock.unix_timestamp, @@ -90,4 +87,4 @@ pub struct PermitGranted { pub airspace_pda: Pubkey, pub drone_pda: Pubkey, pub expires_at: i64, -} +} \ No newline at end of file diff --git a/resq-airspace/src/instructions/initialize_property.rs b/resq-airspace/src/instructions/initialize_property.rs index 5e6487c..05a1d99 100644 --- a/resq-airspace/src/instructions/initialize_property.rs +++ b/resq-airspace/src/instructions/initialize_property.rs @@ -52,7 +52,6 @@ pub struct InitializeProperty<'info> { /// * `policy` – `AccessPolicy` enum value /// * `fee_lamports` – per-crossing fee (0 = free) /// * `treasury` – SOL account that receives crossing fees -#[allow(clippy::too_many_arguments)] pub fn handler( ctx: Context, property_id: [u8; 32], @@ -67,13 +66,10 @@ pub fn handler( require!(property_id != [0u8; 32], AirspaceError::EmptyPropertyId); require!(min_alt_m < max_alt_m, AirspaceError::InvalidAltitudeBounds); require!( - (1..=8).contains(&vertex_count), + vertex_count >= 1 && vertex_count <= 8, AirspaceError::InvalidVertexCount ); - require!( - treasury != Pubkey::default(), - AirspaceError::InvalidTreasury - ); + require!(treasury != Pubkey::default(), AirspaceError::InvalidTreasury); let airspace_pda = ctx.accounts.airspace.key(); let owner_key = ctx.accounts.owner.key(); @@ -105,4 +101,4 @@ pub struct PropertyInitialized { pub airspace_pda: Pubkey, pub owner: Pubkey, pub property_id: [u8; 32], -} +} \ No newline at end of file diff --git a/resq-airspace/src/instructions/record_crossing.rs b/resq-airspace/src/instructions/record_crossing.rs index 29f9c42..25cef34 100644 --- a/resq-airspace/src/instructions/record_crossing.rs +++ b/resq-airspace/src/instructions/record_crossing.rs @@ -62,11 +62,11 @@ pub struct RecordCrossing<'info> { /// - `Deny` – always rejected. /// /// # Arguments -/// * `lat` – latitude × 1e7 (range -900_000_000 to +900_000_000) -/// * `lon` – longitude × 1e7 (range -1_800_000_000 to +1_800_000_000) +/// * `lat` – latitude × 1e7 (range −900_000_000 to +900_000_000) +/// * `lon` – longitude × 1e7 (range −1_800_000_000 to +1_800_000_000) /// * `alt_m` – altitude in metres (enforced against airspace altitude bounds) /// * `crossed_at` – Unix timestamp (seconds) of the crossing; must be within the -/// 5-minute look-back window and no more than 60 seconds ahead +/// 5-minute look-back window and no more than 60 seconds ahead pub fn handler( ctx: Context, lat: i64, @@ -95,11 +95,11 @@ pub fn handler( // Coordinate range validation (mirrors record_delivery). require!( - (-900_000_000..=900_000_000).contains(&lat), + lat >= -900_000_000 && lat <= 900_000_000, AirspaceError::LatitudeOutOfRange ); require!( - (-1_800_000_000..=1_800_000_000).contains(&lon), + lon >= -1_800_000_000 && lon <= 1_800_000_000, AirspaceError::LongitudeOutOfRange ); @@ -123,10 +123,7 @@ pub fn handler( .permit .as_ref() .ok_or(AirspaceError::NoValidPermit)?; - require!( - permit.is_active(clock.unix_timestamp), - AirspaceError::PermitExpired - ); + require!(permit.is_active(clock.unix_timestamp), AirspaceError::PermitExpired); // Collect per-crossing fee when configured. if airspace.fee_lamports > 0 { diff --git a/resq-airspace/src/instructions/update_policy.rs b/resq-airspace/src/instructions/update_policy.rs index ad3c2d0..99eadf1 100644 --- a/resq-airspace/src/instructions/update_policy.rs +++ b/resq-airspace/src/instructions/update_policy.rs @@ -37,7 +37,11 @@ pub struct UpdatePolicy<'info> { /// Update the access policy and/or per-crossing fee for an airspace. /// /// Only the registered owner may call this instruction. -pub fn handler(ctx: Context, policy: AccessPolicy, fee_lamports: u64) -> Result<()> { +pub fn handler( + ctx: Context, + policy: AccessPolicy, + fee_lamports: u64, +) -> Result<()> { let airspace = &mut ctx.accounts.airspace; airspace.policy = policy; airspace.fee_lamports = fee_lamports; @@ -57,4 +61,4 @@ pub struct PolicyUpdated { pub airspace_pda: Pubkey, pub policy: AccessPolicy, pub fee_lamports: u64, -} +} \ No newline at end of file diff --git a/resq-airspace/src/instructions/update_treasury.rs b/resq-airspace/src/instructions/update_treasury.rs index 9cf99f5..264838f 100644 --- a/resq-airspace/src/instructions/update_treasury.rs +++ b/resq-airspace/src/instructions/update_treasury.rs @@ -38,10 +38,7 @@ pub struct UpdateTreasury<'info> { /// # Arguments /// * `treasury` – new SOL account that will receive crossing fees pub fn handler(ctx: Context, treasury: Pubkey) -> Result<()> { - require!( - treasury != Pubkey::default(), - AirspaceError::InvalidTreasury - ); + require!(treasury != Pubkey::default(), AirspaceError::InvalidTreasury); ctx.accounts.airspace.treasury = treasury; emit!(TreasuryUpdated { diff --git a/resq-airspace/src/lib.rs b/resq-airspace/src/lib.rs index 28b4055..17adb8e 100644 --- a/resq-airspace/src/lib.rs +++ b/resq-airspace/src/lib.rs @@ -1,8 +1,4 @@ -#![allow( - unexpected_cfgs, - clippy::too_many_arguments, - clippy::diverging_sub_expression -)] +#![allow(unexpected_cfgs)] /* * Copyright 2026 ResQ @@ -106,7 +102,10 @@ pub mod resq_airspace { /// /// This is the only recovery path when the owner key is compromised or /// needs to be rotated. After this call the old owner has no authority. - pub fn transfer_ownership(ctx: Context, new_owner: Pubkey) -> Result<()> { + pub fn transfer_ownership( + ctx: Context, + new_owner: Pubkey, + ) -> Result<()> { instructions::transfer_ownership::handler(ctx, new_owner) } } diff --git a/resq-airspace/src/state/airspace_account.rs b/resq-airspace/src/state/airspace_account.rs index f93d28d..1b8726a 100644 --- a/resq-airspace/src/state/airspace_account.rs +++ b/resq-airspace/src/state/airspace_account.rs @@ -17,10 +17,10 @@ use anchor_lang::prelude::*; /// Access policy for an airspace envelope. -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, PartialEq, Eq, Debug, Default)] +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, PartialEq, Eq, Debug)] +#[borsh(use_discriminant = true)] pub enum AccessPolicy { /// Any drone may transit without a permit or fee. - #[default] Open = 0, /// A drone must hold a valid `Permit` account to transit. Permit = 1, @@ -30,6 +30,12 @@ pub enum AccessPolicy { Auction = 3, } +impl Default for AccessPolicy { + fn default() -> Self { + AccessPolicy::Open + } +} + /// Per-property 3D airspace envelope registered on-chain. /// /// PDA seeds: `["airspace", property_id_bytes]` @@ -77,4 +83,4 @@ pub struct AirspaceAccount { impl AirspaceAccount { /// Account size in bytes (discriminator + fields). pub const LEN: usize = 8 + 32 + 32 + 4 + 4 + 128 + 1 + 1 + 8 + 32 + 1; -} +} \ No newline at end of file diff --git a/resq-airspace/src/state/mod.rs b/resq-airspace/src/state/mod.rs index d552198..ec89797 100644 --- a/resq-airspace/src/state/mod.rs +++ b/resq-airspace/src/state/mod.rs @@ -15,4 +15,4 @@ */ pub mod airspace_account; -pub mod permit; +pub mod permit; \ No newline at end of file diff --git a/resq-airspace/src/state/permit.rs b/resq-airspace/src/state/permit.rs index ce227a7..3beab66 100644 --- a/resq-airspace/src/state/permit.rs +++ b/resq-airspace/src/state/permit.rs @@ -53,4 +53,4 @@ impl Permit { pub fn is_active(&self, now: i64) -> bool { self.expires_at == 0 || self.expires_at > now } -} +} \ No newline at end of file diff --git a/resq-airspace/tests/host_init_regression.rs b/resq-airspace/tests/host_init_regression.rs index 326a714..56fe3f4 100644 --- a/resq-airspace/tests/host_init_regression.rs +++ b/resq-airspace/tests/host_init_regression.rs @@ -1,9 +1,3 @@ -#![allow( - clippy::needless_pass_by_value, - unused_imports, - unused_mut, - clippy::missing_transmute_annotations -)] /* * Copyright 2026 ResQ * @@ -22,19 +16,22 @@ use anchor_lang::{ prelude::{AccountMeta as AnchorAccountMeta, Pubkey as AnchorPubkey}, - system_program as anchor_system_program, AccountDeserialize, InstructionData, ToAccountMetas, + system_program as anchor_system_program, + AccountDeserialize, + InstructionData, + ToAccountMetas, }; use resq_airspace::state::airspace_account::{AccessPolicy, AirspaceAccount}; use solana_account_info::AccountInfo; use solana_instruction::{AccountMeta, Instruction}; use solana_keypair::Keypair; -use solana_program_entrypoint::ProgramResult; use solana_program_test::{processor, ProgramTest}; use solana_pubkey::Pubkey; use solana_sdk::program_error::ProgramError; use solana_signer::Signer; use solana_system_interface::instruction as system_instruction; use solana_transaction::Transaction; +use solana_program_entrypoint::ProgramResult; #[allow(unsafe_code)] fn process_instruction( @@ -64,8 +61,7 @@ fn anchor_pubkey(value: Pubkey) -> AnchorPubkey { } fn sdk_account_metas(value: Vec) -> Vec { - value - .into_iter() + value.into_iter() .map(|meta| { let pubkey = sdk_pubkey(meta.pubkey); if meta.is_writable { @@ -78,10 +74,7 @@ fn sdk_account_metas(value: Vec) -> Vec { } fn airspace_pda(property_id: &[u8; 32]) -> (Pubkey, u8) { - Pubkey::find_program_address( - &[b"airspace", property_id], - &sdk_pubkey(resq_airspace::id()), - ) + Pubkey::find_program_address(&[b"airspace", property_id], &sdk_pubkey(resq_airspace::id())) } #[tokio::test] diff --git a/resq-airspace/tests/integration.rs b/resq-airspace/tests/integration.rs index 97d5471..fe2e1d1 100644 --- a/resq-airspace/tests/integration.rs +++ b/resq-airspace/tests/integration.rs @@ -1,11 +1,3 @@ -#![allow( - clippy::needless_pass_by_value, - clippy::needless_borrow, - clippy::too_many_arguments, - clippy::missing_transmute_annotations, - unused_imports, - unused_mut -)] /* * Copyright 2026 ResQ * @@ -22,22 +14,26 @@ * limitations under the License. */ -use anchor_lang::{AccountDeserialize, InstructionData, ToAccountMetas}; +use anchor_lang::{InstructionData, ToAccountMetas, AccountDeserialize}; +use solana_program_test::*; +use solana_sdk::{ + instruction::Instruction, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, + sysvar::clock::Clock, + transaction::Transaction, +}; use solana_account_info::AccountInfo; use solana_instruction::{AccountMeta, Instruction as SolanaInstruction}; use solana_keypair::Keypair as SolanaKeypair; -use solana_program_entrypoint::ProgramResult; -use solana_program_test::*; use solana_program_test::{processor, ProgramTest}; use solana_pubkey::Pubkey as SolanaPubkey; use solana_sdk::program_error::ProgramError; -use solana_sdk::{ - instruction::Instruction, pubkey::Pubkey, signature::Keypair, signer::Signer, - sysvar::clock::Clock, transaction::Transaction, -}; use solana_signer::Signer as SolanaSigner; use solana_system_interface::instruction as system_instruction; use solana_transaction::Transaction as SolanaTransaction; +use solana_program_entrypoint::ProgramResult; use resq_airspace::state::airspace_account::{AccessPolicy, AirspaceAccount}; use resq_airspace::state::permit::Permit; @@ -64,8 +60,7 @@ fn anchor_pubkey(value: SolanaPubkey) -> anchor_lang::prelude::Pubkey { } fn sdk_account_metas(value: Vec) -> Vec { - value - .into_iter() + value.into_iter() .map(|meta| { let pubkey = sdk_pubkey(meta.pubkey); if meta.is_writable { @@ -163,8 +158,7 @@ async fn test_initialize_property_happy_path() { 1, // vertex count AccessPolicy::Open, 0, // fee - ) - .await; + ).await; // Airdrop some SOL to owner for rent let mut tx = SolanaTransaction::new_with_payer( @@ -178,8 +172,7 @@ async fn test_initialize_property_happy_path() { banks_client.process_transaction(tx).await.unwrap(); let account = banks_client.get_account(pda).await.unwrap().unwrap(); - let acc: AirspaceAccount = - AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); + let acc: AirspaceAccount = AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); assert_eq!(sdk_pubkey(acc.owner), owner.pubkey()); assert_eq!(acc.policy, AccessPolicy::Open); @@ -211,8 +204,7 @@ async fn test_initialize_rejects_empty_property_id() { 1, AccessPolicy::Open, 0, - ) - .await; + ).await; let mut tx = SolanaTransaction::new_with_payer( &[ @@ -224,10 +216,7 @@ async fn test_initialize_rejects_empty_property_id() { tx.sign(&[&payer, &owner], recent_blockhash); let err = banks_client.process_transaction(tx).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("EmptyPropertyId") - || format!("{:?}", err).contains("Custom(6001)") - ); + assert!(err.unwrap().to_string().contains("EmptyPropertyId") || format!("{:?}", err).contains("Custom(6001)")); } #[tokio::test] @@ -253,8 +242,7 @@ async fn test_grant_permit_happy_path() { 1, AccessPolicy::Permit, 0, - ) - .await; + ).await; let drone = Keypair::new(); let (p_pda, _) = permit_pda(&airspace_pubkey, &drone.pubkey()); @@ -262,16 +250,14 @@ async fn test_grant_permit_happy_path() { let grant_data = resq_airspace::instruction::GrantPermit { drone_pda: anchor_pubkey(drone.pubkey()), expires_at: 0, - } - .data(); + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let grant_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -323,8 +309,7 @@ async fn test_record_crossing_open_policy() { 1, AccessPolicy::Open, 0, - ) - .await; + ).await; // Create airspace account let mut tx1 = SolanaTransaction::new_with_payer( @@ -344,21 +329,22 @@ async fn test_record_crossing_open_policy() { let grant_data = resq_airspace::instruction::GrantPermit { drone_pda: anchor_pubkey(drone.pubkey()), expires_at: 0, - } - .data(); + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let grant_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(grant_accounts), data: grant_data, }; - let mut tx_grant = SolanaTransaction::new_with_payer(&[grant_ix], Some(&payer.pubkey())); + let mut tx_grant = SolanaTransaction::new_with_payer( + &[grant_ix], + Some(&payer.pubkey()), + ); let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); tx_grant.sign(&[&payer, &owner], recent_blockhash2); banks_client.process_transaction(tx_grant).await.unwrap(); @@ -373,8 +359,7 @@ async fn test_record_crossing_open_policy() { lon: -740060000, alt_m: 50, crossed_at, - } - .data(); + }.data(); // Open policy does not require a permit; pass None. let cross_accounts = resq_airspace::accounts::RecordCrossing { @@ -383,8 +368,7 @@ async fn test_record_crossing_open_policy() { permit: None, treasury: anchor_pubkey(treasury.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -429,8 +413,7 @@ async fn test_record_crossing_deny_policy() { 1, AccessPolicy::Deny, 0, - ) - .await; + ).await; let mut tx1 = SolanaTransaction::new_with_payer( &[ @@ -448,21 +431,21 @@ async fn test_record_crossing_deny_policy() { let grant_data = resq_airspace::instruction::GrantPermit { drone_pda: anchor_pubkey(drone.pubkey()), expires_at: 0, - } - .data(); + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let mut tx_grant = SolanaTransaction::new_with_payer( - &[SolanaInstruction { - program_id: sdk_pubkey(resq_airspace::id()), - accounts: sdk_account_metas(grant_accounts), - data: grant_data, - }], + &[ + SolanaInstruction { + program_id: sdk_pubkey(resq_airspace::id()), + accounts: sdk_account_metas(grant_accounts), + data: grant_data, + } + ], Some(&payer.pubkey()), ); let recent_blockhash_grant = banks_client.get_latest_blockhash().await.unwrap(); @@ -479,8 +462,7 @@ async fn test_record_crossing_deny_policy() { lon: 0, alt_m: 50, // within min_alt_m=0, max_alt_m=100 crossed_at, - } - .data(); + }.data(); let cross_accounts = resq_airspace::accounts::RecordCrossing { drone: anchor_pubkey(drone.pubkey()), @@ -488,8 +470,7 @@ async fn test_record_crossing_deny_policy() { permit: Some(anchor_pubkey(p_pda)), treasury: anchor_pubkey(treasury.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -509,10 +490,7 @@ async fn test_record_crossing_deny_policy() { tx2.sign(&[&payer, &drone], recent_blockhash2); let err = banks_client.process_transaction(tx2).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("NoValidPermit") - || format!("{:?}", err).contains("Custom(6004)") - ); + assert!(err.unwrap().to_string().contains("NoValidPermit") || format!("{:?}", err).contains("Custom(6004)")); } #[tokio::test] @@ -538,20 +516,17 @@ async fn test_update_policy() { 1, AccessPolicy::Open, 0, - ) - .await; + ).await; let update_data = resq_airspace::instruction::UpdatePolicy { policy: AccessPolicy::Deny, fee_lamports: 0, - } - .data(); + }.data(); let update_accounts = resq_airspace::accounts::UpdatePolicy { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let update_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -570,13 +545,8 @@ async fn test_update_policy() { tx.sign(&[&payer, &owner], recent_blockhash); banks_client.process_transaction(tx).await.unwrap(); - let account = banks_client - .get_account(airspace_pubkey) - .await - .unwrap() - .unwrap(); - let acc: AirspaceAccount = - AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); + let account = banks_client.get_account(airspace_pubkey).await.unwrap().unwrap(); + let acc: AirspaceAccount = AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); assert_eq!(acc.policy, AccessPolicy::Deny); } @@ -597,30 +567,19 @@ async fn test_close_permit_happy_path() { let (p_pda, _) = permit_pda(&airspace_pubkey, &drone.pubkey()); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Permit, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Permit, 0, + ).await; let grant_data = resq_airspace::instruction::GrantPermit { - drone_pda: anchor_pubkey(drone.pubkey()), - expires_at: 0, - } - .data(); + drone_pda: anchor_pubkey(drone.pubkey()), expires_at: 0, + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let grant_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(grant_accounts), @@ -628,11 +587,7 @@ async fn test_close_permit_happy_path() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - grant_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, grant_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); @@ -647,8 +602,7 @@ async fn test_close_permit_happy_path() { airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let close_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(close_accounts), @@ -681,30 +635,19 @@ async fn test_close_permit_rejects_non_owner() { let (p_pda, _) = permit_pda(&airspace_pubkey, &drone.pubkey()); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Permit, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Permit, 0, + ).await; let grant_data = resq_airspace::instruction::GrantPermit { - drone_pda: anchor_pubkey(drone.pubkey()), - expires_at: 0, - } - .data(); + drone_pda: anchor_pubkey(drone.pubkey()), expires_at: 0, + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let grant_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(grant_accounts), @@ -715,8 +658,7 @@ async fn test_close_permit_rejects_non_owner() { &[ system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), system_instruction::transfer(&payer.pubkey(), &attacker.pubkey(), 1_000_000_000), - init_ix, - grant_ix, + init_ix, grant_ix, ], Some(&payer.pubkey()), ); @@ -730,8 +672,7 @@ async fn test_close_permit_rejects_non_owner() { airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let close_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(close_accounts), @@ -765,27 +706,17 @@ async fn test_update_treasury_happy_path() { let (airspace_pubkey, _) = airspace_pda(&pid); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Open, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Open, 0, + ).await; let upd_data = resq_airspace::instruction::UpdateTreasury { treasury: anchor_pubkey(new_treasury.pubkey()), - } - .data(); + }.data(); let upd_accounts = resq_airspace::accounts::UpdateTreasury { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let upd_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(upd_accounts), @@ -793,23 +724,14 @@ async fn test_update_treasury_happy_path() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - upd_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, upd_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); banks_client.process_transaction(tx).await.unwrap(); - let account = banks_client - .get_account(airspace_pubkey) - .await - .unwrap() - .unwrap(); - let acc: AirspaceAccount = - AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); + let account = banks_client.get_account(airspace_pubkey).await.unwrap().unwrap(); + let acc: AirspaceAccount = AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); assert_eq!(sdk_pubkey(acc.treasury), new_treasury.pubkey()); } @@ -827,27 +749,17 @@ async fn test_update_treasury_rejects_zero_address() { let (airspace_pubkey, _) = airspace_pda(&pid); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Open, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Open, 0, + ).await; let upd_data = resq_airspace::instruction::UpdateTreasury { treasury: anchor_lang::prelude::Pubkey::default(), - } - .data(); + }.data(); let upd_accounts = resq_airspace::accounts::UpdateTreasury { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let upd_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(upd_accounts), @@ -855,11 +767,7 @@ async fn test_update_treasury_rejects_zero_address() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - upd_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, upd_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); @@ -886,27 +794,17 @@ async fn test_transfer_ownership_happy_path() { let (airspace_pubkey, _) = airspace_pda(&pid); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Open, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Open, 0, + ).await; let xfer_data = resq_airspace::instruction::TransferOwnership { new_owner: anchor_pubkey(new_owner.pubkey()), - } - .data(); + }.data(); let xfer_accounts = resq_airspace::accounts::TransferOwnership { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let xfer_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(xfer_accounts), @@ -914,36 +812,24 @@ async fn test_transfer_ownership_happy_path() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - xfer_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, xfer_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); banks_client.process_transaction(tx).await.unwrap(); - let account = banks_client - .get_account(airspace_pubkey) - .await - .unwrap() - .unwrap(); - let acc: AirspaceAccount = - AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); + let account = banks_client.get_account(airspace_pubkey).await.unwrap().unwrap(); + let acc: AirspaceAccount = AirspaceAccount::try_deserialize(&mut account.data.as_slice()).unwrap(); assert_eq!(sdk_pubkey(acc.owner), new_owner.pubkey()); // New owner can use owner-only instructions; old owner cannot. let upd_data = resq_airspace::instruction::UpdatePolicy { - policy: AccessPolicy::Deny, - fee_lamports: 0, - } - .data(); + policy: AccessPolicy::Deny, fee_lamports: 0, + }.data(); let upd_accounts_new = resq_airspace::accounts::UpdatePolicy { owner: anchor_pubkey(new_owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let upd_ix_new = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(upd_accounts_new), @@ -952,10 +838,7 @@ async fn test_transfer_ownership_happy_path() { let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); let mut tx2 = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &new_owner.pubkey(), 1_000_000_000), - upd_ix_new, - ], + &[system_instruction::transfer(&payer.pubkey(), &new_owner.pubkey(), 1_000_000_000), upd_ix_new], Some(&payer.pubkey()), ); tx2.sign(&[&payer, &new_owner], recent_blockhash2); @@ -965,8 +848,7 @@ async fn test_transfer_ownership_happy_path() { let upd_accounts_old = resq_airspace::accounts::UpdatePolicy { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let upd_ix_old = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(upd_accounts_old), @@ -999,27 +881,17 @@ async fn test_transfer_ownership_rejects_zero_address() { let (airspace_pubkey, _) = airspace_pda(&pid); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Open, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Open, 0, + ).await; let xfer_data = resq_airspace::instruction::TransferOwnership { new_owner: anchor_lang::prelude::Pubkey::default(), - } - .data(); + }.data(); let xfer_accounts = resq_airspace::accounts::TransferOwnership { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), - } - .to_account_metas(None); + }.to_account_metas(None); let xfer_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(xfer_accounts), @@ -1027,11 +899,7 @@ async fn test_transfer_ownership_rejects_zero_address() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - xfer_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, xfer_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); @@ -1060,30 +928,19 @@ async fn test_grant_permit_rejects_zero_drone_pda() { let (p_pda, _) = permit_pda(&airspace_pubkey, &sdk_pubkey(zero_key)); let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 100, - 1, - AccessPolicy::Permit, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 100, 1, AccessPolicy::Permit, 0, + ).await; let grant_data = resq_airspace::instruction::GrantPermit { - drone_pda: zero_key, - expires_at: 0, - } - .data(); + drone_pda: zero_key, expires_at: 0, + }.data(); let grant_accounts = resq_airspace::accounts::GrantPermit { owner: anchor_pubkey(owner.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: anchor_pubkey(p_pda), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let grant_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), accounts: sdk_account_metas(grant_accounts), @@ -1091,11 +948,7 @@ async fn test_grant_permit_rejects_zero_drone_pda() { }; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - grant_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix, grant_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &owner], recent_blockhash); @@ -1123,23 +976,12 @@ async fn setup_open_airspace( let treasury = owner.pubkey(); // owner doubles as treasury for Open/no-fee airspaces let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &treasury, - pid, - min_alt_m, - max_alt_m, - 1, - AccessPolicy::Open, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &treasury, + pid, min_alt_m, max_alt_m, 1, AccessPolicy::Open, 0, + ).await; let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix], Some(&payer.pubkey()), ); tx.sign(&[payer, owner], recent_blockhash); @@ -1150,36 +992,30 @@ async fn setup_open_airspace( #[tokio::test] async fn test_record_crossing_rejects_old_timestamp() { let program = ProgramTest::new( - "resq_airspace", - sdk_pubkey(resq_airspace::id()), - processor!(process_instruction), + "resq_airspace", sdk_pubkey(resq_airspace::id()), processor!(process_instruction), ); let (banks_client, payer, recent_blockhash) = program.start().await; let owner = Keypair::new(); let drone = Keypair::new(); let pid = str_to_bytes32("cross-old-ts"); - let airspace_pubkey = - setup_open_airspace(&banks_client, &payer, &owner, pid, 0, 200, recent_blockhash).await; + let airspace_pubkey = setup_open_airspace( + &banks_client, &payer, &owner, pid, 0, 200, recent_blockhash, + ).await; let clock: Clock = banks_client.get_sysvar().await.unwrap(); // 6 minutes in the past — outside the 5-minute look-back window. let crossed_at = clock.unix_timestamp - 360; let cross_data = resq_airspace::instruction::RecordCrossing { - lat: 0, - lon: 0, - alt_m: 50, - crossed_at, - } - .data(); + lat: 0, lon: 0, alt_m: 50, crossed_at, + }.data(); let cross_accounts = resq_airspace::accounts::RecordCrossing { drone: anchor_pubkey(drone.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: None, treasury: anchor_pubkey(owner.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -1188,10 +1024,7 @@ async fn test_record_crossing_rejects_old_timestamp() { }; let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), - cross_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), cross_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &drone], recent_blockhash2); @@ -1206,36 +1039,30 @@ async fn test_record_crossing_rejects_old_timestamp() { #[tokio::test] async fn test_record_crossing_rejects_future_timestamp() { let program = ProgramTest::new( - "resq_airspace", - sdk_pubkey(resq_airspace::id()), - processor!(process_instruction), + "resq_airspace", sdk_pubkey(resq_airspace::id()), processor!(process_instruction), ); let (banks_client, payer, recent_blockhash) = program.start().await; let owner = Keypair::new(); let drone = Keypair::new(); let pid = str_to_bytes32("cross-future-ts"); - let airspace_pubkey = - setup_open_airspace(&banks_client, &payer, &owner, pid, 0, 200, recent_blockhash).await; + let airspace_pubkey = setup_open_airspace( + &banks_client, &payer, &owner, pid, 0, 200, recent_blockhash, + ).await; let clock: Clock = banks_client.get_sysvar().await.unwrap(); // 2 minutes in the future — outside the 60-second ahead limit. let crossed_at = clock.unix_timestamp + 120; let cross_data = resq_airspace::instruction::RecordCrossing { - lat: 0, - lon: 0, - alt_m: 50, - crossed_at, - } - .data(); + lat: 0, lon: 0, alt_m: 50, crossed_at, + }.data(); let cross_accounts = resq_airspace::accounts::RecordCrossing { drone: anchor_pubkey(drone.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: None, treasury: anchor_pubkey(owner.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -1244,10 +1071,7 @@ async fn test_record_crossing_rejects_future_timestamp() { }; let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), - cross_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), cross_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &drone], recent_blockhash2); @@ -1262,9 +1086,7 @@ async fn test_record_crossing_rejects_future_timestamp() { #[tokio::test] async fn test_record_crossing_rejects_altitude_out_of_bounds() { let program = ProgramTest::new( - "resq_airspace", - sdk_pubkey(resq_airspace::id()), - processor!(process_instruction), + "resq_airspace", sdk_pubkey(resq_airspace::id()), processor!(process_instruction), ); let (banks_client, payer, recent_blockhash) = program.start().await; let owner = Keypair::new(); @@ -1272,34 +1094,22 @@ async fn test_record_crossing_rejects_altitude_out_of_bounds() { let pid = str_to_bytes32("cross-alt-bounds"); // min=50, max=200 — drone at alt_m=30 is below minimum let airspace_pubkey = setup_open_airspace( - &banks_client, - &payer, - &owner, - pid, - 50, - 200, - recent_blockhash, - ) - .await; + &banks_client, &payer, &owner, pid, 50, 200, recent_blockhash, + ).await; let clock: Clock = banks_client.get_sysvar().await.unwrap(); let crossed_at = clock.unix_timestamp - 30; let cross_data = resq_airspace::instruction::RecordCrossing { - lat: 0, - lon: 0, - alt_m: 30, - crossed_at, // 30 < min_alt_m=50 - } - .data(); + lat: 0, lon: 0, alt_m: 30, crossed_at, // 30 < min_alt_m=50 + }.data(); let cross_accounts = resq_airspace::accounts::RecordCrossing { drone: anchor_pubkey(drone.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: None, treasury: anchor_pubkey(owner.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -1308,10 +1118,7 @@ async fn test_record_crossing_rejects_altitude_out_of_bounds() { }; let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); let mut tx = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), - cross_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), cross_ix], Some(&payer.pubkey()), ); tx.sign(&[&payer, &drone], recent_blockhash2); @@ -1326,9 +1133,7 @@ async fn test_record_crossing_rejects_altitude_out_of_bounds() { #[tokio::test] async fn test_record_crossing_permit_policy_requires_permit() { let program = ProgramTest::new( - "resq_airspace", - sdk_pubkey(resq_airspace::id()), - processor!(process_instruction), + "resq_airspace", sdk_pubkey(resq_airspace::id()), processor!(process_instruction), ); let (banks_client, payer, recent_blockhash) = program.start().await; let owner = Keypair::new(); @@ -1338,22 +1143,11 @@ async fn test_record_crossing_permit_policy_requires_permit() { // Permit-policy airspace — crossings require a permit. let init_ix = initialize_property_ix( - &owner.pubkey(), - &airspace_pubkey, - &owner.pubkey(), - pid, - 0, - 200, - 1, - AccessPolicy::Permit, - 0, - ) - .await; + &owner.pubkey(), &airspace_pubkey, &owner.pubkey(), + pid, 0, 200, 1, AccessPolicy::Permit, 0, + ).await; let mut tx1 = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), - init_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &owner.pubkey(), 1_000_000_000), init_ix], Some(&payer.pubkey()), ); tx1.sign(&[&payer, &owner], recent_blockhash); @@ -1364,20 +1158,15 @@ async fn test_record_crossing_permit_policy_requires_permit() { // Drone submits crossing with permit: None — should be rejected. let cross_data = resq_airspace::instruction::RecordCrossing { - lat: 0, - lon: 0, - alt_m: 50, - crossed_at, - } - .data(); + lat: 0, lon: 0, alt_m: 50, crossed_at, + }.data(); let cross_accounts = resq_airspace::accounts::RecordCrossing { drone: anchor_pubkey(drone.pubkey()), airspace: anchor_pubkey(airspace_pubkey), permit: None, treasury: anchor_pubkey(owner.pubkey()), system_program: anchor_lang::system_program::ID, - } - .to_account_metas(None); + }.to_account_metas(None); let cross_ix = SolanaInstruction { program_id: sdk_pubkey(resq_airspace::id()), @@ -1386,10 +1175,7 @@ async fn test_record_crossing_permit_policy_requires_permit() { }; let recent_blockhash2 = banks_client.get_latest_blockhash().await.unwrap(); let mut tx2 = SolanaTransaction::new_with_payer( - &[ - system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), - cross_ix, - ], + &[system_instruction::transfer(&payer.pubkey(), &drone.pubkey(), 1_000_000_000), cross_ix], Some(&payer.pubkey()), ); tx2.sign(&[&payer, &drone], recent_blockhash2); diff --git a/resq-delivery/src/error.rs b/resq-delivery/src/error.rs index a71def3..410f610 100644 --- a/resq-delivery/src/error.rs +++ b/resq-delivery/src/error.rs @@ -39,4 +39,4 @@ pub enum DeliveryError { /// delivered_at is more than 60 seconds ahead of the current block time. #[msg("delivered_at must not be more than 60 seconds in the future")] TimestampInFuture, -} +} \ No newline at end of file diff --git a/resq-delivery/src/instructions/mod.rs b/resq-delivery/src/instructions/mod.rs index 73fab0f..1ff3715 100644 --- a/resq-delivery/src/instructions/mod.rs +++ b/resq-delivery/src/instructions/mod.rs @@ -16,4 +16,4 @@ pub mod record_delivery; -pub use record_delivery::*; +pub use record_delivery::*; \ No newline at end of file diff --git a/resq-delivery/src/instructions/record_delivery.rs b/resq-delivery/src/instructions/record_delivery.rs index db908c6..543aeba 100644 --- a/resq-delivery/src/instructions/record_delivery.rs +++ b/resq-delivery/src/instructions/record_delivery.rs @@ -80,11 +80,11 @@ pub fn handler( DeliveryError::TimestampInFuture ); require!( - (-900_000_000..=900_000_000).contains(&lat), + lat >= -900_000_000 && lat <= 900_000_000, DeliveryError::LatitudeOutOfRange ); require!( - (-1_800_000_000..=1_800_000_000).contains(&lon), + lon >= -1_800_000_000 && lon <= 1_800_000_000, DeliveryError::LongitudeOutOfRange ); diff --git a/resq-delivery/src/lib.rs b/resq-delivery/src/lib.rs index feea9ec..bad728f 100644 --- a/resq-delivery/src/lib.rs +++ b/resq-delivery/src/lib.rs @@ -1,8 +1,4 @@ -#![allow( - unexpected_cfgs, - clippy::too_many_arguments, - clippy::diverging_sub_expression -)] +#![allow(unexpected_cfgs)] /* * Copyright 2026 ResQ diff --git a/resq-delivery/src/state/delivery_record.rs b/resq-delivery/src/state/delivery_record.rs index 1f2a934..72e713b 100644 --- a/resq-delivery/src/state/delivery_record.rs +++ b/resq-delivery/src/state/delivery_record.rs @@ -57,4 +57,4 @@ pub struct DeliveryRecord { impl DeliveryRecord { /// Account size in bytes (discriminator + fields). pub const LEN: usize = 8 + 32 + 32 + 64 + 8 + 8 + 4 + 8 + 1; -} +} \ No newline at end of file diff --git a/resq-delivery/src/state/mod.rs b/resq-delivery/src/state/mod.rs index c54eafd..6a69a5f 100644 --- a/resq-delivery/src/state/mod.rs +++ b/resq-delivery/src/state/mod.rs @@ -14,4 +14,4 @@ * limitations under the License. */ -pub mod delivery_record; +pub mod delivery_record; \ No newline at end of file diff --git a/resq-delivery/tests/integration.rs b/resq-delivery/tests/integration.rs index a4c720b..d33ea83 100644 --- a/resq-delivery/tests/integration.rs +++ b/resq-delivery/tests/integration.rs @@ -1,11 +1,3 @@ -#![allow( - clippy::needless_pass_by_value, - clippy::needless_borrow, - clippy::too_many_arguments, - clippy::missing_transmute_annotations, - unused_imports, - unused_mut -)] /* * Copyright 2026 ResQ * @@ -22,23 +14,27 @@ * limitations under the License. */ -use anchor_lang::{AccountDeserialize, InstructionData, ToAccountMetas}; +use anchor_lang::{InstructionData, ToAccountMetas, AccountDeserialize}; use solana_account::Account; +use solana_program_test::*; +use solana_sdk::{ + instruction::Instruction, + pubkey::Pubkey, + signature::Keypair, + signer::Signer, + sysvar::clock::Clock, + transaction::Transaction, +}; use solana_account_info::AccountInfo; use solana_instruction::{AccountMeta, Instruction as SolanaInstruction}; use solana_keypair::Keypair as SolanaKeypair; -use solana_program_entrypoint::ProgramResult; -use solana_program_test::*; use solana_program_test::{processor, ProgramTest}; use solana_pubkey::Pubkey as SolanaPubkey; use solana_sdk::program_error::ProgramError; -use solana_sdk::{ - instruction::Instruction, pubkey::Pubkey, signature::Keypair, signer::Signer, - sysvar::clock::Clock, transaction::Transaction, -}; use solana_signer::Signer as SolanaSigner; use solana_system_interface::instruction as system_instruction; use solana_transaction::Transaction as SolanaTransaction; +use solana_program_entrypoint::ProgramResult; use anchor_lang::Discriminator; use resq_airspace::state::airspace_account::AirspaceAccount; @@ -66,8 +62,7 @@ fn anchor_pubkey(value: SolanaPubkey) -> anchor_lang::prelude::Pubkey { } fn sdk_account_metas(value: Vec) -> Vec { - value - .into_iter() + value.into_iter() .map(|meta| { let pubkey = sdk_pubkey(meta.pubkey); if meta.is_writable { @@ -187,8 +182,7 @@ async fn test_record_delivery_happy_path() { // Verify account state let account = banks_client.get_account(record_pda).await.unwrap().unwrap(); - let record: DeliveryRecord = - DeliveryRecord::try_deserialize(&mut account.data.as_slice()).unwrap(); + let record: DeliveryRecord = DeliveryRecord::try_deserialize(&mut account.data.as_slice()).unwrap(); assert_eq!(sdk_pubkey(record.drone_pda), drone.pubkey()); assert_eq!(sdk_pubkey(record.airspace_pda), airspace_pubkey); @@ -197,9 +191,7 @@ async fn test_record_delivery_happy_path() { assert_eq!(record.alt_m, 50); assert_eq!(record.delivered_at, delivered_at); - let stored_cid_str = std::str::from_utf8(&record.ipfs_cid) - .unwrap() - .trim_matches(char::from(0)); + let stored_cid_str = std::str::from_utf8(&record.ipfs_cid).unwrap().trim_matches(char::from(0)); assert!(stored_cid_str.contains("QmResQTestCID")); } @@ -234,10 +226,7 @@ async fn test_rejects_all_zero_cid() { tx.sign(&[&payer, &drone], recent_blockhash); let err = banks_client.process_transaction(tx).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("EmptyCid") - || format!("{:?}", err).contains("Custom(6000)") - ); + assert!(err.unwrap().to_string().contains("EmptyCid") || format!("{:?}", err).contains("Custom(6000)")); } #[tokio::test] @@ -270,10 +259,7 @@ async fn test_rejects_zero_timestamp() { tx.sign(&[&payer, &drone], recent_blockhash); let err = banks_client.process_transaction(tx).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("InvalidTimestamp") - || format!("{:?}", err).contains("Custom(6001)") - ); + assert!(err.unwrap().to_string().contains("InvalidTimestamp") || format!("{:?}", err).contains("Custom(6001)")); } #[tokio::test] @@ -307,10 +293,7 @@ async fn test_rejects_latitude_out_of_range() { tx.sign(&[&payer, &drone], recent_blockhash); let err = banks_client.process_transaction(tx).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("LatitudeOutOfRange") - || format!("{:?}", err).contains("Custom(6002)") - ); + assert!(err.unwrap().to_string().contains("LatitudeOutOfRange") || format!("{:?}", err).contains("Custom(6002)")); } #[tokio::test] @@ -344,10 +327,7 @@ async fn test_rejects_longitude_out_of_range() { tx.sign(&[&payer, &drone], recent_blockhash); let err = banks_client.process_transaction(tx).await.unwrap_err(); - assert!( - err.unwrap().to_string().contains("LongitudeOutOfRange") - || format!("{:?}", err).contains("Custom(6003)") - ); + assert!(err.unwrap().to_string().contains("LongitudeOutOfRange") || format!("{:?}", err).contains("Custom(6003)")); } #[tokio::test] @@ -401,10 +381,7 @@ async fn test_duplicate_delivery_fails() { let err = banks_client.process_transaction(tx2).await.unwrap_err(); // Anchor initialization failure - assert!( - format!("{:?}", err).contains("already in use") - || format!("{:?}", err).contains("InstructionError") - ); + assert!(format!("{:?}", err).contains("already in use") || format!("{:?}", err).contains("InstructionError")); } #[tokio::test] diff --git a/resq-gating/Cargo.toml b/resq-gating/Cargo.toml new file mode 100644 index 0000000..bcf8bf2 --- /dev/null +++ b/resq-gating/Cargo.toml @@ -0,0 +1,53 @@ +# Copyright 2026 ResQ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[package] +name = "resq-gating" +version = "0.1.0" +edition = "2021" +description = "ResQ Cryptographic Airspace Gating on-chain program (Solana/Anchor)" + +[lib] +crate-type = ["cdylib", "lib"] +name = "resq_gating" + +[features] +default = [] +no-entrypoint = [] +no-idl = [] +no-log-ix-name = [] +cpi = ["no-entrypoint"] +idl-build = ["anchor-lang/idl-build"] + +[dependencies] +anchor-lang = { workspace = true } +solana-program = "4.0.0" +solana-instructions-sysvar = "3.0.0" + +[dev-dependencies] +solana-account = { workspace = true } +solana-account-info = { workspace = true } +solana-instruction = { workspace = true } +solana-keypair = { workspace = true } +solana-program-entrypoint = { workspace = true } +solana-program-test = { workspace = true } +solana-pubkey = { workspace = true } +solana-sdk = { workspace = true } +solana-signer = { workspace = true } +solana-system-interface = { workspace = true } +solana-transaction = { workspace = true } +tokio = { workspace = true } + +[lints] +workspace = true diff --git a/resq-gating/src/lib.rs b/resq-gating/src/lib.rs new file mode 100644 index 0000000..8975bcc --- /dev/null +++ b/resq-gating/src/lib.rs @@ -0,0 +1,481 @@ +/* + * Copyright 2026 ResQ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +use anchor_lang::prelude::*; +use solana_instructions_sysvar::{load_current_index_checked, load_instruction_at_checked}; +use solana_program::ed25519_program; + +declare_id!("GaT1ngA1rSpAcE111111111111111111111111111111"); + +/// Maximum allowed drift (in seconds) between the on-chain clock and the +/// attestation's client-supplied timestamp. Bounds the replay window for a +/// captured-and-resubmitted telemetry attestation. +const MAX_ATTESTATION_CLOCK_DRIFT_SECS: i64 = 30; + +/// Byte offset of the signed message within the Ed25519 precompile instruction data. +const PRECOMPILE_MSG_OFFSET: usize = 112; +/// Size (in bytes) of the packed `TelemetryPayload` signed by the drone's TPM: +/// permit_id[32] + waypoint_index(u16) + lat(f64) + lon(f64) + alt(f32) + timestamp(i64). +const PRECOMPILE_MSG_SIZE: usize = 32 + 2 + 8 + 8 + 4 + 8; + +/// Returns `true` when the client-supplied attestation `timestamp` is within +/// [`MAX_ATTESTATION_CLOCK_DRIFT_SECS`] of the on-chain clock `now`. +/// +/// Uses [`i64::abs_diff`] (which yields a `u64`) so a hostile caller cannot +/// trigger a signed-integer overflow — e.g. `timestamp == i64::MIN` against a +/// positive on-chain clock — that would otherwise panic the program under the +/// workspace's overflow-checked release profile. This check runs before the +/// Ed25519 precompile is consulted, so it must never panic on attacker-supplied +/// input. +fn is_within_clock_drift(now: i64, timestamp: i64) -> bool { + now.abs_diff(timestamp) <= MAX_ATTESTATION_CLOCK_DRIFT_SECS as u64 +} + +/// Computes the permit's waypoint state transition after an attestation at the +/// `current` index has been recorded. Returns `(next_index, still_active)`. +/// +/// Uses [`u16::checked_add`] so a long-lived permit that reaches +/// [`u16::MAX`] attestations cannot overflow the counter and abort the +/// instruction under the workspace's overflow-checked release profile. When the +/// `u16` waypoint sequence space is exhausted the permit is retired +/// (`still_active == false`) rather than wrapping or panicking, so no further +/// attestations can be submitted against it while the final attestation at index +/// `u16::MAX` is still recorded cleanly. +fn advance_waypoint(current: u16) -> (u16, bool) { + match current.checked_add(1) { + Some(next) => (next, true), + None => (current, false), + } +} + +/// Maximum absolute latitude (degrees) accepted for an attestation. +const MAX_ABS_LATITUDE_DEG: f64 = 90.0; +/// Maximum absolute longitude (degrees) accepted for an attestation. +const MAX_ABS_LONGITUDE_DEG: f64 = 180.0; + +/// Returns `true` when `latitude`/`longitude` are physically plausible WGS-84 +/// coordinates: both must be finite (rejecting `NaN` and `±inf`) and within the +/// valid geographic ranges (`|lat| <= 90`, `|lon| <= 180`). +/// +/// A freshly *signed* telemetry payload can still carry malformed coordinates — +/// a registered drone with a sensor/serialization bug, or a compromised drone +/// key, can sign impossible positions (latitude 500, infinite altitude). Without +/// this guard those values are recorded verbatim on-chain and permanently +/// advance the permit's waypoint sequence. `f64::is_finite` is available on the +/// Solana BPF/SBF target, so the check runs on-chain. Kept as a standalone pure +/// function so the range logic is unit-testable without the Anchor runtime. +fn are_coordinates_valid(latitude: f64, longitude: f64) -> bool { + latitude.is_finite() + && longitude.is_finite() + && latitude.abs() <= MAX_ABS_LATITUDE_DEG + && longitude.abs() <= MAX_ABS_LONGITUDE_DEG +} + +#[program] +pub mod resq_gating { + use super::*; + + pub fn initialize_permit( + ctx: Context, + permit_id: [u8; 32], + drone_pubkey: Pubkey, + route_root: [u8; 32], + ) -> Result<()> { + let permit = &mut ctx.accounts.permit; + permit.operator = ctx.accounts.operator.key(); + permit.permit_id = permit_id; + permit.drone = drone_pubkey; + permit.route_root = route_root; + permit.current_waypoint_index = 0; + permit.is_active = true; + permit.bump = ctx.bumps.permit; + Ok(()) + } + + pub fn submit_attestation( + ctx: Context, + latitude: f64, + longitude: f64, + altitude: f32, + timestamp: i64, + signature: [u8; 64], + ) -> Result<()> { + let permit = &mut ctx.accounts.permit; + require!(permit.is_active, ResQError::InactivePermit); + + // Reject malformed telemetry before it can be recorded on-chain. A valid + // Ed25519 signature only proves the drone *signed* these coordinates — it + // does not prove they are physically plausible. A sensor/serialization + // bug or a compromised (but still registered) drone key can sign + // non-finite (NaN/±inf) or out-of-range positions (e.g. latitude 500); + // without this guard they would be persisted verbatim and permanently + // advance the permit's waypoint sequence. Checked here, at the boundary, + // before any attestation is written or the waypoint advanced. + require!( + are_coordinates_valid(latitude, longitude), + ResQError::InvalidCoordinates + ); + // are_coordinates_valid covers latitude/longitude (f64). Altitude is a + // separate f32 and must also be finite before it is recorded: a signed + // but malformed payload with NaN/±inf altitude would otherwise persist + // verbatim and permanently advance the permit's waypoint sequence. + require!(altitude.is_finite(), ResQError::InvalidCoordinates); + + // Reject stale or replayed attestations: the client-supplied timestamp + // must be within a tight window of the on-chain clock. + let clock = Clock::get()?; + require!( + is_within_clock_drift(clock.unix_timestamp, timestamp), + ResQError::StaleAttestation + ); + + let sysvar_info = &ctx.accounts.instructions_sysvar; + + // 1. Determine the index of the currently executing instruction + let current_index = load_current_index_checked(sysvar_info)? as usize; + require!(current_index > 0, ResQError::MissingSignaturePrecompile); + + // 2. Load the preceding instruction using a relative offset to prevent index manipulation + let precompile_index = current_index - 1; + let precompile_ix = load_instruction_at_checked(precompile_index, sysvar_info)?; + + // 3. Assert that the precompile targeted the native Ed25519 program + require_keys_eq!( + precompile_ix.program_id, + ed25519_program::ID, + ResQError::InvalidPrecompileProgram + ); + + // 4. Extract and validate precompile parameters to mitigate offset exploits + let data = &precompile_ix.data; + require!(data.len() >= 16, ResQError::MalformedPrecompileHeader); + + let num_signatures = data[0]; + require_eq!(num_signatures, 1, ResQError::InvalidSignatureCount); + + // Parse offsets using little-endian representation + let sig_offset = u16::from_le_bytes([data[2], data[3]]) as usize; + let sig_ix = u16::from_le_bytes([data[4], data[5]]); + let pubkey_offset = u16::from_le_bytes([data[6], data[7]]) as usize; + let pubkey_ix = u16::from_le_bytes([data[8], data[9]]); + let msg_offset = u16::from_le_bytes([data[10], data[11]]) as usize; + let msg_size = u16::from_le_bytes([data[12], data[13]]) as usize; + let msg_ix = u16::from_le_bytes([data[14], data[15]]); + + // Enforce that verification data is contained within the precompile instruction body + require_eq!(sig_ix, 0xFFFF, ResQError::CrossInstructionOffsetsProhibited); + require_eq!( + pubkey_ix, + 0xFFFF, + ResQError::CrossInstructionOffsetsProhibited + ); + require_eq!(msg_ix, 0xFFFF, ResQError::CrossInstructionOffsetsProhibited); + + // Enforce strict offset boundaries to prevent overlapping input data + require_eq!(pubkey_offset, 16, ResQError::InvalidPublicKeyOffset); + require_eq!(sig_offset, 48, ResQError::InvalidSignatureOffset); + require_eq!( + msg_offset, + PRECOMPILE_MSG_OFFSET, + ResQError::InvalidMessageOffset + ); + require_eq!( + msg_size, + PRECOMPILE_MSG_SIZE, + ResQError::InvalidMessageLength + ); + + // Bounds-check the full extent of every slice *before* indexing into `data`. + // Validating the header fields alone is not sufficient: a crafted precompile + // instruction can advertise valid offsets/sizes while truncating the actual + // data buffer, which would otherwise panic the program (denial of service). + require!( + data.len() >= pubkey_offset + 32, + ResQError::MalformedPrecompileHeader + ); + require!( + data.len() >= sig_offset + 64, + ResQError::MalformedPrecompileHeader + ); + require!( + data.len() >= msg_offset + msg_size, + ResQError::MalformedPrecompileHeader + ); + + // Slice verification data according to validated offsets + let verified_pubkey = &data[pubkey_offset..pubkey_offset + 32]; + let verified_sig = &data[sig_offset..sig_offset + 64]; + let verified_msg = &data[msg_offset..msg_offset + msg_size]; + + // 5. Match the verified signature against the drone's registered on-chain key + let registered_drone_bytes = permit.drone.to_bytes(); + require!( + verified_pubkey == registered_drone_bytes, + ResQError::DroneIdentityMismatch + ); + + // Validate signature match + require!(verified_sig == signature, ResQError::SignatureMismatch); + + // 6. Reconstruct the expected message payload to verify telemetry data integrity. + // Must match the packed `TelemetryPayload` layout signed on the drone + // (services/edge-aeai/include/tpm_signing.hpp) byte-for-byte: + // permit_id[32], waypoint_index (u16 LE), lat (f64 LE), lon (f64 LE), + // alt (f32 LE), timestamp (i64 LE) — 62 bytes total. + let mut expected_msg = Vec::with_capacity(PRECOMPILE_MSG_SIZE); + expected_msg.extend_from_slice(&permit.permit_id); + expected_msg.extend_from_slice(&permit.current_waypoint_index.to_le_bytes()); + expected_msg.extend_from_slice(&latitude.to_le_bytes()); + expected_msg.extend_from_slice(&longitude.to_le_bytes()); + expected_msg.extend_from_slice(&altitude.to_le_bytes()); + expected_msg.extend_from_slice(×tamp.to_le_bytes()); + + require!( + verified_msg == expected_msg, + ResQError::TelemetryPayloadSpoofed + ); + + // 7. Write the attestation data to the permanent ledger record + let attestation = &mut ctx.accounts.attestation; + attestation.permit = permit.key(); + attestation.waypoint_index = permit.current_waypoint_index; + attestation.latitude = latitude; + attestation.longitude = longitude; + attestation.altitude = altitude; + attestation.timestamp = timestamp; + attestation.signature = signature; + + // Advance the waypoint sequence index to authorize the next route + // transition. A checked increment prevents a long-lived permit from + // overflowing the u16 counter (which would abort under the workspace's + // overflow-checked release profile after all signature/payload checks + // have already passed); once the sequence space is exhausted the permit + // is retired instead of wrapping. + let (next_index, still_active) = advance_waypoint(permit.current_waypoint_index); + permit.current_waypoint_index = next_index; + permit.is_active = still_active; + + Ok(()) + } +} + +#[derive(Accounts)] +#[instruction(permit_id: [u8; 32])] +pub struct InitializePermit<'info> { + #[account( + init, + payer = operator, + space = 8 + 32 + 32 + 32 + 32 + 2 + 1 + 1, + // permit_id is GLOBALLY unique: the PDA is seeded by permit_id alone, not + // (operator, permit_id). Including operator.key() previously let an + // attacker init a second permit with a victim's permit_id + drone and + // replay the victim's public on-chain attestations onto it (CWE-294). + // With a global namespace an already-registered permit_id cannot be + // re-initialized, so there is no shadow permit for a replay to land on. + seeds = [b"airspace_permit".as_ref(), permit_id.as_ref()], + bump + )] + pub permit: Account<'info, AirspacePermit>, + #[account(mut)] + pub operator: Signer<'info>, + pub system_program: Program<'info, System>, +} + +#[derive(Accounts)] +pub struct SubmitAttestation<'info> { + #[account( + mut, + // Must match InitializePermit: permit_id alone (globally unique), no operator. + seeds = [b"airspace_permit".as_ref(), permit.permit_id.as_ref()], + bump = permit.bump + )] + pub permit: Account<'info, AirspacePermit>, + + #[account( + init, + payer = payer, + space = 8 + 32 + 2 + 8 + 8 + 4 + 8 + 64, + seeds = [ + b"location_attestation", + permit.key().as_ref(), + &permit.current_waypoint_index.to_le_bytes() + ], + bump + )] + pub attestation: Account<'info, LocationAttestation>, + + #[account(mut)] + pub payer: Signer<'info>, + + /// CHECK: Instructions sysvar checked via direct program validation + #[account(address = solana_instructions_sysvar::ID)] + pub instructions_sysvar: AccountInfo<'info>, + pub system_program: Program<'info, System>, +} + +#[account] +pub struct AirspacePermit { + pub operator: Pubkey, + /// Unique identifier for this permit; also used as a PDA seed and as the + /// first field of the signed telemetry payload binding attestations to + /// this specific permit. + pub permit_id: [u8; 32], + pub drone: Pubkey, + pub route_root: [u8; 32], + pub current_waypoint_index: u16, + pub is_active: bool, + pub bump: u8, +} + +#[account] +pub struct LocationAttestation { + pub permit: Pubkey, + pub waypoint_index: u16, + pub latitude: f64, + pub longitude: f64, + pub altitude: f32, + pub timestamp: i64, + pub signature: [u8; 64], +} + +#[error_code] +pub enum ResQError { + #[msg("The specified airspace permit is inactive.")] + InactivePermit, + #[msg("The attestation timestamp is outside the allowed freshness window.")] + StaleAttestation, + #[msg("Missing signature verification precompile instruction.")] + MissingSignaturePrecompile, + #[msg("The preceding instruction does not target the native Ed25519 precompile.")] + InvalidPrecompileProgram, + #[msg("The precompile instruction header is malformed.")] + MalformedPrecompileHeader, + #[msg("The precompile must verify exactly one signature.")] + InvalidSignatureCount, + #[msg("Cross-instruction offsets are prohibited.")] + CrossInstructionOffsetsProhibited, + #[msg("The public key offset is incorrect.")] + InvalidPublicKeyOffset, + #[msg("The signature offset is incorrect.")] + InvalidSignatureOffset, + #[msg("The message offset is incorrect.")] + InvalidMessageOffset, + #[msg("The message length does not match the expected telemetry payload size.")] + InvalidMessageLength, + #[msg("The verified public key does not match the drone's registered on-chain identity.")] + DroneIdentityMismatch, + #[msg("The signature does not match the precompile record.")] + SignatureMismatch, + #[msg("The verified message payload does not match the submitted telemetry coordinates.")] + TelemetryPayloadSpoofed, + #[msg("The attestation coordinates are non-finite (NaN/inf) or outside valid WGS-84 ranges.")] + InvalidCoordinates, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn accepts_timestamp_within_drift_window() { + let now = 1_700_000_000_i64; + assert!(is_within_clock_drift(now, now)); + assert!(is_within_clock_drift( + now, + now + MAX_ATTESTATION_CLOCK_DRIFT_SECS + )); + assert!(is_within_clock_drift( + now, + now - MAX_ATTESTATION_CLOCK_DRIFT_SECS + )); + } + + #[test] + fn rejects_timestamp_outside_drift_window() { + let now = 1_700_000_000_i64; + assert!(!is_within_clock_drift( + now, + now + MAX_ATTESTATION_CLOCK_DRIFT_SECS + 1 + )); + assert!(!is_within_clock_drift( + now, + now - MAX_ATTESTATION_CLOCK_DRIFT_SECS - 1 + )); + } + + #[test] + fn does_not_overflow_on_hostile_timestamps() { + // A naive `(now - timestamp).abs()` panics under overflow-checked + // arithmetic on these inputs; `is_within_clock_drift` must instead + // reject them without panicking. This path runs before any signature + // is verified, so it is reachable by an unauthenticated caller. + let now = 1_700_000_000_i64; + assert!(!is_within_clock_drift(now, i64::MIN)); + assert!(!is_within_clock_drift(now, i64::MAX)); + // Extreme clock values must also be handled symmetrically. + assert!(!is_within_clock_drift(i64::MAX, i64::MIN)); + assert!(!is_within_clock_drift(i64::MIN, i64::MAX)); + assert!(!is_within_clock_drift(0, i64::MIN)); + } + + #[test] + fn advance_waypoint_increments_within_range() { + assert_eq!(advance_waypoint(0), (1, true)); + assert_eq!(advance_waypoint(41), (42, true)); + assert_eq!(advance_waypoint(u16::MAX - 1), (u16::MAX, true)); + } + + #[test] + fn advance_waypoint_retires_permit_at_max_without_overflow() { + // At u16::MAX a naive `+= 1` overflows and aborts the instruction under + // the workspace's overflow-checked release profile. `advance_waypoint` + // must instead retire the permit (still_active == false) and hold the + // index steady so the counter never wraps or panics. + assert_eq!(advance_waypoint(u16::MAX), (u16::MAX, false)); + } + + #[test] + fn accepts_coordinates_within_valid_ranges() { + assert!(are_coordinates_valid(0.0, 0.0)); + assert!(are_coordinates_valid(37.7749, -122.4194)); + // Boundary values are inclusive. + assert!(are_coordinates_valid(90.0, 180.0)); + assert!(are_coordinates_valid(-90.0, -180.0)); + } + + #[test] + fn rejects_non_finite_coordinates() { + // A freshly signed but malformed payload with NaN/inf must never be + // recorded on-chain, even though the Ed25519 signature would verify. + assert!(!are_coordinates_valid(f64::NAN, 0.0)); + assert!(!are_coordinates_valid(0.0, f64::NAN)); + assert!(!are_coordinates_valid(f64::INFINITY, 0.0)); + assert!(!are_coordinates_valid(0.0, f64::NEG_INFINITY)); + assert!(!are_coordinates_valid(f64::INFINITY, f64::INFINITY)); + } + + #[test] + fn rejects_out_of_range_coordinates() { + // Physically impossible positions (e.g. latitude 500) must be rejected + // so they cannot permanently advance the permit's waypoint sequence. + assert!(!are_coordinates_valid(500.0, 0.0)); + assert!(!are_coordinates_valid(90.0001, 0.0)); + assert!(!are_coordinates_valid(-90.0001, 0.0)); + assert!(!are_coordinates_valid(0.0, 180.0001)); + assert!(!are_coordinates_valid(0.0, -180.0001)); + assert!(!are_coordinates_valid(500.0, 500.0)); + } +} diff --git a/resq-gating/tests/integration.rs b/resq-gating/tests/integration.rs new file mode 100644 index 0000000..766090c --- /dev/null +++ b/resq-gating/tests/integration.rs @@ -0,0 +1,508 @@ +/* + * Copyright 2026 ResQ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +use anchor_lang::{AccountDeserialize, InstructionData, ToAccountMetas}; +use solana_account_info::AccountInfo; +use solana_instruction::{AccountMeta, Instruction as SolanaInstruction}; +use solana_program_entrypoint::ProgramResult; +use solana_program_test::{processor, ProgramTest}; +use solana_pubkey::Pubkey as SolanaPubkey; +use solana_sdk::program_error::ProgramError; +use solana_sdk::{ + signature::Keypair, signer::Signer, sysvar::clock::Clock, transaction::Transaction, +}; + +use resq_gating::{AirspacePermit, LocationAttestation}; + +#[allow(unsafe_code)] +fn process_instruction( + program_id: &SolanaPubkey, + accounts: &[AccountInfo], + data: &[u8], +) -> ProgramResult { + let program_id = anchor_pubkey(*program_id); + resq_gating::entry(&program_id, unsafe { std::mem::transmute(accounts) }, data) + .map_err(|err| ProgramError::from(u64::from(err))) +} + +// ─── Helpers ───────────────────────────────────────────────────────────────── + +fn sdk_pubkey(value: anchor_lang::prelude::Pubkey) -> SolanaPubkey { + SolanaPubkey::new_from_array(value.to_bytes()) +} + +fn anchor_pubkey(value: SolanaPubkey) -> anchor_lang::prelude::Pubkey { + anchor_lang::prelude::Pubkey::new_from_array(value.to_bytes()) +} + +fn sdk_account_metas(value: Vec) -> Vec { + value + .into_iter() + .map(|meta| { + let pubkey = sdk_pubkey(meta.pubkey); + if meta.is_writable { + AccountMeta::new(pubkey, meta.is_signer) + } else { + AccountMeta::new_readonly(pubkey, meta.is_signer) + } + }) + .collect() +} + +fn permit_pda(permit_id: &[u8; 32]) -> (SolanaPubkey, u8) { + SolanaPubkey::find_program_address( + &[b"airspace_permit".as_ref(), permit_id.as_ref()], + &sdk_pubkey(resq_gating::id()), + ) +} + +fn attestation_pda(permit: &SolanaPubkey, waypoint_index: u16) -> (SolanaPubkey, u8) { + SolanaPubkey::find_program_address( + &[ + b"location_attestation", + permit.as_ref(), + &waypoint_index.to_le_bytes(), + ], + &sdk_pubkey(resq_gating::id()), + ) +} + +/// Packs the telemetry payload exactly as `services/edge-aeai/include/tpm_signing.hpp`'s +/// `TelemetryPayload` struct does, and as `submit_attestation` reconstructs it on-chain: +/// permit_id[32] || waypoint_index (u16 LE) || lat (f64 LE) || lon (f64 LE) || +/// alt (f32 LE) || timestamp (i64 LE) = 62 bytes. +fn pack_telemetry_payload( + permit_id: &[u8; 32], + waypoint_index: u16, + latitude: f64, + longitude: f64, + altitude: f32, + timestamp: i64, +) -> Vec { + let mut msg = Vec::with_capacity(62); + msg.extend_from_slice(permit_id); + msg.extend_from_slice(&waypoint_index.to_le_bytes()); + msg.extend_from_slice(&latitude.to_le_bytes()); + msg.extend_from_slice(&longitude.to_le_bytes()); + msg.extend_from_slice(&altitude.to_le_bytes()); + msg.extend_from_slice(×tamp.to_le_bytes()); + msg +} + +/// Builds a native Ed25519 program precompile instruction using the exact +/// single-signature header layout that `submit_attestation` parses: +/// `[num_sigs=1][pad][sig_offset u16][sig_ix=0xFFFF][pubkey_offset u16] +/// [pubkey_ix=0xFFFF][msg_offset u16][msg_size u16][msg_ix=0xFFFF]` +/// followed by the pubkey (32B), signature (64B), and message bytes. +fn build_ed25519_ix(pubkey: [u8; 32], signature: [u8; 64], message: &[u8]) -> SolanaInstruction { + const PUBKEY_OFFSET: u16 = 16; + const SIG_OFFSET: u16 = 48; + const MSG_OFFSET: u16 = 112; + const NO_INDEX: u16 = 0xFFFF; + + let mut data = Vec::with_capacity(112 + message.len()); + data.push(1u8); // num_signatures + data.push(0u8); // padding + data.extend_from_slice(&SIG_OFFSET.to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&PUBKEY_OFFSET.to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&MSG_OFFSET.to_le_bytes()); + data.extend_from_slice(&(message.len() as u16).to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&pubkey); + data.extend_from_slice(&signature); + data.extend_from_slice(message); + + SolanaInstruction { + program_id: sdk_pubkey(solana_program::ed25519_program::ID), + accounts: vec![], + data, + } +} + +/// Builds a *malformed* Ed25519 precompile instruction: the header declares +/// the standard offsets/sizes (as `submit_attestation`'s `require_eq!` checks +/// expect), but the instruction data buffer is truncated to exactly 112 bytes +/// -- i.e. it stops right where the message region would begin, omitting the +/// message payload entirely. Prior to the OOB-slice fix, a downstream program +/// that only checked `data.len() >= 112` would then slice `data[112..174]` +/// out of bounds. +fn build_truncated_ed25519_ix() -> SolanaInstruction { + const PUBKEY_OFFSET: u16 = 16; + const SIG_OFFSET: u16 = 48; + const MSG_OFFSET: u16 = 112; + const MSG_SIZE: u16 = 62; + const NO_INDEX: u16 = 0xFFFF; + + let mut data = Vec::with_capacity(112); + data.push(1u8); + data.push(0u8); + data.extend_from_slice(&SIG_OFFSET.to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&PUBKEY_OFFSET.to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&MSG_OFFSET.to_le_bytes()); + data.extend_from_slice(&MSG_SIZE.to_le_bytes()); + data.extend_from_slice(&NO_INDEX.to_le_bytes()); + data.extend_from_slice(&[0u8; 32]); // fake pubkey region (16..48) + data.extend_from_slice(&[0u8; 64]); // fake signature region (48..112) + // NOTE: no message bytes appended -- data.len() == 112, but the header + // claims a message region of 112..174. + assert_eq!(data.len(), 112); + + SolanaInstruction { + program_id: sdk_pubkey(solana_program::ed25519_program::ID), + accounts: vec![], + data, + } +} + +fn init_permit_ix( + operator: &SolanaPubkey, + permit: &SolanaPubkey, + permit_id: [u8; 32], + drone: SolanaPubkey, + route_root: [u8; 32], +) -> SolanaInstruction { + let data = resq_gating::instruction::InitializePermit { + permit_id, + drone_pubkey: anchor_pubkey(drone), + route_root, + } + .data(); + + let accounts = resq_gating::accounts::InitializePermit { + permit: anchor_pubkey(*permit), + operator: anchor_pubkey(*operator), + system_program: anchor_lang::system_program::ID, + } + .to_account_metas(None); + + SolanaInstruction { + program_id: sdk_pubkey(resq_gating::id()), + accounts: sdk_account_metas(accounts), + data, + } +} + +#[allow(clippy::too_many_arguments)] +fn submit_attestation_ix( + permit: &SolanaPubkey, + attestation: &SolanaPubkey, + payer: &SolanaPubkey, + latitude: f64, + longitude: f64, + altitude: f32, + timestamp: i64, + signature: [u8; 64], +) -> SolanaInstruction { + let data = resq_gating::instruction::SubmitAttestation { + latitude, + longitude, + altitude, + timestamp, + signature, + } + .data(); + + let accounts = resq_gating::accounts::SubmitAttestation { + permit: anchor_pubkey(*permit), + attestation: anchor_pubkey(*attestation), + payer: anchor_pubkey(*payer), + instructions_sysvar: solana_instructions_sysvar::ID, + system_program: anchor_lang::system_program::ID, + } + .to_account_metas(None); + + SolanaInstruction { + program_id: sdk_pubkey(resq_gating::id()), + accounts: sdk_account_metas(accounts), + data, + } +} + +fn new_program_test() -> ProgramTest { + ProgramTest::new( + "resq_gating", + sdk_pubkey(resq_gating::id()), + processor!(process_instruction), + ) +} + +// ─── Tests ─────────────────────────────────────────────────────────────────── + +/// (a) A correctly-signed attestation with a matching permit_id succeeds +/// end-to-end: initialize_permit -> submit_attestation. This is the +/// regression the two CRITICAL bugs (missing permit_id field / mismatched +/// PDA seeds / wrong message reconstruction) broke -- previously this could +/// never succeed because the SubmitAttestation account's PDA seeds could +/// never resolve to the permit created by initialize_permit. +#[tokio::test] +async fn test_submit_attestation_happy_path() { + let program = new_program_test(); + let (mut banks_client, payer, recent_blockhash) = program.start().await; + + let operator = payer.pubkey(); + let permit_id = [7u8; 32]; + let drone = Keypair::new(); + let route_root = [9u8; 32]; + + let (permit, _) = permit_pda(&permit_id); + let init_ix = init_permit_ix(&operator, &permit, permit_id, drone.pubkey(), route_root); + let mut tx = Transaction::new_with_payer(&[init_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + banks_client.process_transaction(tx).await.unwrap(); + + let waypoint_index: u16 = 0; + let (attestation, _) = attestation_pda(&permit, waypoint_index); + + let clock: Clock = banks_client.get_sysvar().await.unwrap(); + let timestamp = clock.unix_timestamp; + let latitude = 37.7749_f64; + let longitude = -122.4194_f64; + let altitude = 120.5_f32; + + let message = pack_telemetry_payload( + &permit_id, + waypoint_index, + latitude, + longitude, + altitude, + timestamp, + ); + let signature: [u8; 64] = drone.sign_message(&message).into(); + + let ed25519_ix = build_ed25519_ix(drone.pubkey().to_bytes(), signature, &message); + let submit_ix = submit_attestation_ix( + &permit, + &attestation, + &payer.pubkey(), + latitude, + longitude, + altitude, + timestamp, + signature, + ); + + let recent_blockhash = banks_client.get_latest_blockhash().await.unwrap(); + let mut tx = Transaction::new_with_payer(&[ed25519_ix, submit_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + banks_client.process_transaction(tx).await.unwrap(); + + let attestation_account = banks_client + .get_account(attestation) + .await + .unwrap() + .unwrap(); + let record: LocationAttestation = + LocationAttestation::try_deserialize(&mut attestation_account.data.as_slice()).unwrap(); + assert_eq!(record.permit, anchor_pubkey(permit)); + assert_eq!(record.waypoint_index, 0); + assert_eq!(record.latitude, latitude); + assert_eq!(record.longitude, longitude); + assert_eq!(record.altitude, altitude); + assert_eq!(record.timestamp, timestamp); + assert_eq!(record.signature, signature); + + let permit_account = banks_client.get_account(permit).await.unwrap().unwrap(); + let permit_state: AirspacePermit = + AirspacePermit::try_deserialize(&mut permit_account.data.as_slice()).unwrap(); + assert_eq!(permit_state.permit_id, permit_id); + assert_eq!(permit_state.current_waypoint_index, 1); +} + +/// (b) A signature over a *different* permit_id than the one stored on-chain +/// (simulating a replayed/misattributed signature, or tampered telemetry) +/// must be rejected with `TelemetryPayloadSpoofed`. +#[tokio::test] +async fn test_wrong_permit_id_is_rejected() { + let program = new_program_test(); + let (mut banks_client, payer, recent_blockhash) = program.start().await; + + let operator = payer.pubkey(); + let permit_id = [1u8; 32]; + let wrong_permit_id = [2u8; 32]; + let drone = Keypair::new(); + let route_root = [3u8; 32]; + + let (permit, _) = permit_pda(&permit_id); + let init_ix = init_permit_ix(&operator, &permit, permit_id, drone.pubkey(), route_root); + let mut tx = Transaction::new_with_payer(&[init_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + banks_client.process_transaction(tx).await.unwrap(); + + let waypoint_index: u16 = 0; + let (attestation, _) = attestation_pda(&permit, waypoint_index); + + let clock: Clock = banks_client.get_sysvar().await.unwrap(); + let timestamp = clock.unix_timestamp; + let latitude = 1.0_f64; + let longitude = 2.0_f64; + let altitude = 3.0_f32; + + // Signed message is bound to the WRONG permit_id. + let tampered_message = pack_telemetry_payload( + &wrong_permit_id, + waypoint_index, + latitude, + longitude, + altitude, + timestamp, + ); + let signature: [u8; 64] = drone.sign_message(&tampered_message).into(); + + let ed25519_ix = build_ed25519_ix(drone.pubkey().to_bytes(), signature, &tampered_message); + let submit_ix = submit_attestation_ix( + &permit, + &attestation, + &payer.pubkey(), + latitude, + longitude, + altitude, + timestamp, + signature, + ); + + let recent_blockhash = banks_client.get_latest_blockhash().await.unwrap(); + let mut tx = Transaction::new_with_payer(&[ed25519_ix, submit_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + + let err = banks_client.process_transaction(tx).await.unwrap_err(); + assert!( + err.to_string().contains("TelemetryPayloadSpoofed") + || format!("{err:?}").contains("Custom(6013)"), + "unexpected error: {err:?}" + ); +} + +/// (c) A timestamp outside the +/-30s freshness window must be rejected with +/// `StaleAttestation`, even before the Ed25519 precompile is consulted. +#[tokio::test] +async fn test_stale_timestamp_is_rejected() { + let program = new_program_test(); + let (mut banks_client, payer, recent_blockhash) = program.start().await; + + let operator = payer.pubkey(); + let permit_id = [4u8; 32]; + let drone = Keypair::new(); + let route_root = [5u8; 32]; + + let (permit, _) = permit_pda(&permit_id); + let init_ix = init_permit_ix(&operator, &permit, permit_id, drone.pubkey(), route_root); + let mut tx = Transaction::new_with_payer(&[init_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + banks_client.process_transaction(tx).await.unwrap(); + + let waypoint_index: u16 = 0; + let (attestation, _) = attestation_pda(&permit, waypoint_index); + + let clock: Clock = banks_client.get_sysvar().await.unwrap(); + // One hour in the past -- well outside the 30s window. + let timestamp = clock.unix_timestamp - 3600; + let latitude = 1.0_f64; + let longitude = 2.0_f64; + let altitude = 3.0_f32; + + let message = pack_telemetry_payload( + &permit_id, + waypoint_index, + latitude, + longitude, + altitude, + timestamp, + ); + let signature: [u8; 64] = drone.sign_message(&message).into(); + + // Note: no preceding Ed25519 precompile instruction is even required to + // exercise this check -- the freshness check runs before precompile + // parsing, so a single-instruction transaction is sufficient. + let submit_ix = submit_attestation_ix( + &permit, + &attestation, + &payer.pubkey(), + latitude, + longitude, + altitude, + timestamp, + signature, + ); + + let recent_blockhash = banks_client.get_latest_blockhash().await.unwrap(); + let mut tx = Transaction::new_with_payer(&[submit_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + + let err = banks_client.process_transaction(tx).await.unwrap_err(); + assert!( + err.to_string().contains("StaleAttestation") || format!("{err:?}").contains("Custom(6001)"), + "unexpected error: {err:?}" + ); +} + +/// (d) A malformed, truncated (112-byte) Ed25519 precompile instruction -- +/// crafted so its header advertises the standard message offset/size +/// (112/62) while the actual data buffer ends exactly at byte 112 -- must be +/// rejected cleanly (a typed error / clean transaction failure), never a +/// panic/process abort, when paired with a `submit_attestation` call. +#[tokio::test] +async fn test_truncated_precompile_does_not_panic() { + let program = new_program_test(); + let (mut banks_client, payer, recent_blockhash) = program.start().await; + + let operator = payer.pubkey(); + let permit_id = [6u8; 32]; + let drone = Keypair::new(); + let route_root = [8u8; 32]; + + let (permit, _) = permit_pda(&permit_id); + let init_ix = init_permit_ix(&operator, &permit, permit_id, drone.pubkey(), route_root); + let mut tx = Transaction::new_with_payer(&[init_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + banks_client.process_transaction(tx).await.unwrap(); + + let waypoint_index: u16 = 0; + let (attestation, _) = attestation_pda(&permit, waypoint_index); + + let clock: Clock = banks_client.get_sysvar().await.unwrap(); + let timestamp = clock.unix_timestamp; + + let malformed_ed25519_ix = build_truncated_ed25519_ix(); + let submit_ix = submit_attestation_ix( + &permit, + &attestation, + &payer.pubkey(), + 1.0, + 2.0, + 3.0, + timestamp, + [0u8; 64], + ); + + let recent_blockhash = banks_client.get_latest_blockhash().await.unwrap(); + let mut tx = + Transaction::new_with_payer(&[malformed_ed25519_ix, submit_ix], Some(&payer.pubkey())); + tx.sign(&[&payer], recent_blockhash); + + // The key assertion: this call returns cleanly (Ok with a program-level + // error, or a sanitize/precompile-level Err) -- it must never panic or + // abort the process, which is what the pre-fix `data[112..174]` slice on + // a 112-byte buffer would have done. + let result = banks_client.process_transaction(tx).await; + assert!( + result.is_err(), + "malformed precompile instruction should not succeed" + ); +} diff --git a/vendor/solana-program-test/Cargo.lock b/vendor/solana-program-test/Cargo.lock new file mode 100644 index 0000000..c147b92 --- /dev/null +++ b/vendor/solana-program-test/Cargo.lock @@ -0,0 +1,8806 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "agave-feature-set" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a36f13a213d45f45f8ff87ea9fc6b0a792a7997c76b7c5d6d4a2ebe741d19d0" +dependencies = [ + "ahash 0.8.11", + "solana-epoch-schedule", + "solana-hash 3.1.0", + "solana-pubkey", + "solana-sha256-hasher", + "solana-svm-feature-set", +] + +[[package]] +name = "agave-fs" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f4412d89cbeaa7cc39b6c1e37f052cb7f815433f3d2d6ed4f927da04c88f9a" +dependencies = [ + "agave-io-uring", + "io-uring", + "libc", + "log", + "slab", + "smallvec", +] + +[[package]] +name = "agave-io-uring" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b10398e813092a6f7f3d8a4ad4017870087bdb3a10ade3281b186086e6e775e" +dependencies = [ + "io-uring", + "libc", + "log", + "slab", + "smallvec", +] + +[[package]] +name = "agave-logger" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92bb03118dee8e9feb1e5f9a999c415a1aec647f2fbe330251bbb58a76caf3a1" +dependencies = [ + "env_logger", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "agave-precompiles" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4321be6c2553f19159af1efaccc8b7951ad4b143840c91439da190f8205e92e" +dependencies = [ + "agave-feature-set", + "bincode", + "digest 0.10.7", + "ed25519-dalek 1.0.1", + "libsecp256k1", + "openssl", + "sha3", + "solana-ed25519-program", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "agave-reserved-account-keys" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4dbcc14290a572b94f8793561f74f87e8dd1efb6c28c883d79a84242ee9633" +dependencies = [ + "agave-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "agave-snapshots" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d885e8f6ddc79bf6b6d6b4347974e0d846feccab1c9ae666ad92e21cf43dfc4" +dependencies = [ + "agave-fs", + "bincode", + "bzip2", + "crossbeam-channel", + "log", + "lz4", + "rand 0.8.5", + "regex", + "semver", + "solana-accounts-db", + "solana-clock", + "solana-genesis-config", + "solana-hash 3.1.0", + "solana-lattice-hash", + "solana-measure", + "solana-metrics", + "strum", + "symlink", + "tar", + "tempfile", + "thiserror 2.0.17", + "zstd", +] + +[[package]] +name = "agave-syscalls" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "108ce050e29fa68a49928213a74f12fc314f8f6964cceeec908be700f1ae5a80" +dependencies = [ + "bincode", + "libsecp256k1", + "num-traits", + "solana-account", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-bn254", + "solana-clock", + "solana-cpi", + "solana-curve25519 3.1.10", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keccak-hasher", + "solana-loader-v3-interface", + "solana-poseidon", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-type-overrides", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction-context", + "thiserror 2.0.17", +] + +[[package]] +name = "agave-transaction-view" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc12186a81042cd93d5199adb469bdc7215968dda6c59f778a02eaa3aac7896" +dependencies = [ + "solana-hash 3.1.0", + "solana-message", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-svm-transaction", + "solana-transaction-context", +] + +[[package]] +name = "agave-votor-messages" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66191497da4f496b7866e41dc227f894ba58ee58127c7be29dd709574549baab" +dependencies = [ + "agave-logger", + "serde", + "solana-bls-signatures", + "solana-clock", + "solana-hash 3.1.0", +] + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom 0.2.15", + "once_cell", + "version_check", + "zerocopy 0.7.31", +] + +[[package]] +name = "aho-corasick" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android_system_properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" + +[[package]] +name = "anza-quinn" +version = "0.11.9-rustsec20260037" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91bfa08f6e7e4187354ff4f793b81cc08218a6a95cc48f5de7616d44452bf6e0" +dependencies = [ + "anza-quinn-proto", + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2 0.6.1", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "anza-quinn-proto" +version = "0.11.13-rustsec20260037" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00a4d8cf8d72ee56e0ee20d3b4eef4785ce1b05299c4982c6de7f251c458efe" +dependencies = [ + "bytes", + "fastbloom", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.0", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "aquamarine" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash 0.8.11", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.1", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe 0.6.0", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "paste", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash 0.8.11", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe 0.6.0", + "fnv", + "hashbrown 0.15.1", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[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 1.0.109", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-compression" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b74f44609f0f91493e3082d3734d98497e094777144380ea4db9f9905dd5b6" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +dependencies = [ + "serde", +] + +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +dependencies = [ + "cc", + "glob", + "threadpool", + "zeroize", +] + +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff", + "group", + "pairing", + "rand_core 0.6.4", + "serde", + "subtle", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.61.0", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", + "serde", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "der-parser" +version = "8.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.6", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dir-diff" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" +dependencies = [ + "walkdir", +] + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dlopen2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.2.0", + "spki", +] + +[[package]] +name = "ed25519" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc" +dependencies = [ + "signature 1.4.0", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature 2.2.0", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519 1.2.0", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", + "serde", + "sha2 0.10.9", + "subtle", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b49a684b133c4980d7ee783936af771516011c8cd15f429dbda77245e282f03" +dependencies = [ + "derivation-path", + "ed25519-dalek 2.2.0", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "educe" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b50932a01e7ec5c06160492ab660fb19b6bb2a7878030dd6cd68d21df9d4d" +dependencies = [ + "enum-ordinalize 3.1.10", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize 4.3.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b166c9e378360dd5a6666a9604bb4f54ae0cac39023ffbac425e917a2a04fef" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastbloom" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18c1ddb9231d8554c2d6bdf4cfaabf0c59251658c68b6c95cd52dd0c513a912a" +dependencies = [ + "getrandom 0.3.4", + "libm", + "rand 0.9.0", + "siphasher 1.0.1", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "bitvec", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.2.10", + "winapi", +] + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fragile" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "governor" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" +dependencies = [ + "cfg-if", + "dashmap", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot", + "portable-atomic", + "quanta", + "rand 0.8.5", + "smallvec", + "spinning_top", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand 0.8.5", + "rand_core 0.6.4", + "rand_xorshift", + "subtle", +] + +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +dependencies = [ + "allocator-api2", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" + +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots 0.26.8", +] + +[[package]] +name = "hyper-util" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2bfd338099682614d3ee3fe0cd72e0b6a41ca6a87f6a74a3bd593c91650501" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "im" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +dependencies = [ + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown 0.15.1", +] + +[[package]] +name = "indicatif" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" +dependencies = [ + "console", + "portable-atomic", + "unicode-width", + "unit-prefix", + "web-time", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine 4.6.7", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.9", + "signature 2.2.0", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libm" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "light-poseidon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ff 0.4.2", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "light-poseidon" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a1ccadd0bb5a32c196da536fd72c59183de24a055f6bf0513bf845fefab862" +dependencies = [ + "ark-bn254 0.5.0", + "ark-ff 0.5.0", + "num-bigint 0.4.6", + "thiserror 1.0.69", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "linux-raw-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "lz4" +version = "1.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" +dependencies = [ + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "memchr" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "minimal-lexical" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c64630dcdd71f1a64c435f54885086a0de5d6a12d104d69b165fb7d5286d677" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "modular-bitfield" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a586be3f2f7e70a9d302c621447dba612d42069f3901258b2cf8ce96d855b1" +dependencies = [ + "modular-bitfield-impl", + "static_assertions", +] + +[[package]] +name = "modular-bitfield-impl" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8462d3cc74eaf4194f6c0bd7b18c6f3fa6293297f4bdb60fe4c4b022ea366e12" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + +[[package]] +name = "nom" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffd9d26838a953b4af82cbeb9f1592c6798916983959be223a7124e992742c1" +dependencies = [ + "memchr", + "minimal-lexical", + "version_check", +] + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "num_threads" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" +dependencies = [ + "libc", +] + +[[package]] +name = "oid-registry" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d4bda43fd1b844cbc6e6e54b5444e2b1bc7838bce59ad205902cccbb26d6761" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "openssl-probe" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" + +[[package]] +name = "openssl-src" +version = "300.3.1+3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror 1.0.69", +] + +[[package]] +name = "pairing" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" +dependencies = [ + "group", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.0", +] + +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[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 = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools 0.10.5", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451" + +[[package]] +name = "predicates-tree" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338c7be2905b732ae3984a2f40032b5e94fd8f52505b186c7d4d68d193445df7" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "quanta" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +dependencies = [ + "crossbeam-utils", + "libc", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2 0.6.1", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.0", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +dependencies = [ + "libc", + "once_cell", + "socket2 0.5.10", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.23", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "raw-cpuid" +version = "11.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" +dependencies = [ + "bitflags 2.9.4", +] + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +dependencies = [ + "async-compression", + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util 0.7.16", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 1.0.0", +] + +[[package]] +name = "reqwest-middleware" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57f17d28a6e6acfe1733fe24bcd30774d13bffa4b8a22535b4c8c98423088d4e" +dependencies = [ + "anyhow", + "async-trait", + "http 1.1.0", + "reqwest", + "serde", + "thiserror 1.0.69", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[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.38.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustix" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.9.2", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-native-certs" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be59af91596cac372a6942530653ad0c3a246cdd491aaa9dcaee47f88d67d5a0" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + +[[package]] +name = "rustls-webpki" +version = "0.103.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +dependencies = [ + "lazy_static", + "winapi", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.9.4", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +dependencies = [ + "serde_core", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[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.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solana-account" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "014dcb9293341241dd153b35f89ea906e4170914f4a347a95e7fb07ade47cd6f" +dependencies = [ + "bincode", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-decoder" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fcc1c9e2a2d82c9aa09e0d34940b6c5a43c2fd5eea38c7caed0f6b177e27a8" +dependencies = [ + "Inflector", + "base64 0.22.1", + "bincode", + "bs58", + "bv", + "serde", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-config-interface", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-loader-v3-interface", + "solana-nonce", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar", + "solana-vote-interface", + "spl-generic-token", + "spl-token-2022-interface", + "spl-token-group-interface", + "spl-token-interface", + "spl-token-metadata-interface", + "thiserror 2.0.17", + "zstd", +] + +[[package]] +name = "solana-account-decoder-client-types" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43e62ffb8742a71d3e8b5263ba892cdc65b24b063fa5b5f414205350b031a730" +dependencies = [ + "base64 0.22.1", + "bs58", + "serde", + "serde_json", + "solana-account", + "solana-pubkey", + "zstd", +] + +[[package]] +name = "solana-account-info" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f4691b69b172c687d218dd2f1f23fc7ea5e9aa79df9ac26dab3d8dd829ce48" +dependencies = [ + "bincode", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[package]] +name = "solana-accounts-db" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4440c9ef4a236679a2ce959942aa2484820a87cfeebba9507f0e37fd53d922" +dependencies = [ + "agave-fs", + "ahash 0.8.11", + "bincode", + "blake3", + "bv", + "bytemuck", + "bytemuck_derive", + "crossbeam-channel", + "dashmap", + "indexmap", + "itertools 0.12.1", + "log", + "lz4", + "memmap2 0.9.8", + "modular-bitfield", + "num_cpus", + "num_enum", + "rand 0.8.5", + "rayon", + "seqlock", + "serde", + "smallvec", + "solana-account", + "solana-address-lookup-table-interface", + "solana-bucket-map", + "solana-clock", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-genesis-config", + "solana-hash 3.1.0", + "solana-lattice-hash", + "solana-measure", + "solana-message", + "solana-metrics", + "solana-nohash-hasher", + "solana-pubkey", + "solana-rayon-threadlimit", + "solana-reward-info", + "solana-sha256-hasher", + "solana-slot-hashes", + "solana-svm-transaction", + "solana-system-interface", + "solana-sysvar", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "spl-generic-token", + "static_assertions", + "tempfile", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-address" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.0.0", +] + +[[package]] +name = "solana-address" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8 1.0.0", + "five8_const", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-define-syscall 4.0.1", + "solana-program-error", + "solana-sanitize", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2f56cac5e70517a2f27d05e5100b20de7182473ffd0035b23ea273307905987" +dependencies = [ + "bincode", + "bytemuck", + "serde", + "serde_derive", + "solana-clock", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-slot-hashes", +] + +[[package]] +name = "solana-atomic-u64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-banks-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580412201a93474b4f6fb81397f437872587675cd89a7641593ff0bf474f2cd2" +dependencies = [ + "borsh", + "futures", + "solana-account", + "solana-banks-interface", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-signature", + "solana-sysvar", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", + "thiserror 2.0.17", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52bbb162580cdfa9cb1c1bbcdf56701b194369de5dc30d52fa0ccef00223b63" +dependencies = [ + "serde", + "solana-account", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b411175ea4aba3dc51da75e5dd0213a2d057f7a79e6747b9ace2b1aed3e707c" +dependencies = [ + "agave-feature-set", + "bincode", + "crossbeam-channel", + "futures", + "solana-account", + "solana-banks-interface", + "solana-client", + "solana-clock", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey", + "solana-runtime", + "solana-runtime-transaction", + "solana-send-transaction-service", + "solana-signature", + "solana-svm", + "solana-transaction", + "solana-transaction-error", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-big-mod-exp" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-bincode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534a37aecd21986089224d0c01006a75b96ac6fb2f418c24edc15baf0d2a4c99" +dependencies = [ + "bincode", + "serde", + "solana-instruction-error", +] + +[[package]] +name = "solana-blake3-hasher" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa2e3bdac3339c6d0423275e45dafc5ac25f4d43bf344d026a3cc9a85e244a6" +dependencies = [ + "blake3", + "solana-define-syscall 3.0.0", + "solana-hash 3.1.0", +] + +[[package]] +name = "solana-bls-signatures" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c75573697bbb148afa8209aa3ce228ca0754584c9a8a91e818db0f706ae4fb" +dependencies = [ + "base64 0.22.1", + "blst", + "blstrs", + "bytemuck", + "cfg_eval", + "ff", + "group", + "pairing", + "rand 0.8.5", + "serde", + "serde_json", + "serde_with", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-bn254" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d08583be08d2d5f19aa21efbb6fbdb968ba7fd0de74562441437a7d776772bf" +dependencies = [ + "ark-bn254 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "bytemuck", + "solana-define-syscall 3.0.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-borsh" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" +dependencies = [ + "borsh", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36128e7525889b05f13a4dbfb86f1ff3aef2063ab63b899591d348226e20def8" +dependencies = [ + "agave-syscalls", + "bincode", + "qualifier_attr", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-packet", + "solana-program-entrypoint", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", + "solana-system-interface", + "solana-transaction-context", +] + +[[package]] +name = "solana-bucket-map" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7cec41cfc4bf0db14ae82c0705e2d00034b5021268a07ef120f3870587c5bb" +dependencies = [ + "bv", + "bytemuck", + "bytemuck_derive", + "memmap2 0.9.8", + "modular-bitfield", + "num_enum", + "rand 0.8.5", + "solana-clock", + "solana-measure", + "solana-pubkey", + "tempfile", +] + +[[package]] +name = "solana-builtins" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784cd398c18e3d565d08382d1f83c94d4603647169239f37b32ba25439873b07" +dependencies = [ + "agave-feature-set", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-hash 3.1.0", + "solana-loader-v4-program", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-program", + "solana-vote-program", + "solana-zk-elgamal-proof-program", + "solana-zk-token-proof-program", +] + +[[package]] +name = "solana-builtins-default-costs" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98f0361a1c69c869ed9c03cd7fbbacbda5e51b80d41aab5e3b2b2a21f2bca5d9" +dependencies = [ + "agave-feature-set", + "ahash 0.8.11", + "log", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-loader-v4-program", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56cdbbecbda755254a0c11010472a53036ff6fccdf5d7e908b92c95f04ff2497" +dependencies = [ + "anza-quinn", + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap", + "indicatif", + "log", + "rayon", + "solana-account", + "solana-client-traits", + "solana-commitment-config", + "solana-connection-cache", + "solana-epoch-info", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-measure", + "solana-message", + "solana-net-utils", + "solana-pubkey", + "solana-pubsub-client", + "solana-quic-client", + "solana-quic-definitions", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-signature", + "solana-signer", + "solana-streamer", + "solana-time-utils", + "solana-tpu-client", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-udp-client", + "thiserror 2.0.17", + "tokio", + "tokio-util 0.7.16", +] + +[[package]] +name = "solana-client-traits" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08618ed587e128105510c54ae3e456b9a06d674d8640db75afe66dad65cb4e02" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb7692fa6bf10a1a86b450c4775526f56d7e0e2116a53313f2533b5694abea64" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", +] + +[[package]] +name = "solana-commitment-config" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fa5933a62dadb7d3ed35e6329de5cebb0678acc8f9cfdf413269084eeccc63f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c346408840a596e128b1b5214fd72a2c1cf8484cc96965e10333f6a18fcb897b" +dependencies = [ + "solana-fee-structure", + "solana-program-runtime", +] + +[[package]] +name = "solana-compute-budget-instruction" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5247f6c5a646681ed98f8f92b01d18ae75a22311ee00415ed2970d60dfcd610" +dependencies = [ + "agave-feature-set", + "log", + "solana-borsh", + "solana-builtins-default-costs", + "solana-compute-budget", + "solana-compute-budget-interface", + "solana-instruction", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-transaction-error", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8292c436b269ad23cecc8b24f7da3ab07ca111661e25e00ce0e1d22771951ab9" +dependencies = [ + "borsh", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-compute-budget-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb474148341578c7aebd3a6d42e2f5b3be0c49ed28eb325460966d63073c9498" +dependencies = [ + "solana-program-runtime", +] + +[[package]] +name = "solana-config-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e401ae56aed512821cc7a0adaa412ff97fecd2dff4602be7b1330d2daec0c4" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-short-vec", + "solana-system-interface", +] + +[[package]] +name = "solana-connection-cache" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbacf3640794251ba0efa0bc13fbbaeac90f0e02c15dd723da1b7fec058f3b2" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap", + "log", + "rand 0.8.5", + "rayon", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-time-utils", + "solana-transaction-error", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e905e7a64c5b784e7b916d96ebc244f415cd535858b44d5e414b54a3fc198e" +dependencies = [ + "agave-feature-set", + "ahash 0.8.11", + "log", + "solana-bincode", + "solana-borsh", + "solana-builtins-default-costs", + "solana-clock", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-compute-budget-interface", + "solana-fee-structure", + "solana-metrics", + "solana-packet", + "solana-pubkey", + "solana-runtime-transaction", + "solana-sdk-ids", + "solana-svm-transaction", + "solana-system-interface", + "solana-transaction-error", + "solana-vote-program", +] + +[[package]] +name = "solana-cpi" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16238feb63d1cbdf915fb287f29ef7a7ebf81469bd6214f8b72a53866b593f8f" +dependencies = [ + "solana-account-info", + "solana-define-syscall 3.0.0", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-stable-layout", +] + +[[package]] +name = "solana-curve25519" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall 2.3.0", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-curve25519" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d7e1177e6006823b91e0a930d94992ed74f8a6327d54ee50a9457ff72e625a" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall 3.0.0", + "subtle", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-define-syscall" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-derivation-path" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff71743072690fdbdfcdc37700ae1cb77485aaad49019473a81aee099b1e0b8c" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-ed25519-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1419197f1c06abf760043f6d64ba9d79a03ad5a43f18c7586471937122094da" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a6b69bd71386f61344f2bcf0f527f5fd6dd3b22add5880e2e1bf1dd1fa8059" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-epoch-rewards" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-rewards-hasher" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e507099d0c2c5d7870c9b1848281ea67bbeee80d171ca85003ee5767994c9c38" +dependencies = [ + "siphasher 0.3.11", + "solana-hash 3.1.0", + "solana-pubkey", +] + +[[package]] +name = "solana-epoch-schedule" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-stake" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc6693d0ea833b880514b9b88d95afb80b42762dca98b0712465d1fcbbcb89e" +dependencies = [ + "solana-define-syscall 3.0.0", + "solana-pubkey", +] + +[[package]] +name = "solana-example-mocks" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keccak-hasher", + "solana-message", + "solana-nonce", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347ab62e6d47a82e340c865133795b394feea7c2b2771d293f57691c6544c3f" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-fee" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56a1e5ee3af013f0851107fbf873c4949aeb7bfaeaea5444fa7ed0adb209696f" +dependencies = [ + "agave-feature-set", + "solana-fee-structure", + "solana-svm-transaction", +] + +[[package]] +name = "solana-fee-calculator" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-structure" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2abdb1223eea8ec64136f39cb1ffcf257e00f915c957c35c0dd9e3f4e700b0" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-genesis-config" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "749eccc960e85c9b33608450093d256006253e1cb436b8380e71777840a3f675" +dependencies = [ + "bincode", + "chrono", + "memmap2 0.5.10", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash 3.1.0", + "solana-inflation", + "solana-keypair", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abacc4b66ce471f135f48f22facf75cbbb0f8a252fbe2c1e0aa59d5b203f519" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" +dependencies = [ + "solana-hash 4.0.1", +] + +[[package]] +name = "solana-hash" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "five8 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", +] + +[[package]] +name = "solana-inflation" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e92f37a14e7c660628752833250dd3dcd8e95309876aee751d7f8769a27947c6" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df4e8fcba01d7efa647ed20a081c234475df5e11a93acb4393cc2c9a7b99bab" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-define-syscall 3.0.0", + "solana-instruction-error", + "solana-pubkey", +] + +[[package]] +name = "solana-instruction-error" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f0d483b8ae387178d9210e0575b666b05cdd4bd0f2f188128249f6e454d39d" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-program-error", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" +dependencies = [ + "bitflags 2.9.4", + "solana-account-info", + "solana-instruction", + "solana-instruction-error", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-keccak-hasher" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57eebd3012946913c8c1b8b43cdf8a6249edb09c0b6be3604ae910332a3acd97" +dependencies = [ + "sha3", + "solana-define-syscall 3.0.0", + "solana-hash 3.1.0", +] + +[[package]] +name = "solana-keypair" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "952ed9074c12edd2060cb09c2a8c664303f4ab7f7056a407ac37dd1da7bdaa3e" +dependencies = [ + "ed25519-dalek 2.2.0", + "ed25519-dalek-bip32", + "five8 0.2.1", + "rand 0.8.5", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-lattice-hash" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a723b440d3aaa896a5dd137b35b966cfd61ef64529636bb1125f3f2bc2d6b8a" +dependencies = [ + "base64 0.22.1", + "blake3", + "bs58", + "bytemuck", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee44c9b1328c5c712c68966fb8de07b47f3e7bac006e74ddd1bb053d3e46e5d" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c948b33ff81fa89699911b207059e493defdba9647eaf18f23abdf3674e0fb" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v4-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f21fc8ee1d0f22ff002542f352eb5c38128dfc2dbc700be1db23251ecc3e78c" +dependencies = [ + "log", + "solana-account", + "solana-bincode", + "solana-bpf-loader-program", + "solana-instruction", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sbpf", + "solana-sdk-ids", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-type-overrides", + "solana-transaction-context", +] + +[[package]] +name = "solana-measure" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee6df5d71fbc041b3badfd014753b76c643f5fcb9bba2498aae2a30d40616d0" + +[[package]] +name = "solana-message" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85666605c9fd727f865ed381665db0a8fc29f984a030ecc1e40f43bfb2541623" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-address 1.1.0", + "solana-hash 3.1.0", + "solana-instruction", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-transaction-error", +] + +[[package]] +name = "solana-metrics" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0f05dfe08e1b14429eb35feb15f89455d7c75d8a1704ee8da1f0ebf0993d42" +dependencies = [ + "crossbeam-channel", + "gethostname", + "log", + "reqwest", + "solana-cluster-type", + "solana-sha256-hasher", + "solana-time-utils", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-msg" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" +dependencies = [ + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-native-token" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" + +[[package]] +name = "solana-net-utils" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ed12c06e326edff1a26380f18b01d1c9ec4723aeed2c0d6dec1035d9eacb1fa" +dependencies = [ + "anyhow", + "bincode", + "bytes", + "cfg-if", + "dashmap", + "itertools 0.12.1", + "log", + "nix", + "rand 0.8.5", + "serde", + "socket2 0.6.1", + "solana-serde", + "solana-svm-type-overrides", + "tokio", + "url", +] + +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-nonce" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator", + "solana-hash 3.1.0", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-nonce-account" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805fd25b29e5a1a0e6c3dd6320c9da80f275fbe4ff6e392617c303a2085c435e" +dependencies = [ + "solana-account", + "solana-hash 3.1.0", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-packet" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edf2f25743c95229ac0fdc32f8f5893ef738dbf332c669e9861d33ddb0f469d" +dependencies = [ + "bincode", + "bitflags 2.9.4", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-perf" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae20efb5ec6c98b3932d6755d5df962ab51344f099d704317a79af2faa42403" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "bytes", + "caps", + "curve25519-dalek 4.1.3", + "dlopen2", + "fnv", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "serde", + "solana-hash 3.1.0", + "solana-message", + "solana-metrics", + "solana-packet", + "solana-pubkey", + "solana-rayon-threadlimit", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-time-utils", + "solana-transaction-context", +] + +[[package]] +name = "solana-poh-config" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f1fef1f2ff2480fdbcc64bef5e3c47bec6e1647270db88b43f23e3a55f8d9cf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-poseidon" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a2c8f53a80947785b58e55bda1b619bac03f266c9055b7b0208775f0522057" +dependencies = [ + "ark-bn254 0.4.0", + "ark-bn254 0.5.0", + "light-poseidon 0.2.0", + "light-poseidon 0.4.0", + "solana-define-syscall 3.0.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-precompile-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cafcd950de74c6c39d55dc8ca108bbb007799842ab370ef26cf45a34453c31e1" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" +dependencies = [ + "memoffset", + "solana-account-info", + "solana-big-mod-exp", + "solana-blake3-hasher", + "solana-clock", + "solana-cpi", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-epoch-stake", + "solana-example-mocks", + "solana-fee-calculator", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", + "solana-msg", + "solana-native-token", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", + "solana-sysvar", + "solana-sysvar-id", +] + +[[package]] +name = "solana-program-binaries" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aec04996ee91ca1b538c2692ea632270c895ba665b32ba43a9986c603dc6064" +dependencies = [ + "bincode", + "serde", + "solana-account", + "solana-loader-v3-interface", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "spl-generic-token", +] + +[[package]] +name = "solana-program-entrypoint" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6557cf5b5e91745d1667447438a1baa7823c6086e4ece67f8e6ebfa7a8f72660" +dependencies = [ + "solana-account-info", + "solana-define-syscall 3.0.0", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" +dependencies = [ + "borsh", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-program-memory" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10e5660c60749c7bfb30b447542529758e4dbcecd31b1e8af1fdc92e2bdde90a" +dependencies = [ + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-program-option" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" + +[[package]] +name = "solana-program-pack" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" +dependencies = [ + "solana-program-error", +] + +[[package]] +name = "solana-program-runtime" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cefa43d3f60a2dd25e0fcc3a5a46f50de021c42981029b1e8f375e1d954853" +dependencies = [ + "base64 0.22.1", + "bincode", + "itertools 0.12.1", + "log", + "percentage", + "rand 0.8.5", + "serde", + "solana-account", + "solana-account-info", + "solana-clock", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-structure", + "solana-hash 3.1.0", + "solana-instruction", + "solana-last-restart-slot", + "solana-loader-v3-interface", + "solana-program-entrypoint", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-transaction", + "solana-svm-type-overrides", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction-context", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-program-test" +version = "3.1.10" +dependencies = [ + "agave-feature-set", + "agave-logger", + "assert_matches", + "async-trait", + "base64 0.22.1", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-account", + "solana-account-info", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-clock", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget", + "solana-cpi", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-genesis-config", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-loader-v3-interface", + "solana-message", + "solana-msg", + "solana-native-token", + "solana-poh-config", + "solana-program", + "solana-program-binaries", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-runtime", + "solana-sbpf", + "solana-sdk-ids", + "solana-signer", + "solana-stable-layout", + "solana-stake-interface", + "solana-svm", + "solana-svm-log-collector", + "solana-svm-timings", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-vote-program", + "spl-generic-token", + "test-case", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "solana-pubkey" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" +dependencies = [ + "rand 0.8.5", + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubsub-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320923e8c430d05c515f2f413dee50afa0da421b4fe37dc4b76fd9f28b7409a7" +dependencies = [ + "crossbeam-channel", + "futures-util", + "http 0.2.12", + "log", + "semver", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-pubkey", + "solana-rpc-client-types", + "solana-signature", + "thiserror 2.0.17", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ede9c4da2447500b05c2fdc8b238c703b33943604a927dc197733bc91ac2a1f" +dependencies = [ + "anza-quinn", + "anza-quinn-proto", + "async-lock", + "async-trait", + "futures", + "itertools 0.12.1", + "log", + "rustls", + "solana-connection-cache", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-pubkey", + "solana-quic-definitions", + "solana-rpc-client-api", + "solana-signer", + "solana-streamer", + "solana-tls-utils", + "solana-transaction-error", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "solana-quic-definitions" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15319accf7d3afd845817aeffa6edd8cc185f135cefbc6b985df29cfd8c09609" +dependencies = [ + "solana-keypair", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d48133891ea0e717d845059429b98d03bab34f3ec4e2b58bfe78248a898017" +dependencies = [ + "log", + "num_cpus", +] + +[[package]] +name = "solana-rent" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b702d8c43711e3c8a9284a4f1bbc6a3de2553deb25b0c8142f9a44ef0ce5ddc1" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-reward-info" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82be7946105c2ee6be9f9ee7bd18a068b558389221d29efa92b906476102bfcc" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-rpc-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f7447f65aacd7ef752393bec2a9082d0313983b804f92d06fe72caf44e8cd6" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bincode", + "bs58", + "futures", + "indicatif", + "log", + "reqwest", + "reqwest-middleware", + "semver", + "serde", + "serde_json", + "solana-account", + "solana-account-decoder", + "solana-account-decoder-client-types", + "solana-clock", + "solana-commitment-config", + "solana-epoch-info", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-hash 3.1.0", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-rpc-client-api", + "solana-signature", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "solana-vote-interface", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d953ce18f99a07c8101e071dd54d2a99b80835ad2ea1566913c55d4bce2ef" +dependencies = [ + "anyhow", + "jsonrpc-core", + "reqwest", + "reqwest-middleware", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-clock", + "solana-rpc-client-types", + "solana-signer", + "solana-transaction-error", + "solana-transaction-status-client-types", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0e7777237c3791d40039ab1274d346949497f9be48cd688717ff001cb740cf9" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-hash 3.1.0", + "solana-message", + "solana-nonce", + "solana-pubkey", + "solana-rpc-client", + "solana-sdk-ids", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-rpc-client-types" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095c430a4ff4ddb10b7399f8d3d26eafeaccb84f8802568594f6f5941c60dff5" +dependencies = [ + "base64 0.22.1", + "bs58", + "semver", + "serde", + "serde_json", + "solana-account", + "solana-account-decoder-client-types", + "solana-address 1.1.0", + "solana-clock", + "solana-commitment-config", + "solana-fee-calculator", + "solana-inflation", + "solana-reward-info", + "solana-transaction", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-version", + "spl-generic-token", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-runtime" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcade4e95d16de9ecdb7cc108eb65be6e9c468ba5c6dcf0b0f2cb42e68ccb9b5" +dependencies = [ + "agave-feature-set", + "agave-fs", + "agave-precompiles", + "agave-reserved-account-keys", + "agave-snapshots", + "agave-syscalls", + "agave-votor-messages", + "ahash 0.8.11", + "aquamarine", + "arc-swap", + "arrayref", + "assert_matches", + "base64 0.22.1", + "bincode", + "blake3", + "bv", + "bytemuck", + "crossbeam-channel", + "dashmap", + "dir-diff", + "fnv", + "im", + "itertools 0.12.1", + "libc", + "log", + "lz4", + "memmap2 0.9.8", + "mockall", + "modular-bitfield", + "num-derive", + "num-traits", + "num_cpus", + "num_enum", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "semver", + "serde", + "serde_json", + "serde_with", + "solana-account", + "solana-account-info", + "solana-accounts-db", + "solana-address-lookup-table-interface", + "solana-bls-signatures", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-builtins", + "solana-client-traits", + "solana-clock", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-compute-budget-interface", + "solana-config-interface", + "solana-cost-model", + "solana-cpi", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-epoch-schedule", + "solana-feature-gate-interface", + "solana-fee", + "solana-fee-calculator", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-hash 3.1.0", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-lattice-hash", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-measure", + "solana-message", + "solana-metrics", + "solana-native-token", + "solana-nohash-hasher", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-perf", + "solana-poh-config", + "solana-precompile-error", + "solana-program-runtime", + "solana-pubkey", + "solana-rayon-threadlimit", + "solana-rent", + "solana-reward-info", + "solana-runtime-transaction", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-seed-derivable", + "solana-serde", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-svm", + "solana-svm-callback", + "solana-svm-timings", + "solana-svm-transaction", + "solana-system-interface", + "solana-system-transaction", + "solana-sysvar", + "solana-sysvar-id", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-transaction-status-client-types", + "solana-unified-scheduler-logic", + "solana-version", + "solana-vote", + "solana-vote-interface", + "solana-vote-program", + "spl-generic-token", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tempfile", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-runtime-transaction" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85538e4376c5d8cab0fc9afa10a193edda72affa1727f56696600e3e2ffe0766" +dependencies = [ + "agave-transaction-view", + "log", + "solana-compute-budget", + "solana-compute-budget-instruction", + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-svm-transaction", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[package]] +name = "solana-sbpf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15b079e08471a9dbfe1e48b2c7439c85aa2a055cbd54eddd8bd257b0a7dbb29" +dependencies = [ + "byteorder", + "combine 3.8.1", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "thiserror 2.0.17", + "winapi", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1b6d6aaf60669c592838d382266b173881c65fb1cdec83b37cb8ce7cb89f9ad" +dependencies = [ + "solana-pubkey", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "solana-secp256k1-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8efa767b0188f577edae7080e8bf080e5db9458e2b6ee5beaa73e2e6bb54e99d" +dependencies = [ + "digest 0.10.7", + "k256", + "serde", + "serde_derive", + "sha3", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "394a4470477d66296af5217970a905b1c5569032a7732c367fb69e5666c8607e" +dependencies = [ + "k256", + "solana-define-syscall 3.0.0", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-secp256r1-program" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445d8e12592631d76fc4dc57858bae66c9fd7cc838c306c62a472547fc9d0ce6" +dependencies = [ + "bytemuck", + "openssl", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-seed-derivable" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7bdb72758e3bec33ed0e2658a920f1f35dfb9ed576b951d20d63cb61ecd95c" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc905b200a95f2ea9146e43f2a7181e3aeb55de6bc12afb36462d00a3c7310de" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-send-transaction-service" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5292b2711216b21a5c9ba0e7a713ef9c8dc190311acd20dfd441ac1c5438cac" +dependencies = [ + "async-trait", + "crossbeam-channel", + "itertools 0.12.1", + "log", + "solana-client", + "solana-clock", + "solana-connection-cache", + "solana-hash 3.1.0", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-nonce-account", + "solana-pubkey", + "solana-quic-definitions", + "solana-runtime", + "solana-signature", + "solana-time-utils", + "solana-tpu-client-next", + "tokio", + "tokio-util 0.7.16", +] + +[[package]] +name = "solana-serde" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709a93cab694c70f40b279d497639788fc2ccbcf9b4aa32273d4b361322c02dd" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" +dependencies = [ + "solana-instruction-error", + "solana-pubkey", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 4.0.1", + "solana-hash 4.0.1", +] + +[[package]] +name = "solana-short-vec" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b69d029da5428fc1c57f7d49101b2077c61f049d4112cd5fb8456567cc7d2638" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-shred-version" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94953e22ca28fe4541a3447d6baeaf519cc4ddc063253bfa673b721f34c136bb" +dependencies = [ + "solana-hard-forks", + "solana-hash 3.1.0", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb8057cc0e9f7b5e89883d49de6f407df655bb6f3a71d0b7baf9986a2218fd9" +dependencies = [ + "ed25519-dalek 2.2.0", + "five8 0.2.1", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize", +] + +[[package]] +name = "solana-signer" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-transaction-error", +] + +[[package]] +name = "solana-slot-hashes" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "solana-stake-interface" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f912ae679b683365348dea482dbd9468d22ff258b554fd36e3d3683c2122e3" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", +] + +[[package]] +name = "solana-streamer" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c9d1d759bb2d08119e45dcb0ff6834038086cc7b2d1f4e279f2ac340d77bce" +dependencies = [ + "anza-quinn", + "anza-quinn-proto", + "arc-swap", + "bytes", + "crossbeam-channel", + "dashmap", + "futures", + "futures-util", + "governor", + "histogram", + "indexmap", + "itertools 0.12.1", + "libc", + "log", + "nix", + "num_cpus", + "pem", + "percentage", + "rand 0.8.5", + "rustls", + "smallvec", + "socket2 0.6.1", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-packet", + "solana-perf", + "solana-pubkey", + "solana-quic-definitions", + "solana-signature", + "solana-signer", + "solana-time-utils", + "solana-tls-utils", + "solana-transaction-error", + "solana-transaction-metrics-tracker", + "thiserror 2.0.17", + "tokio", + "tokio-util 0.7.16", + "x509-parser", +] + +[[package]] +name = "solana-svm" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "586cd746aa1ef80bd5735813de1b3cb9b1b0c5b5b81ded3069aed213b45de046" +dependencies = [ + "ahash 0.8.11", + "log", + "percentage", + "serde", + "solana-account", + "solana-clock", + "solana-fee-structure", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instructions-sysvar", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-loader-v4-program", + "solana-message", + "solana-nonce", + "solana-nonce-account", + "solana-program-entrypoint", + "solana-program-pack", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-svm-callback", + "solana-svm-feature-set", + "solana-svm-log-collector", + "solana-svm-measure", + "solana-svm-timings", + "solana-svm-transaction", + "solana-svm-type-overrides", + "solana-system-interface", + "solana-sysvar-id", + "solana-transaction-context", + "solana-transaction-error", + "spl-generic-token", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-svm-callback" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9114cc1391e57d0d6902c7c347964cb8e41e3c141ebb4be3ec5440be1c994fa" +dependencies = [ + "solana-account", + "solana-clock", + "solana-precompile-error", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-feature-set" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a20c4fc8d409780c4592c17ac3e01b6f3dc949e6ffd3acbda6d2a21e67b53a" + +[[package]] +name = "solana-svm-log-collector" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92f14f80cf719d5bc2c14bbee50075920637d1f9afe2fce990e5394fa579293" +dependencies = [ + "log", +] + +[[package]] +name = "solana-svm-measure" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c68915dfa801dd03b3f7c3e0a510fe233754463e77f5afe6a30a51ac9fa326" + +[[package]] +name = "solana-svm-timings" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a98d45197b57ae84bbf97647840adb153e444ad147638e742929d83343f48e" +dependencies = [ + "eager", + "enum-iterator", + "solana-pubkey", +] + +[[package]] +name = "solana-svm-transaction" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a6074e3b4bdd7ade15db51a4f309eb9e22239d33b01f4ea5ecf6aff8f81d0ba" +dependencies = [ + "solana-hash 3.1.0", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", + "solana-signature", + "solana-transaction", +] + +[[package]] +name = "solana-svm-type-overrides" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b2ea7c2f849cd6d190e2607c2af779d3dad2792784cc13c0e9342e429c87a1" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "solana-system-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-system-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14d88343aac5ad97d240eca299c8dfcde833e861b6a40bff6fda3ac215efc211" +dependencies = [ + "bincode", + "log", + "serde", + "solana-account", + "solana-bincode", + "solana-fee-calculator", + "solana-instruction", + "solana-nonce", + "solana-nonce-account", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-sdk-ids", + "solana-svm-log-collector", + "solana-svm-type-overrides", + "solana-system-interface", + "solana-sysvar", + "solana-transaction-context", +] + +[[package]] +name = "solana-system-transaction" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31b5699ec533621515e714f1533ee6b3b0e71c463301d919eb59b8c1e249d30" +dependencies = [ + "solana-hash 3.1.0", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63205e68d680bcc315337dec311b616ab32fea0a612db3b883ce4de02e0953f9" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-define-syscall 3.0.0", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash 3.1.0", + "solana-instruction", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sysvar-id" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5051bc1a16d5d96a96bc33b5b2ec707495c48fe978097bdaba68d3c47987eb32" +dependencies = [ + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-time-utils" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced92c60aa76ec4780a9d93f3bd64dfa916e1b998eacc6f1c110f3f444f02c9" + +[[package]] +name = "solana-tls-utils" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b5c952335b378c92ad47286a7dee28acfd0b0ce1ac89562f51b4dcb33210ea" +dependencies = [ + "rustls", + "solana-keypair", + "solana-pubkey", + "solana-signer", + "x509-parser", +] + +[[package]] +name = "solana-tpu-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d331918bac33058ac2acd923c4cf646a8b7bc77fd7463d886da9f24b9e2787c1" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap", + "indicatif", + "log", + "rayon", + "solana-client-traits", + "solana-clock", + "solana-commitment-config", + "solana-connection-cache", + "solana-epoch-schedule", + "solana-measure", + "solana-message", + "solana-net-utils", + "solana-pubkey", + "solana-pubsub-client", + "solana-quic-definitions", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-signature", + "solana-signer", + "solana-transaction", + "solana-transaction-error", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "solana-tpu-client-next" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "354ac341bb7e6d1a61375164fa51273b8254d17cdd1616962804d3882855be4b" +dependencies = [ + "anza-quinn", + "async-trait", + "log", + "lru", + "rustls", + "solana-clock", + "solana-connection-cache", + "solana-keypair", + "solana-measure", + "solana-metrics", + "solana-quic-definitions", + "solana-rpc-client", + "solana-streamer", + "solana-time-utils", + "solana-tls-utils", + "solana-tpu-client", + "thiserror 2.0.17", + "tokio", + "tokio-util 0.7.16", +] + +[[package]] +name = "solana-transaction" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ceb2efbf427a91b884709ffac4dac29117752ce1e37e9ae04977e450aa0bb76" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-address 2.0.0", + "solana-hash 4.0.1", + "solana-instruction", + "solana-instruction-error", + "solana-message", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-transaction-error", +] + +[[package]] +name = "solana-transaction-context" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be7c191d89fb883fef0b4bb4225121f7ad14eb5664d5dc9707b4af661e21924c" +dependencies = [ + "bincode", + "serde", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "solana-sbpf", + "solana-sdk-ids", +] + +[[package]] +name = "solana-transaction-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" +dependencies = [ + "serde", + "serde_derive", + "solana-instruction-error", + "solana-sanitize", +] + +[[package]] +name = "solana-transaction-metrics-tracker" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257ae75d68fe879753baef265a0d1bfcf9274b212dfc44ffea177ce0f1271508" +dependencies = [ + "base64 0.22.1", + "bincode", + "log", + "rand 0.8.5", + "solana-packet", + "solana-perf", + "solana-short-vec", + "solana-signature", +] + +[[package]] +name = "solana-transaction-status-client-types" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a02265337e99bf3e446de1d8133b2d28556f06780e9ab516870317688f332e0" +dependencies = [ + "base64 0.22.1", + "bincode", + "bs58", + "serde", + "serde_json", + "solana-account-decoder-client-types", + "solana-commitment-config", + "solana-instruction", + "solana-message", + "solana-pubkey", + "solana-reward-info", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-udp-client" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f55aab86699ab277347e7086157a1a7c599ce3817c0a8bb07b62bbe3a113f44" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-keypair", + "solana-net-utils", + "solana-streamer", + "solana-transaction-error", + "thiserror 2.0.17", + "tokio", +] + +[[package]] +name = "solana-unified-scheduler-logic" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d653d85171c16e6b5e35c3525dd012b50b2c089f8ffe13692f599e7fe14b18fc" +dependencies = [ + "assert_matches", + "solana-pubkey", + "solana-runtime-transaction", + "solana-transaction", + "static_assertions", + "unwrap_none", +] + +[[package]] +name = "solana-version" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17a9c5d23a31d8f34aac59812099c9d8d76203a447d04b65824f5c913ced9072" +dependencies = [ + "agave-feature-set", + "rand 0.8.5", + "semver", + "serde", + "solana-sanitize", + "solana-serde-varint", +] + +[[package]] +name = "solana-vote" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0809748b89d2aaf6ba4020554ad10487166deff1ff3304ac0a973d67c5f17b7" +dependencies = [ + "itertools 0.12.1", + "log", + "serde", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-packet", + "solana-pubkey", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-signature", + "solana-signer", + "solana-svm-transaction", + "solana-transaction", + "solana-vote-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-vote-interface" +version = "4.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6e123e16bfdd7a81d71b4c4699e0b29580b619f4cd2ef5b6aae1eb85e8979f" +dependencies = [ + "bincode", + "cfg_eval", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "serde_with", + "solana-clock", + "solana-hash 3.1.0", + "solana-instruction", + "solana-instruction-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface", +] + +[[package]] +name = "solana-vote-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be3d7ddb2f7585dcc2225dec9991b15a76c2b80c3edad8f4d5b563fd6b7a2f25" +dependencies = [ + "agave-feature-set", + "bincode", + "log", + "num-derive", + "num-traits", + "serde", + "solana-account", + "solana-bincode", + "solana-clock", + "solana-epoch-schedule", + "solana-hash 3.1.0", + "solana-instruction", + "solana-keypair", + "solana-packet", + "solana-program-runtime", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signer", + "solana-slot-hashes", + "solana-transaction", + "solana-transaction-context", + "solana-vote-interface", + "thiserror 2.0.17", +] + +[[package]] +name = "solana-zk-elgamal-proof-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83f4e40a373aee876998df8f2ffb2a7a6a49667b732a0e6de6d8e5655edc392" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-program-runtime", + "solana-sdk-ids", + "solana-svm-log-collector", + "solana-zk-sdk", +] + +[[package]] +name = "solana-zk-sdk" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9602bcb1f7af15caef92b91132ec2347e1c51a72ecdbefdaefa3eac4b8711475" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "getrandom 0.2.15", + "itertools 0.12.1", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.17", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51feb27c5d776ca053a9b4dd6d7635015fae86fd07b0e74f0cf38e78941d3c" +dependencies = [ + "agave-feature-set", + "bytemuck", + "num-derive", + "num-traits", + "solana-instruction", + "solana-program-runtime", + "solana-sdk-ids", + "solana-svm-log-collector", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "3.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cd24e74dc810c1270c4c8237e4c1fb9f5b80ba3eba96da125070e17187b838" +dependencies = [ + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools 0.12.1", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_json", + "sha3", + "solana-curve25519 3.1.10", + "solana-derivation-path", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "subtle", + "thiserror 2.0.17", + "zeroize", +] + +[[package]] +name = "spinning_top" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-discriminator" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d48cc11459e265d5b501534144266620289720b4c44522a47bc6b63cd295d2f3" +dependencies = [ + "bytemuck", + "solana-program-error", + "solana-sha256-hasher", + "spl-discriminator-derive", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.106", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.106", + "thiserror 1.0.69", +] + +[[package]] +name = "spl-generic-token" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233df81b75ab99b42f002b5cdd6e65a7505ffa930624f7096a7580a56765e9cf" +dependencies = [ + "bytemuck", + "solana-pubkey", +] + +[[package]] +name = "spl-pod" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1233fdecd7461611d69bb87bc2e95af742df47291975d21232a0be8217da9de" +dependencies = [ + "borsh", + "bytemuck", + "bytemuck_derive", + "num-derive", + "num-traits", + "num_enum", + "solana-program-error", + "solana-program-option", + "solana-pubkey", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-2022-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0888304af6b3d839e435712e6c84025e09513017425ff62045b6b8c41feb77d9" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction", + "spl-token-confidential-transfer-proof-generation", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-type-length-value", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a22217af69b7a61ca813f47c018afb0b00b02a74a4c70ff099cd4287740bc3d" +dependencies = [ + "bytemuck", + "solana-account-info", + "solana-curve25519 2.3.13", + "solana-instruction", + "solana-instructions-sysvar", + "solana-msg", + "solana-program-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-confidential-transfer-proof-generation" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a2b41095945dc15274b924b21ccae9b3ec9dc2fdd43dbc08de8c33bbcd915" +dependencies = [ + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-group-interface" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "452d0f758af20caaa10d9a6f7608232e000d4c74462f248540b3d2ddfa419776" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c564ac05a7c8d8b12e988a37d82695b5ba4db376d07ea98bc4882c81f96c7f3" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-token-metadata-interface" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c467c7c3bd056f8fe60119e7ec34ddd6f23052c2fa8f1f51999098063b72676" +dependencies = [ + "borsh", + "num-derive", + "num-traits", + "solana-borsh", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "spl-discriminator", + "spl-pod", + "spl-type-length-value", + "thiserror 2.0.17", +] + +[[package]] +name = "spl-type-length-value" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca20a1a19f4507a98ca4b28ff5ed54cac9b9d34ed27863e2bde50a3238f9a6ac" +dependencies = [ + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info", + "solana-msg", + "solana-program-error", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.17", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tarpc" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" +dependencies = [ + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror 1.0.69", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "tarpc-plugins" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom 0.3.4", + "once_cell", + "rustix 1.0.2", + "windows-sys 0.61.0", +] + +[[package]] +name = "termtree" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54c25e2cb8f5fcd7318157634e8838aa6f7e4715c96637f969fabaccd1ef5462" +dependencies = [ + "cfg-if", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "test-case-macros" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37cfd7bbc88a0104e304229fba519bdc45501a30b760fb72240342f1289ad257" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.106", + "test-case-core", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" +dependencies = [ + "itoa", + "libc", + "num_threads", + "time-macros", +] + +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "tokio-macros", + "windows-sys 0.61.0", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe 0.4.18", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.26.8", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "futures-util", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.4", + "bytes", + "futures-util", + "http 1.1.0", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f9378e96a9361190ae297e7f3a8ff644aacd2897f244b1ff81f381669196fa6" +dependencies = [ + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand 0.9.0", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 2.0.17", + "utf-8", + "webpki-roots 0.26.8", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "unwrap_none" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "461d0c5956fcc728ecc03a3a961e4adc9a7975d86f6f8371389a289517c02ca9" + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webpki-roots" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webpki-roots" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.4", +] + +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys 0.4.14", + "rustix 0.38.39", +] + +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure 0.13.1", +] + +[[package]] +name = "zerocopy" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +dependencies = [ + "zerocopy-derive 0.7.31", +] + +[[package]] +name = "zerocopy" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +dependencies = [ + "zerocopy-derive 0.8.23", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure 0.13.1", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +]