From 0930e4dd8605e81cefdaea025df353a96d2db636 Mon Sep 17 00:00:00 2001 From: jonesmarvin8 <83104039+jonesmarvin8@users.noreply.github.com> Date: Tue, 10 Feb 2026 20:28:13 -0500 Subject: [PATCH] Merge branch 'main' into marvin/refactor-amm-program --- .deny.toml | 50 + .../action.yaml | 19 + .github/workflows/ci.yml | 25 + .gitignore | 3 +- Cargo.lock | 1277 ++++++++++++++++- Cargo.toml | 21 +- LEZ testnet v0.1 tutorials/amm.md | 109 ++ LEZ testnet v0.1 tutorials/custom-tokens.md | 159 ++ LEZ testnet v0.1 tutorials/token-transfer.md | 250 ++++ LEZ testnet v0.1 tutorials/wallet-setup.md | 26 + README.md | 740 +--------- artifacts/program_methods/amm.bin | Bin 528088 -> 528068 bytes .../authenticated_transfer.bin | Bin 380148 -> 380116 bytes artifacts/program_methods/pinata.bin | Bin 382760 -> 382728 bytes artifacts/program_methods/pinata_token.bin | Bin 389004 -> 388976 bytes .../privacy_preserving_circuit.bin | Bin 501584 -> 501536 bytes artifacts/program_methods/token.bin | Bin 474984 -> 474960 bytes artifacts/test_program_methods/burner.bin | Bin 376940 -> 376920 bytes .../test_program_methods/chain_caller.bin | Bin 390672 -> 390632 bytes .../test_program_methods/changer_claimer.bin | Bin 380080 -> 380032 bytes artifacts/test_program_methods/claimer.bin | Bin 375868 -> 375820 bytes .../test_program_methods/data_changer.bin | Bin 378584 -> 378560 bytes .../test_program_methods/extra_output.bin | Bin 375932 -> 375904 bytes .../malicious_authorization_changer.bin | Bin 382168 -> 382136 bytes artifacts/test_program_methods/minter.bin | Bin 375880 -> 375836 bytes .../test_program_methods/missing_output.bin | Bin 376016 -> 376004 bytes .../modified_transfer.bin | Bin 379420 -> 379376 bytes .../test_program_methods/nonce_changer.bin | Bin 375968 -> 375952 bytes artifacts/test_program_methods/noop.bin | Bin 375680 -> 375648 bytes .../program_owner_changer.bin | Bin 375880 -> 375864 bytes .../simple_balance_transfer.bin | Bin 377764 -> 377732 bytes bedrock_client/Cargo.toml | 6 + bedrock_client/src/lib.rs | 37 +- common/Cargo.toml | 3 + common/src/block.rs | 13 +- common/src/communication/indexer.rs | 6 + common/src/communication/mod.rs | 1 + common/src/lib.rs | 1 + common/src/rpc_primitives/requests.rs | 11 + common/src/sequencer_client.rs | 92 +- common/src/test_utils.rs | 2 +- completions/zsh/_wallet | 8 +- examples/program_deployment/Cargo.toml | 1 + .../program_deployment/methods/Cargo.toml | 1 + .../methods/guest/Cargo.toml | 1 + explorer_service/.gitignore | 11 + explorer_service/Cargo.toml | 73 + explorer_service/Dockerfile | 52 + explorer_service/README.md | 71 + explorer_service/docker-compose.yml | 11 + explorer_service/public/explorer.css | 516 +++++++ explorer_service/src/api.rs | 158 ++ .../src/components/account_preview.rs | 63 + .../src/components/block_preview.rs | 77 + explorer_service/src/components/mod.rs | 7 + .../src/components/transaction_preview.rs | 72 + explorer_service/src/format_utils.rs | 33 + explorer_service/src/lib.rs | 102 ++ explorer_service/src/main.rs | 79 + explorer_service/src/pages/account_page.rs | 229 +++ explorer_service/src/pages/block_page.rs | 159 ++ explorer_service/src/pages/main_page.rs | 208 +++ explorer_service/src/pages/mod.rs | 9 + .../src/pages/transaction_page.rs | 262 ++++ flake.lock | 64 + flake.nix | 96 ++ indexer_core/Cargo.toml | 19 + indexer_core/src/config.rs | 36 + indexer_core/src/lib.rs | 124 ++ indexer_core/src/state.rs | 9 + indexer_service/Cargo.toml | 7 +- indexer_service/protocol/Cargo.toml | 1 + indexer_service/protocol/src/convert.rs | 47 +- indexer_service/protocol/src/lib.rs | 32 +- indexer_service/rpc/Cargo.toml | 1 + indexer_service/rpc/src/lib.rs | 20 +- indexer_service/src/lib.rs | 3 + indexer_service/src/main.rs | 6 + indexer_service/src/mock_service.rs | 271 ++++ indexer_service/src/service.rs | 13 + integration_tests/Cargo.toml | 5 + .../configs/indexer/indexer_config.json | 17 + .../sequencer_config.json | 165 +++ .../{ => detached}/sequencer_config.json | 1 + integration_tests/src/lib.rs | 152 +- integration_tests/tests/indexer.rs | 23 + integration_tests/tests/tps.rs | 7 +- integration_tests/tests/wallet_ffi.rs | 618 ++++++++ key_protocol/Cargo.toml | 1 + mempool/Cargo.toml | 1 + nssa/Cargo.toml | 1 + nssa/core/Cargo.toml | 1 + nssa/core/src/commitment.rs | 5 +- nssa/core/src/nullifier.rs | 5 +- nssa/src/lib.rs | 2 +- nssa/src/merkle_tree/mod.rs | 2 + .../transaction.rs | 8 + nssa/src/program.rs | 3 +- .../transaction.rs | 10 +- nssa/src/public_transaction/transaction.rs | 4 +- nssa/src/state.rs | 59 +- program_methods/Cargo.toml | 1 + program_methods/guest/Cargo.toml | 1 + programs/token/Cargo.toml | 1 + programs/token/core/Cargo.toml | 1 + sequencer_core/Cargo.toml | 3 +- sequencer_core/src/block_settlement_client.rs | 38 +- sequencer_core/src/block_store.rs | 37 +- sequencer_core/src/config.rs | 11 +- sequencer_core/src/lib.rs | 204 ++- sequencer_rpc/Cargo.toml | 1 + sequencer_rpc/src/process.rs | 36 +- sequencer_runner/Cargo.toml | 1 + .../configs/debug/sequencer_config.json | 10 +- sequencer_runner/src/lib.rs | 73 +- storage/Cargo.toml | 2 + storage/src/lib.rs | 153 +- test_program_methods/Cargo.toml | 1 + test_program_methods/guest/Cargo.toml | 1 + wallet-ffi/Cargo.toml | 21 + wallet-ffi/build.rs | 13 + wallet-ffi/cbindgen.toml | 40 + wallet-ffi/src/account.rs | 375 +++++ wallet-ffi/src/error.rs | 50 + wallet-ffi/src/keys.rs | 253 ++++ wallet-ffi/src/lib.rs | 63 + wallet-ffi/src/sync.rs | 151 ++ wallet-ffi/src/transfer.rs | 199 +++ wallet-ffi/src/types.rs | 262 ++++ wallet-ffi/src/wallet.rs | 279 ++++ wallet/Cargo.toml | 2 + wallet/src/chain_storage.rs | 8 +- wallet/src/cli/account.rs | 100 +- wallet/src/config.rs | 68 +- wallet/src/helperfunctions.rs | 6 +- wallet/src/lib.rs | 34 +- 136 files changed, 8366 insertions(+), 1026 deletions(-) create mode 100644 .deny.toml create mode 100644 .github/actions/install-logos-blockchain-circuits/action.yaml create mode 100644 LEZ testnet v0.1 tutorials/amm.md create mode 100644 LEZ testnet v0.1 tutorials/custom-tokens.md create mode 100644 LEZ testnet v0.1 tutorials/token-transfer.md create mode 100644 LEZ testnet v0.1 tutorials/wallet-setup.md create mode 100644 common/src/communication/indexer.rs create mode 100644 common/src/communication/mod.rs create mode 100644 explorer_service/.gitignore create mode 100644 explorer_service/Cargo.toml create mode 100644 explorer_service/Dockerfile create mode 100644 explorer_service/README.md create mode 100644 explorer_service/docker-compose.yml create mode 100644 explorer_service/public/explorer.css create mode 100644 explorer_service/src/api.rs create mode 100644 explorer_service/src/components/account_preview.rs create mode 100644 explorer_service/src/components/block_preview.rs create mode 100644 explorer_service/src/components/mod.rs create mode 100644 explorer_service/src/components/transaction_preview.rs create mode 100644 explorer_service/src/format_utils.rs create mode 100644 explorer_service/src/lib.rs create mode 100644 explorer_service/src/main.rs create mode 100644 explorer_service/src/pages/account_page.rs create mode 100644 explorer_service/src/pages/block_page.rs create mode 100644 explorer_service/src/pages/main_page.rs create mode 100644 explorer_service/src/pages/mod.rs create mode 100644 explorer_service/src/pages/transaction_page.rs create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 indexer_core/Cargo.toml create mode 100644 indexer_core/src/config.rs create mode 100644 indexer_core/src/lib.rs create mode 100644 indexer_core/src/state.rs create mode 100644 indexer_service/src/mock_service.rs create mode 100644 integration_tests/configs/indexer/indexer_config.json create mode 100644 integration_tests/configs/sequencer/bedrock_local_attached/sequencer_config.json rename integration_tests/configs/sequencer/{ => detached}/sequencer_config.json (98%) create mode 100644 integration_tests/tests/indexer.rs create mode 100644 integration_tests/tests/wallet_ffi.rs create mode 100644 wallet-ffi/Cargo.toml create mode 100644 wallet-ffi/build.rs create mode 100644 wallet-ffi/cbindgen.toml create mode 100644 wallet-ffi/src/account.rs create mode 100644 wallet-ffi/src/error.rs create mode 100644 wallet-ffi/src/keys.rs create mode 100644 wallet-ffi/src/lib.rs create mode 100644 wallet-ffi/src/sync.rs create mode 100644 wallet-ffi/src/transfer.rs create mode 100644 wallet-ffi/src/types.rs create mode 100644 wallet-ffi/src/wallet.rs diff --git a/.deny.toml b/.deny.toml new file mode 100644 index 00000000..1cb3879c --- /dev/null +++ b/.deny.toml @@ -0,0 +1,50 @@ +# Config file reference can be found at https://embarkstudios.github.io/cargo-deny/checks/cfg.html. + +[graph] +all-features = true +exclude-dev = true +no-default-features = true + +[advisories] +ignore = [ + { id = "RUSTSEC-2023-0071", reason = "Marvin Attack: potential key recovery through timing sidechannels" }, + { id = "RUSTSEC-2024-0388", reason = "`derivative` is unmaintained; consider using an alternative. Use `cargo tree -p derivative -i > tmp.txt` to check the dependency tree." }, + { id = "RUSTSEC-2024-0436", reason = "`paste` has a security vulnerability; consider using an alternative. Use `cargo tree -p paste -i > tmp.txt` to check the dependency tree." }, + { id = "RUSTSEC-2025-0055", reason = "`tracing-subscriber` v0.2.25 pulled in by ark-relations v0.4.0 - will be addressed before mainnet" }, + { id = "RUSTSEC-2025-0141", reason = "`bincode` is unmaintained but continuing to use it." }, +] +yanked = "deny" +unused-ignored-advisory = "deny" + +[bans] +allow-wildcard-paths = false +multiple-versions = "allow" + +[licenses] +allow = [ + "Apache-2.0 WITH LLVM-exception", + "Apache-2.0", + "BSD-2-Clause", + "BSD-3-Clause", + "BSL-1.0", + "CC0-1.0", + "CDLA-Permissive-2.0", + "ISC", + "MIT", + "MPL-2.0", + "Unicode-3.0", + "Zlib", +] +private = { ignore = false } +unused-allowed-license = "deny" + +[sources] +allow-git = [ + "https://github.com/EspressoSystems/jellyfish.git", + "https://github.com/logos-blockchain/logos-blockchain.git", +] +unknown-git = "deny" +unknown-registry = "deny" + +[sources.allow-org] +github = ["logos-co"] diff --git a/.github/actions/install-logos-blockchain-circuits/action.yaml b/.github/actions/install-logos-blockchain-circuits/action.yaml new file mode 100644 index 00000000..e62aea6b --- /dev/null +++ b/.github/actions/install-logos-blockchain-circuits/action.yaml @@ -0,0 +1,19 @@ +name: Setup Logos Blockchain Circuits + +description: Set up Logos Blockchain Circom Circuits, Rapidsnark prover and Rapidsnark verifier using the setup-logos-blockchain-circuits.sh script. + +inputs: + github-token: + description: GitHub token for downloading releases + required: true + +runs: + using: "composite" + steps: + - name: Setup logos-blockchain-circuits + shell: bash + working-directory: ${{ github.workspace }} + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + run: | + curl -sSL https://raw.githubusercontent.com/logos-blockchain/logos-blockchain/main/scripts/setup-logos-blockchain-circuits.sh | bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8efedd9..6292a786 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,6 +56,19 @@ jobs: - name: Check for unused dependencies run: cargo machete + deny: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + ref: ${{ github.head_ref }} + + - name: Install cargo-deny + run: cargo install --locked cargo-deny + + - name: Check licenses and advisories + run: cargo deny check + lint: runs-on: ubuntu-latest timeout-minutes: 60 @@ -70,6 +83,10 @@ jobs: - uses: ./.github/actions/install-risc0 + - uses: ./.github/actions/install-logos-blockchain-circuits + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Install active toolchain run: rustup install @@ -95,6 +112,10 @@ jobs: - uses: ./.github/actions/install-risc0 + - uses: ./.github/actions/install-logos-blockchain-circuits + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Install active toolchain run: rustup install @@ -119,6 +140,10 @@ jobs: - uses: ./.github/actions/install-risc0 + - uses: ./.github/actions/install-logos-blockchain-circuits + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Install active toolchain run: rustup install diff --git a/.gitignore b/.gitignore index 6162763b..8a454208 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ data/ .vscode/ rocksdb sequencer_runner/data/ -storage.json \ No newline at end of file +storage.json +result diff --git a/Cargo.lock b/Cargo.lock index 160cefa3..c7f48b21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -380,6 +380,18 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "any_spawner" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1384d3fe1eecb464229fcf6eebb72306591c56bf27b373561489458a7c73027d" +dependencies = [ + "futures", + "thiserror 2.0.17", + "tokio", + "wasm-bindgen-futures", +] + [[package]] name = "anyhow" version = "1.0.100" @@ -801,6 +813,23 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" + [[package]] name = "async-stream" version = "0.3.6" @@ -840,6 +869,36 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "attribute-derive" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05832cdddc8f2650cc2cc187cc2e952b8c133a48eb055f35211f61ee81502d77" +dependencies = [ + "attribute-derive-macro", + "derive-where", + "manyhow", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7cdbbd4bd005c5d3e2e9c885e6fa575db4f4a3572335b974d8db853b6beb61" +dependencies = [ + "collection_literals", + "interpolator", + "manyhow", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn 2.0.111", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -853,7 +912,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", "bytes", "futures-util", "http 1.4.0", @@ -862,7 +921,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -880,6 +939,43 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +dependencies = [ + "axum-core 0.5.6", + "base64", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.4.0", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "multer", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "axum-core" version = "0.4.5" @@ -901,12 +997,37 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "base-x" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + [[package]] name = "base16ct" version = "0.2.0" @@ -919,7 +1040,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" dependencies = [ - "const-str", + "const-str 0.4.3", "match-lookup", ] @@ -946,9 +1067,14 @@ name = "bedrock_client" version = "0.1.0" dependencies = [ "anyhow", + "futures", + "log", + "logos-blockchain-chain-broadcast-service", "logos-blockchain-common-http-client", "logos-blockchain-core", "reqwest", + "serde", + "tokio-retry", ] [[package]] @@ -1126,9 +1252,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" dependencies = [ "serde", ] @@ -1184,6 +1310,25 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "cbindgen" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befbfd072a8e81c02f8c507aefce431fe5e7d051f83d48a23ffc9b9fe5a11799" +dependencies = [ + "clap", + "heck", + "indexmap 2.12.1", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.111", + "tempfile", + "toml 0.9.11+spec-1.1.0", +] + [[package]] name = "cc" version = "1.2.49" @@ -1329,6 +1474,23 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "codee" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9dbbdc4b4d349732bc6690de10a9de952bd39ba6a065c586e26600b6b0b91f5" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "collection_literals" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2550f75b8cfac212855f6b1885455df8eaee8fe8e246b647d69146142e016084" + [[package]] name = "colorchoice" version = "1.0.4" @@ -1354,6 +1516,7 @@ dependencies = [ "borsh", "hex", "log", + "logos-blockchain-common-http-client", "nssa", "nssa_core", "reqwest", @@ -1361,6 +1524,29 @@ dependencies = [ "serde_json", "sha2", "thiserror 2.0.17", + "url", +] + +[[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 = "config" +version = "0.15.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +dependencies = [ + "convert_case 0.6.0", + "pathdiff", + "serde_core", + "toml 0.9.11+spec-1.1.0", + "winnow", ] [[package]] @@ -1376,6 +1562,26 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +dependencies = [ + "log", + "web-sys", +] + [[package]] name = "const-hex" version = "1.17.0" @@ -1400,12 +1606,53 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" +[[package]] +name = "const-str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0664d2867b4a32697dfe655557f5c3b187e9b605b38612a748e5ec99811d160" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "const_str_slice_concat" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67855af358fcb20fac58f9d714c94e2b228fe5694c1c9b4ead4a366343eda1b" + [[package]] name = "convert_case" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "convert_case" version = "0.8.0" @@ -1643,6 +1890,20 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.9.0" @@ -1666,7 +1927,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] @@ -1701,6 +1962,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -1824,6 +2096,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "drain_filter_polyfill" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" + [[package]] name = "duplicate" version = "2.0.1" @@ -1899,6 +2177,16 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "either_of" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216d23e0ec69759a17f05e1c553f3a6870e5ec73420fbb07807a6f34d5d1d5a4" +dependencies = [ + "paste", + "pin-project-lite", +] + [[package]] name = "elf" version = "0.7.4" @@ -1992,6 +2280,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1731451909bde27714eacba19c2566362a7f35224f52b153d3f42cf60f72472" + [[package]] name = "errno" version = "0.3.14" @@ -2002,6 +2296,27 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "example_program_deployment_methods" version = "0.1.0" @@ -2019,6 +2334,33 @@ dependencies = [ "risc0-zkvm", ] +[[package]] +name = "explorer_service" +version = "0.1.0" +dependencies = [ + "axum 0.8.8", + "chrono", + "clap", + "console_error_panic_hook", + "console_log", + "env_logger", + "hex", + "indexer_service_protocol", + "indexer_service_rpc", + "jsonrpsee", + "leptos", + "leptos_axum", + "leptos_meta", + "leptos_router", + "log", + "serde", + "tokio", + "url", + "urlencoding", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -2160,6 +2502,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -2198,7 +2541,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ "gloo-timers", - "send_wrapper", + "send_wrapper 0.4.0", ] [[package]] @@ -2337,7 +2680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" dependencies = [ "cfg-if", - "dashmap", + "dashmap 5.5.3", "futures", "futures-timer", "no-std-compat", @@ -2361,6 +2704,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "guardian" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" + [[package]] name = "h2" version = "0.3.27" @@ -2508,6 +2857,15 @@ version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89e8d20b3799fa526152a5301a771eaaad80857f83e01b23216ceaafb2d9280" +[[package]] +name = "html-escape" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +dependencies = [ + "utf8-width", +] + [[package]] name = "http" version = "0.2.12" @@ -2552,6 +2910,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -2570,6 +2934,22 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +[[package]] +name = "hydration_context" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8714ae4adeaa846d838f380fbd72f049197de629948f91bf045329e0cf0a283" +dependencies = [ + "futures", + "js-sys", + "once_cell", + "or_poisoned", + "pin-project-lite", + "serde", + "throw_error", + "wasm-bindgen", +] + [[package]] name = "hyper" version = "1.8.1" @@ -2645,7 +3025,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -2791,6 +3171,23 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" +[[package]] +name = "indexer_core" +version = "0.1.0" +dependencies = [ + "anyhow", + "bedrock_client", + "borsh", + "common", + "futures", + "log", + "logos-blockchain-core", + "serde", + "serde_json", + "tokio", + "url", +] + [[package]] name = "indexer_service" version = "0.1.0" @@ -2888,16 +3285,35 @@ dependencies = [ "env_logger", "futures", "hex", + "indexer_core", "key_protocol", "log", "nssa", "nssa_core", "sequencer_core", "sequencer_runner", + "serde_json", "tempfile", "token_core", "tokio", + "url", "wallet", + "wallet-ffi", +] + +[[package]] +name = "interpolator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" + +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", ] [[package]] @@ -3288,6 +3704,228 @@ dependencies = [ "spin", ] +[[package]] +name = "leptos" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9569fc37575a5d64c0512145af7630bf651007237ef67a8a77328199d315bb" +dependencies = [ + "any_spawner", + "base64", + "cfg-if", + "either_of", + "futures", + "getrandom 0.3.4", + "hydration_context", + "leptos_config", + "leptos_dom", + "leptos_hot_reload", + "leptos_macro", + "leptos_server", + "oco_ref", + "or_poisoned", + "paste", + "rand 0.9.2", + "reactive_graph", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "serde_qs", + "server_fn", + "slotmap", + "tachys", + "thiserror 2.0.17", + "throw_error", + "typed-builder 0.23.2", + "typed-builder-macro 0.23.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm_split_helpers", + "web-sys", +] + +[[package]] +name = "leptos_axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0caa95760f87f3067e05025140becefdbdfd36cbc2adac4519f06e1f1edf4af" +dependencies = [ + "any_spawner", + "axum 0.8.8", + "dashmap 6.1.0", + "futures", + "hydration_context", + "leptos", + "leptos_integration_utils", + "leptos_macro", + "leptos_meta", + "leptos_router", + "parking_lot", + "server_fn", + "tachys", + "tokio", + "tower 0.5.2", + "tower-http", +] + +[[package]] +name = "leptos_config" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071fc40aeb9fcab885965bad1887990477253ad51f926cd19068f45a44c59e89" +dependencies = [ + "config", + "regex", + "serde", + "thiserror 2.0.17", + "typed-builder 0.21.2", +] + +[[package]] +name = "leptos_dom" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78f4330c88694c5575e0bfe4eecf81b045d14e76a4f8b00d5fd2a63f8779f895" +dependencies = [ + "js-sys", + "or_poisoned", + "reactive_graph", + "send_wrapper 0.6.0", + "tachys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_hot_reload" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d61ec3e1ff8aaee8c5151688550c0363f85bc37845450764c31ff7584a33f38" +dependencies = [ + "anyhow", + "camino", + "indexmap 2.12.1", + "parking_lot", + "proc-macro2", + "quote", + "rstml", + "serde", + "syn 2.0.111", + "walkdir", +] + +[[package]] +name = "leptos_integration_utils" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13cccc9305df53757bae61bf15641bfa6a667b5f78456ace4879dfe0591ae0e8" +dependencies = [ + "futures", + "hydration_context", + "leptos", + "leptos_config", + "leptos_meta", + "leptos_router", + "reactive_graph", +] + +[[package]] +name = "leptos_macro" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86ffd2e9cf3e264e9b3e16bdb086cefa26bd0fa7bc6a26b0cc5f6c1fd3178ed" +dependencies = [ + "attribute-derive", + "cfg-if", + "convert_case 0.10.0", + "html-escape", + "itertools 0.14.0", + "leptos_hot_reload", + "prettyplease", + "proc-macro-error2", + "proc-macro2", + "quote", + "rstml", + "rustc_version", + "server_fn_macro", + "syn 2.0.111", + "uuid", +] + +[[package]] +name = "leptos_meta" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d489e38d3f541e9e43ecc2e3a815527840345a2afca629b3e23fcc1dd254578" +dependencies = [ + "futures", + "indexmap 2.12.1", + "leptos", + "or_poisoned", + "send_wrapper 0.6.0", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_router" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e573711f2fb9ab5d655ec38115220d359eaaf1dcb93cc0ea624543b6dba959" +dependencies = [ + "any_spawner", + "either_of", + "futures", + "gloo-net", + "js-sys", + "leptos", + "leptos_router_macro", + "or_poisoned", + "percent-encoding", + "reactive_graph", + "rustc_version", + "send_wrapper 0.6.0", + "tachys", + "thiserror 2.0.17", + "url", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_router_macro" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "409c0bd99f986c3cfa1a4db2443c835bc602ded1a12784e22ecb28c3ed5a2ae2" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "leptos_server" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf1045af93050bf3388d1c138426393fc131f6d9e46a65519da884c033ed730" +dependencies = [ + "any_spawner", + "base64", + "codee", + "futures", + "hydration_context", + "or_poisoned", + "reactive_graph", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "server_fn", + "tachys", +] + [[package]] name = "libc" version = "0.2.178" @@ -3370,6 +4008,12 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "linear-map" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" + [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -3629,7 +4273,7 @@ name = "logos-blockchain-http-api-common" version = "0.1.0" source = "git+https://github.com/logos-blockchain/logos-blockchain.git#451df112f8574aea2840d04fffb7e16e76d24f42" dependencies = [ - "axum", + "axum 0.7.9", "governor", "logos-blockchain-core", "logos-blockchain-key-management-system-keys", @@ -3906,6 +4550,29 @@ dependencies = [ "libc", ] +[[package]] +name = "manyhow" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587" +dependencies = [ + "manyhow-macros", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "manyhow-macros" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", +] + [[package]] name = "match-lookup" version = "0.1.1" @@ -3923,6 +4590,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "maybe-async" version = "0.2.10" @@ -3980,6 +4653,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3998,6 +4681,23 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.4.0", + "httparse", + "memchr", + "mime", + "spin", + "version_check", +] + [[package]] name = "multiaddr" version = "0.18.2" @@ -4055,6 +4755,12 @@ dependencies = [ "tempfile", ] +[[package]] +name = "next_tuple" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60993920e071b0c9b66f14e2b32740a4e27ffc82854dcd72035887f336a09a28" + [[package]] name = "nimue" version = "0.1.1" @@ -4139,6 +4845,7 @@ dependencies = [ "test_program_methods", "token_core", "thiserror 2.0.17", + "token_core", ] [[package]] @@ -4185,9 +4892,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" [[package]] name = "num-integer" @@ -4219,6 +4926,16 @@ dependencies = [ "libm", ] +[[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.5" @@ -4249,6 +4966,16 @@ dependencies = [ "malloc_buf", ] +[[package]] +name = "oco_ref" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed0423ff9973dea4d6bd075934fdda86ebb8c05bdf9d6b0507067d4a1226371d" +dependencies = [ + "serde", + "thiserror 2.0.17", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -4334,6 +5061,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "or_poisoned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c04f5d74368e4d0dfe06c45c8627c81bd7c317d52762d118fb9b3076f6420fd" + [[package]] name = "overwatch" version = "0.1.0" @@ -4361,6 +5094,12 @@ dependencies = [ "syn 2.0.111", ] +[[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.5" @@ -4390,6 +5129,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -4518,6 +5263,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.111", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -4549,6 +5304,17 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "proc-macro-utils" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + [[package]] name = "proc-macro2" version = "1.0.103" @@ -4568,6 +5334,7 @@ dependencies = [ "quote", "syn 2.0.111", "version_check", + "yansi", ] [[package]] @@ -4703,7 +5470,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] @@ -4717,6 +5484,28 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "quote-use" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9619db1197b497a36178cfc736dc96b271fe918875fbf1344c436a7e93d0321e" +dependencies = [ + "quote", + "quote-use-macros", +] + +[[package]] +name = "quote-use-macros" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "r-efi" version = "5.3.0" @@ -4800,6 +5589,60 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "reactive_graph" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f0df355582937223ea403e52490201d65295bd6981383c69bfae5a1f8730c2" +dependencies = [ + "any_spawner", + "async-lock", + "futures", + "guardian", + "hydration_context", + "indexmap 2.12.1", + "or_poisoned", + "paste", + "pin-project-lite", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "serde", + "slotmap", + "thiserror 2.0.17", + "web-sys", +] + +[[package]] +name = "reactive_stores" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35372f05664a62a3dd389503371a15b8feb3396f99f6ec000de651fddb030942" +dependencies = [ + "dashmap 6.1.0", + "guardian", + "itertools 0.14.0", + "or_poisoned", + "paste", + "reactive_graph", + "reactive_stores_macro", + "rustc-hash", + "send_wrapper 0.6.0", +] + +[[package]] +name = "reactive_stores_macro" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa40919eb2975100283b2a70e68eafce1e8bcf81f0622ff168e4c2b3f8d46bb" +dependencies = [ + "convert_case 0.8.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "redox_syscall" version = "0.5.18" @@ -5237,10 +6080,25 @@ dependencies = [ ] [[package]] -name = "ruint" -version = "1.17.0" +name = "rstml" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" +checksum = "61cf4616de7499fc5164570d40ca4e1b24d231c6833a88bff0fe00725080fd56" +dependencies = [ + "derive-where", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.111", + "syn_derive", + "thiserror 2.0.17", +] + +[[package]] +name = "ruint" +version = "1.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" dependencies = [ "borsh", "proptest", @@ -5388,7 +6246,7 @@ dependencies = [ "strum", "tempfile", "thiserror 2.0.17", - "toml", + "toml 0.8.23", "yaml-rust2", ] @@ -5540,6 +6398,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +dependencies = [ + "futures-core", +] + [[package]] name = "sequencer_core" version = "0.1.0" @@ -5680,6 +6547,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_qs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3faaf9e727533a19351a43cc5a8de957372163c7d35cc48c90b75cdda13c352" +dependencies = [ + "percent-encoding", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -5689,6 +6567,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -5742,6 +6629,71 @@ dependencies = [ "serde", ] +[[package]] +name = "server_fn" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353d02fa2886cd8dae0b8da0965289fa8f2ecc7df633d1ce965f62fdf9644d29" +dependencies = [ + "axum 0.8.8", + "base64", + "bytes", + "const-str 0.7.1", + "const_format", + "dashmap 6.1.0", + "futures", + "gloo-net", + "http 1.4.0", + "http-body-util", + "hyper", + "inventory", + "js-sys", + "pin-project-lite", + "rustc_version", + "rustversion", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "serde_qs", + "server_fn_macro_default", + "thiserror 2.0.17", + "throw_error", + "tokio", + "tower 0.5.2", + "tower-layer", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "950b8cfc9ff5f39ca879c5a7c5e640de2695a199e18e424c3289d0964cabe642" +dependencies = [ + "const_format", + "convert_case 0.8.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.111", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro_default" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63eb08f80db903d3c42f64e60ebb3875e0305be502bdc064ec0a0eab42207f00" +dependencies = [ + "server_fn_macro", + "syn 2.0.111", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5795,6 +6747,15 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.15.1" @@ -5910,6 +6871,7 @@ version = "0.1.0" dependencies = [ "borsh", "common", + "nssa", "rocksdb", "thiserror 2.0.17", ] @@ -5969,6 +6931,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb066a04799e45f5d582e8fc6ec8e6d6896040d00898eb4e6a835196815b219" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -6010,6 +6984,40 @@ dependencies = [ "libc", ] +[[package]] +name = "tachys" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b2db11e455f7e84e2cc3e76f8a3f3843f7956096265d5ecff781eabe235077" +dependencies = [ + "any_spawner", + "async-trait", + "const_str_slice_concat", + "drain_filter_polyfill", + "either_of", + "erased", + "futures", + "html-escape", + "indexmap 2.12.1", + "itertools 0.14.0", + "js-sys", + "linear-map", + "next_tuple", + "oco_ref", + "or_poisoned", + "parking_lot", + "paste", + "reactive_graph", + "reactive_stores", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "slotmap", + "throw_error", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "tempfile" version = "3.23.0" @@ -6121,31 +7129,40 @@ dependencies = [ ] [[package]] -name = "time" -version = "0.3.44" +name = "throw_error" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +checksum = "dc0ed6038fcbc0795aca7c92963ddda636573b956679204e044492d2b13c8f64" +dependencies = [ + "pin-project-lite", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.24" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -6240,6 +7257,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.4" @@ -6262,6 +7290,18 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -6283,11 +7323,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_edit 0.22.27", ] +[[package]] +name = "toml" +version = "0.9.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +dependencies = [ + "indexmap 2.12.1", + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -6299,9 +7354,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.4+spec-1.0.0" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3cea6b2aa3b910092f6abd4053ea464fab5f9c170ba5e9a6aead16ec4af2b6" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -6314,7 +7369,7 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.12.1", "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", "winnow", @@ -6327,16 +7382,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap 2.12.1", - "toml_datetime 0.7.4+spec-1.0.0", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.5+spec-1.0.0" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c03bee5ce3696f31250db0bbaff18bc43301ce0e8db2ed1f07cbb2acf89984c" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] @@ -6347,6 +7402,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + [[package]] name = "tower" version = "0.4.13" @@ -6382,14 +7443,24 @@ checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags 2.10.0", "bytes", + "futures-core", "futures-util", "http 1.4.0", "http-body", + "http-body-util", + "http-range-header", + "httpdate", "iri-string", + "mime", + "mime_guess", + "percent-encoding", "pin-project-lite", + "tokio", + "tokio-util", "tower 0.5.2", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -6410,7 +7481,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3790eac6ad3fb8d9d96c2b040ae06e2517aa24b067545d1078b96ae72f7bb9a7" dependencies = [ - "axum", + "axum 0.7.9", "forwarded-header-value", "governor", "http 1.4.0", @@ -6484,6 +7555,63 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[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.4.0", + "httparse", + "log", + "rand 0.9.2", + "sha1", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "typed-builder" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fef81aec2ca29576f9f6ae8755108640d0a86dd3161b2e8bca6cfa554e98f77d" +dependencies = [ + "typed-builder-macro 0.21.2", +] + +[[package]] +name = "typed-builder" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31aa81521b70f94402501d848ccc0ecaa8f93c8eb6999eb9747e72287757ffda" +dependencies = [ + "typed-builder-macro 0.23.2", +] + +[[package]] +name = "typed-builder-macro" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecb9ecf7799210407c14a8cfdfe0173365780968dc57973ed082211958e0b18" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "typed-builder-macro" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "typenum" version = "1.19.0" @@ -6496,6 +7624,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.22" @@ -6569,6 +7703,24 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -6581,6 +7733,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.1" @@ -6639,6 +7802,20 @@ dependencies = [ "sha2", "token_core", "tokio", + "url", +] + +[[package]] +name = "wallet-ffi" +version = "0.1.0" +dependencies = [ + "cbindgen", + "common", + "nssa", + "nssa_core", + "tempfile", + "tokio", + "wallet", ] [[package]] @@ -6736,6 +7913,28 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm_split_helpers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a114b3073258dd5de3d812cdd048cca6842342755e828a14dbf15f843f2d1b84" +dependencies = [ + "async-once-cell", + "wasm_split_macros", +] + +[[package]] +name = "wasm_split_macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56481f8ed1a9f9ae97ea7b08a5e2b12e8adf9a7818a6ba952b918e09c7be8bf0" +dependencies = [ + "base16", + "quote", + "sha2", + "syn 2.0.111", +] + [[package]] name = "web-sys" version = "0.3.83" @@ -7139,6 +8338,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + [[package]] name = "yaml-rust2" version = "0.10.4" @@ -7150,6 +8355,12 @@ dependencies = [ "hashlink", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.8.1" diff --git a/Cargo.toml b/Cargo.toml index ffc2a488..d2f6064f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,6 @@ +[workspace.package] +license = "MIT or Apache-2.0" + [workspace] resolver = "3" members = [ @@ -6,6 +9,7 @@ members = [ "key_protocol", "mempool", "wallet", + "wallet-ffi", "common", "nssa", "nssa/core", @@ -19,6 +23,9 @@ members = [ "indexer_service", "indexer_service/protocol", "indexer_service/rpc", + "explorer_service", + "programs/token/core", + "programs/token", "program_methods", "program_methods/guest", "test_program_methods", @@ -27,6 +34,7 @@ members = [ "examples/program_deployment/methods", "examples/program_deployment/methods/guest", "bedrock_client", + "indexer_core", ] [workspace.dependencies] @@ -43,12 +51,14 @@ indexer_service = { path = "indexer_service" } indexer_service_protocol = { path = "indexer_service/protocol" } indexer_service_rpc = { path = "indexer_service/rpc" } wallet = { path = "wallet" } +wallet-ffi = { path = "wallet-ffi" } token_core = { path = "programs/token/core" } token_program = { path = "programs/token" } amm_core = { path = "programs/amm/core" } amm_program = { path = "programs/amm" } test_program_methods = { path = "test_program_methods" } bedrock_client = { path = "bedrock_client" } +indexer_core = { path = "indexer_core" } tokio = { version = "1.28.2", features = [ "net", @@ -93,12 +103,14 @@ chrono = "0.4.41" borsh = "1.5.7" base58 = "0.2.0" itertools = "0.14.0" -url = "2.5.4" +url = { version = "2.5.4", features = ["serde"] } +tokio-retry = "0.3.0" schemars = "1.2.0" logos-blockchain-common-http-client = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } logos-blockchain-key-management-system-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } logos-blockchain-core = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } +logos-blockchain-chain-broadcast-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } rocksdb = { version = "0.24.0", default-features = false, features = [ "snappy", @@ -118,3 +130,10 @@ actix-web = { version = "=4.1.0", default-features = false, features = [ ] } clap = { version = "4.5.42", features = ["derive", "env"] } reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"] } + +# Profile for leptos WASM release builds +[profile.wasm-release] +inherits = "release" +opt-level = 'z' +lto = true +codegen-units = 1 diff --git a/LEZ testnet v0.1 tutorials/amm.md b/LEZ testnet v0.1 tutorials/amm.md new file mode 100644 index 00000000..60751517 --- /dev/null +++ b/LEZ testnet v0.1 tutorials/amm.md @@ -0,0 +1,109 @@ +# Automated Market Maker (AMM) + +This tutorial covers the AMM program in LEZ. The AMM manages liquidity pools and enables swaps between custom tokens. By the end, you will have practiced: +1. Creating a liquidity pool for a token pair. +2. Swapping tokens. +3. Withdrawing liquidity from the pool. +4. Adding liquidity to the pool. + +## 1. Creating a liquidity pool for a token pair + +We start by creating a pool for the tokens created earlier. In return for providing liquidity, you receive liquidity provider (LP) tokens. LP tokens represent your share of the pool and are required to withdraw liquidity later. + +> [!NOTE] +> The AMM does not currently charge swap fees or distribute rewards to liquidity providers. LP tokens therefore represent only a proportional share of the pool reserves. Fee support will be added in future versions. + +### a. Create an LP holding account + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf +``` + +### b. Initialize the pool + +Deposit tokens A and B and specify the account that will receive LP tokens: + +```bash +wallet amm new \ + --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ + --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ + --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ + --balance-a 100 \ + --balance-b 200 +``` + +> [!Important] +> The LP holding account is owned by the token program, so LP tokens are managed using the same token infrastructure as regular tokens. + +```bash +wallet account get --account-id Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf + +# Output: +Holding account owned by token program +{"account_type":"Token holding","definition_id":"7BeDS3e28MA5Err7gBswmR1fUKdHXqmUpTefNPu3pJ9i","balance":100} +``` + +> [!Tip] +> If you inspect the `user-holding-a` and `user-holding-b` accounts, you will see that 100 and 200 tokens were deducted. Those tokens now reside in the pool and are available for swaps by any user. + +## 2. Swapping + +Use `wallet amm swap` to perform a token swap: + +```bash +wallet amm swap \ + --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ + --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ + # The amount of tokens to swap + --amount-in 5 \ + # The minimum number of tokens expected in return + --min-amount-out 8 \ + # The definition ID of the token being provided to the swap + # In this case, we are swapping from TOKENA to TOKENB, and so this is the definition ID of TOKENA + --token-definition 4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 +``` + +Once executed, 5 tokens are deducted from the Token A holding account and the corresponding amount (computed by the pool’s pricing function) is credited to the Token B holding account. + +## 3. Withdrawing liquidity from the pool + +Liquidity providers can withdraw assets by redeeming (burning) LP tokens. The amount received is proportional to the share of LP tokens redeemed relative to the total LP supply. + +Use `wallet amm remove-liquidity`: + +```bash +wallet amm remove-liquidity \ + --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ + --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ + --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ + --balance-lp 20 \ + --min-amount-a 1 \ + --min-amount-b 1 +``` + +> [!Important] +> This burns `balance-lp` LP tokens from the user’s LP holding account. In return, the AMM transfers tokens A and B from the pool vaults to the user’s holding accounts, based on current reserves. +> The `min-amount-a` and `min-amount-b` parameters set the minimum acceptable outputs. If the computed amounts fall below either threshold, the instruction fails to protect against unfavorable pool changes. + +## 4. Adding liquidity to the pool + +To add liquidity, deposit tokens A and B in the ratio implied by current pool reserves. In return, the AMM mints new LP tokens that represent your proportional share. + +Use `wallet amm add-liquidity`: + +```bash +wallet amm add-liquidity \ + --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ + --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ + --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ + --min-amount-lp 1 \ + --max-amount-a 10 \ + --max-amount-b 10 +``` + +> [!Important] +> `max-amount-a` and `max-amount-b` cap how many tokens A and B can be taken from the user’s accounts. The AMM computes the required amounts based on the pool’s reserve ratio. +> `min-amount-lp` sets the minimum LP tokens to mint. If the computed LP amount falls below this threshold, the instruction fails. diff --git a/LEZ testnet v0.1 tutorials/custom-tokens.md b/LEZ testnet v0.1 tutorials/custom-tokens.md new file mode 100644 index 00000000..ea647696 --- /dev/null +++ b/LEZ testnet v0.1 tutorials/custom-tokens.md @@ -0,0 +1,159 @@ +This tutorial focuses on custom tokens using the Token program. As of now, you have used the authenticated-transfers program for native tokens. The Token program is for creating and managing custom tokens. By the end, you will have practiced: +1. Creating new tokens. +2. Transferring custom tokens. + +> [!Important] +> The Token program is a single program that creates and manages all tokens, so you do not deploy a new program for each token. +> Token program accounts fall into two types: +> - Token definition accounts: store token metadata such as name and total supply. This account is the token’s identifier. +> - Token holding accounts: store balances and the definition ID they belong to. + +The CLI provides commands to execute the Token program. Run `wallet token` to see the options: + +```bash +Commands: + new Produce a new token + send Send tokens from one account to another with variable privacy + help Print this message or the help of the given subcommand(s) +``` + +## 1. Creating new tokens + +Use `wallet token new` to execute the `New` function of the Token program. The command expects: +- A token name. +- A total supply. +- Two uninitialized accounts: +- One for the token definition account. +- One for the token holding account that receives the initial supply. + +### a. Public definition account and public supply account + +1. Create two new public accounts: + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 +``` + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw +``` + +2. Create the token (Token A): + +```bash +wallet token new \ + --name TOKENA \ + --total-supply 1337 \ + --definition-account-id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 \ + --supply-account-id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw +``` + +3. Inspect the initialized accounts: + +```bash +wallet account get --account-id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 + +# Output: +Definition account owned by token program +{"account_type":"Token definition","name":"TOKENA","total_supply":1337} +``` + +```bash +wallet account get --account-id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw + +# Output: +Holding account owned by token program +{"account_type":"Token holding","definition_id":"4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7","balance":1337} +``` + +### b. Public definition account and private supply account + +1. Create fresh accounts for this example: + +> [!Important] +> You cannot reuse the accounts from the previous example. Create new ones here. + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii +``` + +```bash +wallet account new private + +# Output: +Generated new account with account_id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF +With npk 6a2dfe433cf28e525aa0196d719be3c16146f7ee358ca39595323f94fde38f93 +With ipk 03d59abf4bee974cc12ddb44641c19f0b5441fef39191f047c988c29a77252a577 +``` + +2. Create the token (Token B): + +```bash +wallet token new \ + --name TOKENB \ + --total-supply 7331 \ + --definition-account-id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii \ + --supply-account-id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF +``` + +3. Inspect the accounts: + +```bash +wallet account get --account-id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii + +# Output: +Definition account owned by token program +{"account_type":"Token definition","name":"TOKENB","total_supply":7331} +``` + +```bash +wallet account get --account-id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF + +# Output: +Holding account owned by token program +{"account_type":"Token holding","definition_id":"GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii","balance":7331} +``` + +> [!Important] +> As a private account, the supply account is visible only in your local wallet storage. + +## 2. Custom token transfers + +The Token program can move balances between token holding accounts. If the recipient account is uninitialized, the token program will automatically claim it. Use `wallet token send` to execute a transfer. + +### a. Create a recipient account + +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 +``` + +### b. Send 1000 TOKENB to the recipient + +```bash +wallet token send \ + --from Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF \ + --to Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ + --amount 1000 +``` + +### c. Inspect the recipient account + +```bash +wallet account get --account-id Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 + +# Output: +Holding account owned by token program +{"account_type":"Token holding","definition_id":"GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii","balance":1000} +``` diff --git a/LEZ testnet v0.1 tutorials/token-transfer.md b/LEZ testnet v0.1 tutorials/token-transfer.md new file mode 100644 index 00000000..8019ae56 --- /dev/null +++ b/LEZ testnet v0.1 tutorials/token-transfer.md @@ -0,0 +1,250 @@ +This tutorial walks through native token transfers between public and private accounts using the Authenticated-Transfers program. You will create and initialize accounts, fund them with the Pinata program, and run transfers across different privacy combinations. By the end, you will have practiced: +1. Public account creation and initialization. +2. Account funding through the Pinata program. +3. Native token transfers between public accounts. +4. Private account creation. +5. Native token transfer from a public account to a private account. +6. Native token transfer from a public account to a private account owned by someone else. + +--- + +The CLI provides commands to manage accounts. Run `wallet account` to see the options available: +```bash +Commands: + get Get account data + new Produce new public or private account + sync-private Sync private accounts + help Print this message or the help of the given subcommand(s) +``` + +## 1. Public account creation and initialization +> [!Important] +> Public accounts live on-chain and are identified by a 32-byte Account ID. Running `wallet account new public` generates a fresh keypair for the signature scheme used in LEZ. +> The account ID is derived from the public key, and the private key signs transactions and authorizes program executions. +> The CLI can create both public and private accounts. + +### a. New public account creation +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ +``` +> [!Tip] +> Save this account ID. You will use it in later commands. + +### b. Account initialization + +To query the account’s current status, run: + +```bash +# Replace the id with yours +wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ + +# Output: +Account is Uninitialized +``` + +In this example, we initialize the account for the authenticated-transfer program, which manages native token transfers and enforces authenticated debits. + +1. Initialize the account: +```bash +# This command submits a public transaction executing the `init` function of the +# authenticated-transfer program. The wallet polls the sequencer until the +# transaction is included in a block, which may take several seconds. +wallet auth-transfer init --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ +``` + +2. Check the updated account status: +```bash +wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ + +# Output: +Account owned by authenticated-transfer program +{"balance":0} +``` + +> [!NOTE] +> New accounts start uninitialized, meaning no program owns them yet. Any program may claim an uninitialized account; once claimed, that program owns it. +> Owned accounts can only be modified through executions of the owning program. The only exception is native-token credits: any program may credit native tokens to any account. +> Debiting native tokens must always be performed by the owning program. + +## 2. Account funding through the Piñata program +Now that the account is initialized under the authenticated-tansfer program, fund it using the testnet Piñata program. + +```bash +# Replace with your id +wallet pinata claim --to Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ +``` + +After the claim succeeds, the account is funded: + +```bash +wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ + +# Output: +Account owned by authenticated-transfer program +{"balance":150} +``` + +## 3. Native token transfers between public accounts +LEZ includes a program for managing native tokens. Run `wallet auth-transfer` to see the available commands: +```bash +Commands: + init Initialize account under the authenticated-transfer program + send Send native tokens from one account to another with variable privacy + help Print this message or the help of the given subcommand(s) +``` + +We already used `init`. Now use `send` to execute a transfer. + +### a. Create a recipient account +```bash +wallet account new public + +# Output: +Generated new account with account_id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS +``` + +> [!NOTE] +> The new account is uninitialized. The authenticated-transfer program will claim any uninitialized account used in a transfer, so manual initialization isn’t required. + +### b. Send 37 tokens to the new account +```bash +wallet auth-transfer send \ + --from Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ \ + --to Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ + --amount 37 +``` + +### c. Check both accounts +```bash +# Sender account (use your sender ID) +wallet account get --account-id Public/HrA8TVjBS8UVf9akV7LRhyh6k4c7F6PS7PvqgtPmKAT8 + +# Output: +Account owned by authenticated-transfer program +{"balance":113} +``` + +```bash +# Recipient account +wallet account get --account-id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS + +# Output: +Account owned by authenticated-transfer program +{"balance":37} +``` + +## 4. Private account creation + +> [!Important] +> Private accounts are structurally identical to public accounts, but their values are stored off-chain. On-chain, only a 32-byte commitment is recorded. +> Transactions include encrypted private values so the owner can recover them, and the decryption keys are never shared. +> Private accounts use two keypairs: nullifier keys for privacy-preserving executions and viewing keys for encrypting and decrypting values. +> The private account ID is derived from the nullifier public key. +> Private accounts can be initialized by anyone, but once initialized they can only be modified by the owner’s keys. +> Updates include a new commitment and a nullifier for the old state, which prevents linkage between versions. + +### a. Create a private account + +```bash +wallet account new private + +# Output: +Generated new account with account_id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL +With npk e6366f79d026c8bd64ae6b3d601f0506832ec682ab54897f205fffe64ec0d951 +With ipk 02ddc96d0eb56e00ce14994cfdaec5ae1f76244180a919545983156e3519940a17 +``` + +> [!Tip] +> Focus on the account ID for now. The `npk` and `ipk` values are stored locally and used to build privacy-preserving transactions. The private account ID is derived from `npk`. + +Just like public accounts, new private accounts start out uninitialized: + +```bash +wallet account get --account-id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL + +# Output: +Account is Uninitialized +``` + +> [!Important] +> Private accounts are never visible to the network. They exist only in your local wallet storage. + +## 5. Native token transfer from a public account to a private account + +> [!Important] +> Sending tokens to an uninitialized private account causes the authenticated-transfer program to claim it, just like with public accounts. Program logic is the same regardless of account type. + +### a. Send 17 tokens to the private account + +> [!Note] +> The syntax matches public-to-public transfers, but the recipient is a private ID. This runs locally, generates a proof, and submits it to the sequencer. It may take 30 seconds to 4 minutes. + +```bash +wallet auth-transfer send \ + --from Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ + --to Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL \ + --amount 17 +``` + +### b. Check both accounts + +```bash +# Public sender account +wallet account get --account-id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS + +# Output: +Account owned by authenticated-transfer program +{"balance":20} +``` + +```bash +# Private recipient account +wallet account get --account-id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL + +# Output: +Account owned by authenticated-transfer program +{"balance":17} +``` + +> [!Note] +> The last command does not query the network. It works offline because private account data is stored locally. Other users cannot read your private balances. + +> [!Caution] +> Private accounts can only be modified by their owner’s keys. The exception is initialization: any user can initialize an uninitialized private account. This enables transfers to a private account owned by someone else, as long as that account is uninitialized. + +## 6. Native token transfer from a public account to a private account owned by someone else + +> [!Important] +> We’ll simulate transferring to someone else by creating a new private account we own and treating it as if it belonged to another user. + +### a. Create a new uninitialized private account + +```bash +wallet account new private + +# Output: +Generated new account with account_id Private/AukXPRBmrYVqoqEW2HTs7N3hvTn3qdNFDcxDHVr5hMm5 +With npk 0c95ebc4b3830f53da77bb0b80a276a776cdcf6410932acc718dcdb3f788a00e +With ipk 039fd12a3674a880d3e917804129141e4170d419d1f9e28a3dcf979c1f2369cb72 +``` + +> [!Tip] +> Ignore the private account ID here and use the `npk` and `ipk` values to send to a foreign private account. + +```bash +wallet auth-transfer send \ + --from Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ + --to-npk 0c95ebc4b3830f53da77bb0b80a276a776cdcf6410932acc718dcdb3f788a00e \ + --to-ipk 039fd12a3674a880d3e917804129141e4170d419d1f9e28a3dcf979c1f2369cb72 \ + --amount 3 +``` + +> [!Warning] +> This command creates a privacy-preserving transaction, which may take a few minutes. The updated values are encrypted and included in the transaction. +> Once accepted, the recipient must run `wallet account sync-private` to scan the chain for their encrypted updates and refresh local state. + +> [!Note] +> You have seen transfers between two public accounts and from a public sender to a private recipient. Transfers from a private sender, whether to a public account or to another private account, follow the same pattern. diff --git a/LEZ testnet v0.1 tutorials/wallet-setup.md b/LEZ testnet v0.1 tutorials/wallet-setup.md new file mode 100644 index 00000000..e5a43961 --- /dev/null +++ b/LEZ testnet v0.1 tutorials/wallet-setup.md @@ -0,0 +1,26 @@ +This repository includes a CLI for interacting with the Logos Blockchain. To install it, run the following command from the root of the repository: + +```bash +cargo install --path wallet --force +``` + +To check that everythin is working, run `wallet help`. + +## Available Wallet Commands + +| Command | Description | +|------------------------|-------------------------------------------------------------| +| `wallet auth-transfer` | Authenticated transfer (init, send) | +| `wallet chain-info` | Chain info queries (current-block-id, block, transaction) | +| `wallet account` | Account management (get, list, new, sync-private) | +| `wallet pinata` | Piñata faucet (claim) | +| `wallet token` | Token operations (new, send) | +| `wallet amm` | AMM operations (new, swap, add-liquidity, remove-liquidity) | +| `wallet check-health` | Health checks that the wallet is connected to the node | +| `wallet config` | Config Setup (get, set) | +| `wallet restore-keys ` | Keys restore from a given password at given `depth` | +| `wallet deploy-program`| Program deployment | +| `wallet help` | Help | + +Some completion scripts exists, see the [completions](./completions/README.md) folder. + diff --git a/README.md b/README.md index f7885be0..70d06fab 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,75 @@ -# Nescience +# Logos Execution Zone (LEZ) + +Logos Execution Zone (LEZ) is a programmable blockchain that cleanly separates public and private state while keeping them fully interoperable. Developers can build apps that operate across transparent and privacy-preserving accounts without changing their logic. Privacy is enforced by the protocol itself through zero-knowledge proofs (ZKPs), so it is always available and automatic. -Nescience State Separation Architecture (NSSA) is a programmable blockchain system that introduces a clean separation between public and private states, while keeping them fully interoperable. It lets developers build apps that can operate across both transparent and privacy-preserving accounts. Privacy is handled automatically by the protocol through zero-knowledge proofs (ZKPs). The result is a programmable blockchain where privacy comes built-in. ## Background -Typically, public blockchains maintain a fully transparent state, where the mapping from account IDs to account values is entirely visible. In NSSA, we introduce a parallel *private state*, a new layer of accounts that coexists with the public one. The public and private states can be viewed as a partition of the account ID space: accounts with public IDs are openly visible, while private accounts are accessible only to holders of the corresponding viewing keys. Consistency across both states is enforced through zero-knowledge proofs (ZKPs). +These features are provided by the Logos Execution Environment (LEE). Traditional public blockchains expose a fully transparent state: the mapping from account IDs to account values is entirely visible. LEE introduces a parallel *private state* that coexists with the public one. Together, public and private accounts form a partition of the account ID space: public IDs are visible on-chain, while private accounts are accessible only to holders of the corresponding viewing keys. Consistency across both states is enforced by ZKPs. + +Public accounts are stored on-chain as a visible map from IDs to account states, and their values are updated in place. Private accounts are never stored on-chain in raw form. Each update produces a new commitment that binds the current value while keeping it hidden. Previous commitments remain on-chain, but a nullifier set marks old versions as spent, ensuring that only the most recent private state can be used in execution. -Public accounts are represented on-chain as a visible map from IDs to account states and are modified in-place when their values change. Private accounts, by contrast, are never stored in raw form on-chain. Each update creates a new commitment, which cryptographically binds the current value of the account while preserving privacy. Commitments of previous valid versions remain on-chain, but a nullifier set is maintained to mark old versions as spent, ensuring that only the most up-to-date version of each private account can be used in any execution. ### Programmability and selective privacy -Our goal is to enable full programmability within this hybrid model, matching the flexibility and composability of public blockchains. Developers write and deploy programs in NSSA just as they would on any other blockchain. Privacy, along with the ability to execute programs involving any combination of public and private accounts, is handled entirely at the protocol level and available out of the box for all programs. From the program’s perspective, all accounts are indistinguishable. This abstraction allows developers to focus purely on business logic, while the system transparently enforces privacy and consistency guarantees. +LEZ aims to deliver full programmability in a hybrid public/private model, with the same flexibility and composability as public blockchains. Developers write and deploy programs in LEZ just as they would elsewhere. The protocol automatically supports executions that involve any combination of public and private accounts. From the program’s perspective, all accounts look the same, and privacy is enforced transparently. This lets developers focus on business logic while the system guarantees privacy and correctness. -To the best of our knowledge, this approach is unique to Nescience. Other programmable blockchains with a focus on privacy typically adopt a developer-driven model for private execution, meaning that dApp logic must explicitly handle private inputs correctly. In contrast, Nescience handles privacy at the protocol level, so developers do not need to modify their programs—private and public accounts are treated uniformly, and privacy-preserving execution is available out of the box. +To our knowledge, this design is unique to LEZ. Other privacy-focused programmable blockchains often require developers to explicitly handle private inputs inside their app logic. In LEZ, privacy is protocol-level: programs do not change, accounts are treated uniformly, and private execution works out of the box. -### Example: creating and transferring tokens across states +--- + +## Example: Creating and transferring tokens across states + +1. Token creation (public execution) + - Alice submits a transaction that executes the token program `New` function on-chain. + - A new public token definition account is created. + - The minted tokens are recorded on-chain in Alice’s public account. -1. Token creation (public execution): - - Alice submits a transaction to execute the token program `New` function on-chain. - - A new public token account is created, representing the token. - - The minted tokens are recorded on-chain and fully visible on Alice's public account. 2. Transfer from public to private (local / privacy-preserving execution) - - Alice executes the token program `Transfer` function locally, specifying a Bob’s private account as recipient. + - Alice runs the token program `Transfer` function locally, sending to Bob’s private account. - A ZKP of correct execution is generated. - - The proof is submitted to the blockchain, and validator nodes verify it. - - Alice's public account balance is modified accordingly. - - Bob’s private account and balance remain hidden, while the transfer is provably valid. + - The proof is submitted to the blockchain and verified by validators. + - Alice’s public balance is updated on-chain. + - Bob’s private balance remains hidden, while the transfer is provably correct. + 3. Transferring private to public (local / privacy-preserving execution) - - Bob executes the token program `Transfer` function locally, specifying a Charlie’s public account as recipient. + - Bob executes the token program `Transfer` function locally, sending to Charlie’s public account. - A ZKP of correct execution is generated. - - Bob’s private account and balance still remain hidden. - - Charlie's public account is modified with the new tokens added. -4. Transferring public to public (public execution): - - Alice submits a transaction to execute the token program `Transfer` function on-chain, specifying Charlie's public account as recipient. - - The execution is handled on-chain without ZKPs involved. - - Alice's and Charlie's accounts are modified according to the transaction. + - Bob’s private balance stays hidden. + - Charlie’s public account is updated on-chain. + +4. Transfer from public to public (public execution) + - Alice submits an on-chain transaction to run `Transfer`, sending to Charlie’s public account. + - Execution is handled fully on-chain without ZKPs. + - Alice’s and Charlie’s public balances are updated. + -#### Key points: -- The same token program is used in all executions. -- The difference lies in execution mode: public executions update visible accounts on-chain, while private executions rely on ZKPs. -- Validators only need to verify proofs for privacy-preserving transactions, keeping processing efficient. +### Key points: +- The same token program is used in every execution. +- The only difference is execution mode: public execution updates visible state on-chain, while private execution relies on ZKPs. +- Validators verify proofs only for privacy-preserving transactions, keeping processing efficient. -### The account’s model +--- -To achieve both state separation and full programmability, NSSA adopts a stateless program model. Programs do not hold internal state. Instead, all persistent data resides in accounts explicitly passed to the program during execution. This design enables fine-grained control over access and visibility while maintaining composability across public and private states. +## The account’s model + +To achieve both state separation and full programmability, LEZ uses a stateless program model. Programs hold no internal state. All persistent data is stored in accounts passed explicitly into each execution. This enables precise access control and visibility while preserving composability across public and private states. ### Execution types -Execution is divided into two fundamentally distinct types based on how they are processed: public execution, which is executed transparently on-chain, and private execution, which occurs off-chain. For private execution, the blockchain relies on ZKPs to verify the correctness of execution and ensure that all system invariants are preserved. +LEZ supports two execution types: +- Public execution runs transparently on-chain. +- Private execution runs off-chain and is verified on-chain with ZKPs. -Both public and private executions of the same program are enforced to use the same Risc0 VM bytecode. For public transactions, programs are executed directly on-chain like any standard RISC-V VM execution, without generating or verifying proofs. For privacy-preserving transactions, users generate Risc0 ZKPs of correct execution, and validator nodes only verify these proofs rather than re-executing the program. This design ensures that from a validator’s perspective, public transactions are processed as quickly as any RISC-V–based VM, while verification of ZKPs keeps privacy-preserving transactions efficient as well. Additionally, the system naturally supports parallel execution similar to Solana, further increasing throughput. The main computational bottleneck for privacy-preserving transactions lies on the user side, in generating zk proofs. +Both public and private executions use the same Risc0 VM bytecode. Public transactions are executed directly on-chain like any standard RISC-V VM call, without proof generation. Private transactions are executed locally by users, who generate Risc0 proofs that validators verify instead of re-executing the program. -### Resources -- [IFT Research call](https://forum.vac.dev/t/ift-research-call-september-10th-2025-updates-on-the-development-of-nescience/566) -- [NSSA v0.2 specs](https://www.notion.so/NSSA-v0-2-specifications-2848f96fb65c800c9818e6f66d9be8f2) -- [Choice of VM/zkVM](https://www.notion.so/Conclusion-on-the-chosen-VM-and-zkVM-for-NSSA-2318f96fb65c806a810ed1300f56992d) -- [NSSA vs other privacy projects](https://www.notion.so/Privacy-projects-comparison-2688f96fb65c8096b694ecf7e4deca30) -- [NSSA state model](https://www.notion.so/Public-state-model-decision-2388f96fb65c80758b20c76de07b1fcc) -- [NSSA sequencer specs](https://www.notion.so/Sequencer-specs-2428f96fb65c802da2bfea7b0b214ecb) -- [NSSA sequencer code](https://www.notion.so/NSSA-sequencer-pseudocode-2508f96fb65c805e8859e047dffd6785) -- [NSSA Token program desing](https://www.notion.so/Token-program-design-2538f96fb65c80a1b4bdc4fd9dd162d7) -- [NSSA cross program calls](https://www.notion.so/NSSA-cross-program-calls-Tail-call-model-proposal-extended-version-2838f96fb65c8096b3a2d390444193b6) +This design keeps public transactions as fast as any RISC-V–based VM and makes private transactions efficient for validators. It also supports parallel execution similar to Solana, improving throughput. The main computational cost for privacy-preserving transactions is on the user side, where ZK proofs are generated. +--- +--- # Install dependencies -Install build dependencies +### Install build dependencies - On Linux Ubuntu / Debian @@ -72,7 +77,7 @@ Ubuntu / Debian apt install build-essential clang libclang-dev libssl-dev pkg-config ``` -Fedora +- On Fedora ```sh sudo dnf install clang clang-devel openssl-devel pkgconf ``` @@ -83,25 +88,26 @@ xcode-select --install brew install pkg-config openssl ``` -Install Rust +### Install Rust + ```sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` -Install Risc0 +### Install Risc0 ```sh curl -L https://risczero.com/install | bash ``` -Then restart your shell and run +### Then restart your shell and run ```sh rzup install ``` # Run tests -The NSSA repository includes both unit and integration test suites. +The LEZ repository includes both unit and integration test suites. ### Unit tests @@ -119,635 +125,23 @@ cd integration_tests RUST_LOG=info RISC0_DEV_MODE=1 cargo run $(pwd)/configs/debug all ``` -# Run the sequencer +# Run the sequencer and node -The sequencer can be run locally: +The sequencer and node can be run locally: -```bash -cd sequencer_runner -RUST_LOG=info cargo run --release configs/debug -``` + 1. On one terminal go to the `logos-blockchain/logos-blockchain` repo and run a local logos blockchain node: + - `git checkout master; git pull` + - `cargo clean` + - `rm ~/.logos-blockchain-circuits` + - `./scripts/setup-logos-blockchain-circuits.sh` + - `cargo build --all-features` + - `./target/debug/logos-blockchain-node nodes/node/config-one-node.yaml` -If everything went well you should see an output similar to this: -```bash -[2025-11-13T19:50:29Z INFO sequencer_runner] Sequencer core set up -[2025-11-13T19:50:29Z INFO network] Starting http server at 0.0.0.0:3040 -[2025-11-13T19:50:29Z INFO actix_server::builder] starting 8 workers -[2025-11-13T19:50:29Z INFO sequencer_runner] HTTP server started -[2025-11-13T19:50:29Z INFO sequencer_runner] Starting main sequencer loop -[2025-11-13T19:50:29Z INFO actix_server::server] Tokio runtime found; starting in existing Tokio runtime -[2025-11-13T19:50:29Z INFO actix_server::server] starting service: "actix-web-service-0.0.0.0:3040", workers: 8, listening on: 0.0.0.0:3040 -[2025-11-13T19:50:39Z INFO sequencer_runner] Collecting transactions from mempool, block creation -[2025-11-13T19:50:39Z INFO sequencer_core] Created block with 0 transactions in 0 seconds -[2025-11-13T19:50:39Z INFO sequencer_runner] Block with id 2 created -[2025-11-13T19:50:39Z INFO sequencer_runner] Waiting for new transactions -``` + 2. On another terminal go to the `logos-blockchain/lssa` repo and run indexer service: + - `git checkout schouhy/full-bedrock-integration` + - `RUST_LOG=info cargo run --release -p indexer_service $(pwd)/integration_tests/configs/indexer/indexer_config.json` -# Try the Wallet CLI - -## Install - -This repository includes a CLI for interacting with the Nescience sequencer. To install it, run the following command from the root of the repository: - -```bash -cargo install --path wallet --force -``` - -Run `wallet help` to check everything went well. - -Some completion scripts exists, see the [completions](./completions/README.md) folder. - -## Tutorial - -This tutorial walks you through creating accounts and executing NSSA programs in both public and private contexts. - -> [!NOTE] -> The NSSA state is split into two separate but interconnected components: the public state and the private state. -> The public state is an on-chain, publicly visible record of accounts indexed by their Account IDs -> The private state mirrors this, but the actual account values are stored locally by each account owner. On-chain, only a hidden commitment to each private account state is recorded. This allows the chain to enforce freshness (i.e., prevent the reuse of stale private states) while preserving privacy and unlinkability across executions and private accounts. -> -> Every piece of state in NSSA is stored in an account (public or private). Accounts are either uninitialized or are owned by a program, and programs can only modify the accounts they own. -> -> In NSSA, accounts can only be modified through program execution. A program is the sole mechanism that can change an account’s value. -> Programs run publicly when all involved accounts are public, and privately when at least one private account participates. - -### Health-check - -Verify that the node is running and that the wallet can connect to it: - -```bash -wallet check-health -``` - -You should see `✅ All looks good!`. - -### The commands - -The wallet provides several commands to interact with the node and query state. To see the full list, run `wallet help`: - -```bash -Commands: - auth-transfer Authenticated transfer subcommand - chain-info Generic chain info subcommand - account Account view and sync subcommand - pinata Pinata program interaction subcommand - token Token program interaction subcommand - amm AMM program interaction subcommand - check-health Check the wallet can connect to the node and builtin local programs match the remote versions -``` - -### Accounts - -> [!NOTE] -> Accounts are the basic unit of state in NSSA. They essentially hold native tokens and arbitrary data managed by some program. - -The CLI provides commands to manage accounts. Run `wallet account` to see the options available: -```bash -Commands: - get Get account data - new Produce new public or private account - sync-private Sync private accounts - help Print this message or the help of the given subcommand(s) -``` - -#### Create a new public account - -You can create both public and private accounts through the CLI. For example: - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ -``` - -This id is required when executing any program that interacts with the account. - -> [!NOTE] -> Public accounts live on-chain and are identified by a 32-byte Account ID. -> Running `wallet account new public` generates a fresh keypair for the signature scheme used in NSSA. -> The account ID is derived from the public key. The private key is used to sign transactions and to authorize the account in program executions. - -#### Account initialization - -To query the account’s current status, run: - -```bash -# Replace the id with yours -wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ - -# Output: -Account is Uninitialized -``` - -> [!NOTE] -> New accounts begin in an uninitialized state, meaning they are not yet owned by any program. A program may claim an uninitialized account; once claimed, the account becomes owned by that program. -> Owned accounts can only be modified through executions of the owning program. The only exception is native-token credits: any program may credit native tokens to any account. -> However, debiting native tokens from an account must always be performed by its owning program. - -In this example, we will initialize the account for the Authenticated transfer program, which securely manages native token transfers by requiring authentication for debits. - -Initialize the account by running: - -```bash -# This command submits a public transaction executing the `init` function of the -# Authenticated-transfer program. The wallet polls the sequencer until the -# transaction is included in a block, which may take several seconds. -wallet auth-transfer init --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ -``` - -After it completes, check the updated account status: - -```bash -wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ - -# Output: -Account owned by authenticated transfer program -{"balance":0} -``` - -### Funding the account: executing the Piñata program - -Now that we have a public account initialized by the authenticated transfer program, we need to fund it. For that, the testnet provides the Piñata program. - -```bash -# Complete with your id -wallet pinata claim --to Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ -``` - -After the claim succeeds, the account will be funded with some tokens: - -```bash -wallet account get --account-id Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ - -# Output: -Account owned by authenticated transfer program -{"balance":150} -``` - -### Native token transfers: executing the Authenticated transfers program - -NSSA comes with a program for managing and transferring native tokens. Run `wallet auth-transfer` to see the options available: -```bash -Commands: - init Initialize account under authenticated transfer program - send Send native tokens from one account to another with variable privacy - help Print this message or the help of the given subcommand(s) -``` - -We have already used the `init` command. The `send` command is used to execute the `Transfer` function of the authenticated program. -Let's try it. For that we need to create another account for the recipient of the transfer. - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS -``` - - -> [!NOTE] -> The new account is uninitialized. The authenticated transfers program will claim any uninitialized account used in a transfer. So we don't need to manually initialize the recipient account. - -Let's send 37 tokens to the new account. - -```bash -wallet auth-transfer send \ - --from Public/9ypzv6GGr3fwsgxY7EZezg5rz6zj52DPCkmf1vVujEiJ \ - --to Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ - --amount 37 -``` - -Once that succeeds we can check the states. - -```bash -# Sender account -wallet account get --account-id Public/HrA8TVjBS8UVf9akV7LRhyh6k4c7F6PS7PvqgtPmKAT8 - -# Output: -Account owned by authenticated transfer program -{"balance":113} -``` - -```bash -# Recipient account -wallet account get --account-id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS - -# Output: -Account owned by authenticated transfer program -{"balance":37} -``` - -#### Create a new private account - -> [!NOTE] -> Private accounts are structurally identical to public accounts; they differ only in how their state is stored off-chain and represented on-chain. -> The raw values of a private account are never stored on-chain. Instead, the chain only holds a 32-byte commitment (a hash-like binding to the actual values). Transactions include encrypted versions of the private values so that users can recover them from the blockchain. The decryption keys are known only to the user and are never shared. -> Private accounts are not managed through the usual signature mechanism used for public accounts. Instead, each private account is associated with two keypairs: -> - *Nullifier keys*, for using the corresponding private account in privacy preserving executions. -> - *Viewing keys*, used for encrypting and decrypting the values included in transactions. -> -> Private accounts also have a 32-byte identifier, derived from the nullifier public key. -> -> Just like public accounts, private accounts can only be initialized once. Any user can initialize them without knowing the owner's secret keys. However, modifying an initialized private account through an off-chain program execution requires knowledge of the owner’s secret keys. -> -> Transactions that modify the values of a private account include a commitment to the new values, which will be added to the on-chain commitment set. They also include a nullifier that marks the previous version as old. -> The nullifier is constructed so that it cannot be linked to any prior commitment, ensuring that updates to the same private account cannot be correlated. - -Now let’s switch to the private state and create a private account. - -```bash -wallet account new private - -# Output: -Generated new account with account_id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL -With npk e6366f79d026c8bd64ae6b3d601f0506832ec682ab54897f205fffe64ec0d951 -With ipk 02ddc96d0eb56e00ce14994cfdaec5ae1f76244180a919545983156e3519940a17 -``` - -For now, focus only on the account id. Ignore the `npk` and `ipk` values. These are the Nullifier public key and the Viewing public key. They are stored locally in the wallet and are used internally to build privacy-preserving transactions. -Also, the account id for private accounts is derived from the `npk` value. But we won't need them now. - -Just like public accounts, new private accounts start out uninitialized: - -```bash -wallet account get --account-id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL - -# Output: -Account is Uninitialized -``` -Unlike public accounts, private accounts are never visible to the network. They exist only in your local wallet storage. - -#### Sending tokens from the public account to the private account - -Sending tokens to an uninitialized private account causes the Authenticated-Transfers program to claim it. Just like with public accounts. -This happens because program execution logic does not depend on whether the involved accounts are public or private. - -Let’s send 17 tokens to the new private account. - -The syntax is identical to the public-to-public transfer; just set the private ID as the recipient. - -This command will run the Authenticated-Transfer program locally, generate a proof, and submit it to the sequencer. Depending on your machine, this can take from 30 seconds to 4 minutes. - -```bash -wallet auth-transfer send \ - --from Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ - --to Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL \ - --amount 17 -``` - -After it succeeds, check both accounts: - -```bash -# Public sender account -wallet account get --account-id Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS - -# Output: -Account owned by authenticated transfer program -{"balance":20} -``` - -```bash -# Private recipient account -wallet account get --account-id Private/HacPU3hakLYzWtSqUPw6TUr8fqoMieVWovsUR6sJf7cL - -# Output: -Account owned by authenticated transfer program -{"balance":17} -``` - -> [!NOTE] -> The last command does not query the network. -> It works even offline because private account data lives only in your wallet storage. Other users cannot read your private balances. - -#### Digression: modifying private accounts - -As a general rule, private accounts can only be modified through a program execution performed by their owner. That is, the person who holds the private key for that account. There is one exception: an uninitialized private account may be initialized by any user, without requiring the private key. After initialization, only the owner can modify it. - -This mechanism enables a common use case: transferring funds from any account (public or private) to a private account owned by someone else. For such transfers, the recipient’s private account must be uninitialized. - - -#### Sending tokens from the public account to a private account owned by someone else - -For this tutorial, we’ll simulate that scenario by creating a new private account that we own, but we’ll treat it as if it belonged to someone else. - -Let's create a new (uninitialized) private account like before: - -```bash -wallet account new private - -# Output: -Generated new account with account_id Private/AukXPRBmrYVqoqEW2HTs7N3hvTn3qdNFDcxDHVr5hMm5 -With npk 0c95ebc4b3830f53da77bb0b80a276a776cdcf6410932acc718dcdb3f788a00e -With ipk 039fd12a3674a880d3e917804129141e4170d419d1f9e28a3dcf979c1f2369cb72 -``` - -Now we'll ignore the private account ID and focus on the `npk` and `ipk` values. We'll need this to send tokens to a foreign private account. Syntax is very similar. - -```bash -wallet auth-transfer send \ - --from Public/Ev1JprP9BmhbFVQyBcbznU8bAXcwrzwRoPTetXdQPAWS \ - --to-npk 0c95ebc4b3830f53da77bb0b80a276a776cdcf6410932acc718dcdb3f788a00e \ - --to-ipk 039fd12a3674a880d3e917804129141e4170d419d1f9e28a3dcf979c1f2369cb72 \ - --amount 3 -``` - -The command above produces a privacy-preserving transaction, which may take a few minutes to complete. The updated values of the private account are encrypted and included in the transaction. - -Once the transaction is accepted, the recipient must run `wallet account sync-private`. This command scans the chain for encrypted values that belong to their private accounts and updates the local versions accordingly. - - -#### Transfers in other combinations of public and private accounts - -We’ve shown how to use the authenticated-transfers program for transfers between two public accounts, and for transfers from a public sender to a private recipient. Sending tokens from a private account (whether to a public account or to another private account) works in essentially the same way. - -### The token program - -So far, we’ve made transfers using the authenticated-transfers program, which handles native token transfers. The Token program, on the other hand, is used for creating and managing custom tokens. - -> [!NOTE] -> The token program is a single program responsible for creating and managing all tokens. There is no need to deploy new programs to introduce new tokens. All token-related operations are performed by invoking the appropriate functions of the token program. - -The CLI provides commands to execute the token program. To see the options available run `wallet token`: - -```bash -Commands: - new Produce a new token - send Send tokens from one account to another with variable privacy - help Print this message or the help of the given subcommand(s) -``` - - -> [!NOTE] -> The Token program manages its accounts in two categories. Meaning, all accounts owned by the Token program fall into one of these types. -> - Token definition accounts: these accounts store metadata about a token, such as its name, total supply, and other identifying properties. They act as the token’s unique identifier. -> - Token holding accounts: these accounts hold actual token balances. In addition to the balance, they also record which token definition they belong to. - -#### Creating a new token - -To create a new token, simply run `wallet token new`. This will create a transaction to execute the `New` function of the token program. -The command expects a name, the desired total supply, and two uninitialized accounts: -- One that will be initialized as the token definition account for the new token. -- Another that will be initialized as a token holding account and receive the token’s entire initial supply. - - -##### New token with both definition and supply accounts set as public - -For example, let's create two new (uninitialized) public accounts and then use them to create a new token. - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 -``` - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw -``` - -Now we use them to create a new token. Let's call it the "Token A" - -```bash -wallet token new \ - --name TOKENA \ - --total-supply 1337 \ - --definition-account-id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 \ - --supply-account-id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw -``` - -After it succeeds, we can inspect the two accounts to see how they were initialized. - -```bash -wallet account get --account-id Public/4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 - -# Output: -Definition account owned by token program -{"account_type":"Token definition","name":"TOKENA","total_supply":1337} -``` - -```bash -wallet account get --account-id Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw - -# Output: -Holding account owned by token program -{"account_type":"Token holding","definition_id":"4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7","balance":1337} -``` - -##### New token with public account definition but private holding account for initial supply - -Let’s create a new token, but this time using a public definition account and a private holding account to store the entire supply. - -Since we can’t reuse the accounts from the previous example, we need to create fresh ones for this case. - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii -``` - -```bash -wallet account new private - - -# Output: -Generated new account with account_id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF -With npk 6a2dfe433cf28e525aa0196d719be3c16146f7ee358ca39595323f94fde38f93 -With ipk 03d59abf4bee974cc12ddb44641c19f0b5441fef39191f047c988c29a77252a577 -``` - -And we use them to create the token. - -Now we use them to create a new token. Let's call it "Token B". - -```bash -wallet token new \ - --name TOKENB \ - --total-supply 7331 \ - --definition-account-id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii \ - --supply-account-id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF -``` - -After it succeeds, we can check their values - -```bash -wallet account get --account-id Public/GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii - -# Output: -Definition account owned by token program -{"account_type":"Token definition","name":"TOKENB","total_supply":7331} -``` - -```bash -wallet account get --account-id Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF - -# Output: -Holding account owned by token program -{"account_type":"Token holding","definition_id":"GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii","balance":7331} -``` - -Like any other private account owned by us, it cannot be seen by other users. - -#### Custom token transfers - -The Token program has a function to move funds from one token holding account to another one. If executed with an uninitialized account as the recipient, this will be automatically claimed by the token program. - -The transfer function can be executed with the `wallet token send` command. - -Let's create a new public account for the recipient. - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 -``` - -Let's send 1000 B tokens to this new account. We'll debit this from the supply account used in the creation of the token. - -```bash -wallet token send \ - --from Private/HMRHZdPw4pbyPVZHNGrV6K5AA95wACFsHTRST84fr3CF \ - --to Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ - --amount 1000 -``` - -Let's inspect the public account: - -```bash -wallet account get --account-id Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 - -# Output: -Holding account owned by token program -{"account_type":"Token holding","definition_id":"GQ3C8rbprTtQUCvkuVBRu3v9wvUvjafCMFqoSPvTEVii","balance":1000} -``` - -### Chain information - -The wallet provides some commands to query information about the chain. These are under the `wallet chain-info` command. - -```bash -Commands: - current-block-id Get current block id from sequencer - block Get block at id from sequencer - transaction Get transaction at hash from sequencer -``` - -For example, run this to find the current block id. - -```bash -wallet chain-info current-block-id - -# Output: -Last block id is 65537 -``` - - -### Automated Market Maker (AMM) - -NSSA includes an AMM program that manages liquidity pools and enables swaps between custom tokens. To test this functionality, we first need to create a liquidity pool. - -#### Creating a liquidity pool for a token pair - -We start by creating a new pool for the tokens previously created. In return for providing liquidity, we will receive liquidity provider (LP) tokens, which represent our share of the pool and are required to withdraw liquidity later. - ->[!NOTE] -> The AMM program does not currently charge swap fees or distribute rewards to liquidity providers. LP tokens therefore only represent a proportional share of the pool reserves and do not provide additional value from swap activity. Fee support for liquidity providers will be added in future versions of the AMM program. - -To hold these LP tokens, we first create a new account: - -```bash -wallet account new public - -# Output: -Generated new account with account_id Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf -``` - -Next, we initialize the liquidity pool by depositing tokens A and B and specifying the account that will receive the LP tokens: - -```bash -wallet amm new \ - --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ - --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ - --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ - --balance-a 100 \ - --balance-b 200 -``` - -The newly created account is owned by the token program, meaning that LP tokens are managed by the same token infrastructure as regular tokens. - -```bash -wallet account get --account-id Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf - -# Output: -Holding account owned by token program -{"account_type":"Token holding","definition_id":"7BeDS3e28MA5Err7gBswmR1fUKdHXqmUpTefNPu3pJ9i","balance":100} -``` - -If you inspect the `user-holding-a` and `user-holding-b` accounts passed to the `wallet amm new` command, you will see that 100 and 200 tokens were deducted, respectively. These tokens now reside in the liquidity pool and are available for swaps by any user. - - -#### Swaping - -Token swaps can be performed using the wallet amm swap command: - -```bash -wallet amm swap \ - --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ - --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ - # The amount of tokens to swap - --amount-in 5 \ - # The minimum number of tokens expected in return - --min-amount-out 8 \ - # The definition ID of the token being provided to the swap - # In this case, we are swapping from TOKENA to TOKENB, and so this is the definition ID of TOKENA - --token-definition 4X9kAcnCZ1Ukkbm3nywW9xfCNPK8XaMWCk3zfs1sP4J7 -``` - -Once executed, 5 tokens are deducted from the Token A holding account and the corresponding amount (determined by the pool’s pricing function) is credited to the Token B holding account. - - -#### Withdrawing liquidity from the pool - -Liquidity providers can withdraw assets from the pool by redeeming (burning) LP tokens. The amount of tokens received is proportional to the share of LP tokens being redeemed relative to the total LP supply. - -This operation is performed using the `wallet amm remove-liquidity` command: - -```bash -wallet amm remove-liquidity \ - --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ - --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ - --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ - --balance-lp 20 \ - --min-amount-a 1 \ - --min-amount-b 1 -``` - -This instruction burns `balance-lp` LP tokens from the user’s LP holding account. In exchange, the AMM transfers tokens A and B from the pool’s vault accounts to the user’s holding accounts, according to the current pool reserves. - -The `min-amount-a` and `min-amount-b` parameters specify the minimum acceptable amounts of tokens A and B to be received. If the computed outputs fall below either threshold, the instruction fails, protecting the user against unfavorable pool state changes. - -#### Adding liquidity to the pool - -Additional liquidity can be added to an existing pool by depositing tokens A and B in the ratio implied by the current pool reserves. In return, new LP tokens are minted to represent the user’s proportional share of the pool. - -This is done using the `wallet amm add-liquidity` command: - -```bash -wallet amm add-liquidity \ - --user-holding-a Public/9RRSMm3w99uCD2Jp2Mqqf6dfc8me2tkFRE9HeU2DFftw \ - --user-holding-b Public/88f2zeTgiv9LUthQwPJbrmufb9SiDfmpCs47B7vw6Gd6 \ - --user-holding-lp Public/FHgLW9jW4HXMV6egLWbwpTqVAGiCHw2vkg71KYSuimVf \ - --min-amount-lp 1 \ - --max-amount-a 10 \ - --max-amount-b 10 -``` - -In this instruction, `max-amount-a` and `max-amount-b` define upper bounds on the number of tokens A and B that may be withdrawn from the user’s accounts. The AMM computes the actual required amounts based on the pool’s reserve ratio. - -The `min-amount-lp` parameter specifies the minimum number of LP tokens that must be minted for the transaction to succeed. If the resulting LP token amount is below this threshold, the instruction fails. + 3. On another terminal go to the `logos-blockchain/lssa` repo and run the sequencer: + - `git checkout schouhy/full-bedrock-integration` + - `RUST_LOG=info RISC0_DEV_MODE=1 cargo run --release -p sequencer_runner sequencer_runner/configs/debug` diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index 0fe48b45416e59ce928fe9fb01c3073d4c1214be..91187d4b3a58d74fff0d8b8c5d22c732cdd85715 100644 GIT binary patch delta 102549 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 Vx?3)*ozv0r_PTvm)vmta{{bOSWJ3S| diff --git a/artifacts/program_methods/authenticated_transfer.bin b/artifacts/program_methods/authenticated_transfer.bin index ceba587843bad5823645274106f54f649c84b181..e725bd0546e7ae3a6d335e7a597209eff29c8171 100644 GIT binary patch delta 88548 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 Irt2>J|6_@R>i_@% delta 88279 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 diff --git a/artifacts/program_methods/pinata.bin b/artifacts/program_methods/pinata.bin index 8b61d2e2aba55f9fddd54f6dbd6937cb47ab7470..52c814f930cb91aff33e7c5580834754f9ef544b 100644 GIT binary patch delta 88104 zcmZtP4}4c+|M>Cq`LwN7lj)D9e?F_p)YK>`x)~NLOQmFG{ZYecsThXw85Kh}@ri~Z zERrw^Aq*kJH@6US>n4PuG31tezt{Vm>)Ltmdi>7g;m`AWzpp>%I@kI0`Lk{H<2|Y$ z@3E|RWY(>H`bSnjdBT5tCpu-0k2Xw76lac)bV#htJh*%NuE`NEksL|tn&Ks`sPepT ztEy5GJ2MZC^uDd%#gU5=<^B3cni4hr4nFA5t{pQ;Yw)@zck~iVI(R1ikHpq~Jr4i9 zYsVwH{C}d&U6V6AOL>A?L5;j$*LCavY_$8E^qWe*DP5D3Y-4XEb{;Y}QjjPdaC~z9 z{5|(=OpNF=rv1*AmT#-Pi`P~6=^TmXZA#SiJu%v_A+e)xpZ1SR|CLBB? z67~K})W`Zo8#*So#rk!rNiIy+ zy>i{KGuAL8`RjI0nUIv|Hl37piG2A_eWHB&fN0fYiCR>(Cb0#1s}s%B2Y2>XwL9b$ zZ_a^7wQqOG4Ut6EbSC71MBxnb?n_k8C`}AIYhX0*j>N39j)_(!618Vhb6H~3SqoN7 z;D{y~XB^Ugj~uavC5eogW6b|oB}!+OCNhdg2S>B&l0-@INb~;-6LrN!iK=Z$iM=y> zuKQ``ll!gs<6n{e61(ShIWX_Ct|_m0U6&-Wf>$zD7DS+r`j*Q1>$$Kcm_ON3^ex$g=q~ zQ9bvlM2C3iNL`|AQNKePrY$;TQ)JGKbb3e<_0zo-x&B(2nnJcDeJdu9il(o~=U>m3jEe5=7|D5d z+$qsXkx0Rc`wOBkcPL&K^Rnl~yuuadkBJWLu*`7sidAExiw?^tvVeb*7RS7eRWYye znwYmd9`hzsR>D79u8nzRl&3vAacuN2X>?p+^zIc|{^Q|U{JXFNt@B@r-)GE!*dpEo{5zv#Ou!cL zR`KtQ!hT-5uc-Hb{CC5CG5#%E#QPWj&JN>oZyyC2ePaAuwusllzt@tG>MQCU#=utg ziy_$}UJfo*@hMn347R8@6-x)!#dw7BOk99v$0J@m>fK-pY=xy*ISK)zv z15t0IvCV%O%MMt-ipz{VFU5Nuw{CH-spY*7gAw{u7L9ttKMAIEWjm%k8u7Y)8cgA= z{R3~rG9a7(KP)p?ogBnheiqEwR#Sho>M)7^zQzj%#QZVDWfFE%u+tQXf51hD1_|Py zaOJr0m}W$o;?w$h88i`LRh)z;;G>N%#Ch1RfjjXQ0-i66_c7YAF!I}TT3yT>;f+xX46hIl-i5^3NoQ(zOm z!40Z`ktu;~d=%cnjFCod?#5#BXR%hKy*G_*{@b`{Xm}ktgy)t~N5taZGBTvXqM#ti z$JgO4N5s6fCjOkUZEz#5I5O6n|1y>if-T~`igU(?i||LBHH^!r8Q?fBFj>R6e%cBX zC|Iw~+iAFj3N}6y7t$a*!tkQrjd+ym;Avc|@}I{y67OR2zsB_{{yi>9s8;Ex`9bAGNRs0Hkx@vzF_Ku42FWDmA8XT`B!Jfw-QqWB$e2Ui- zPxI5G9?!3BW+)YBlb=Ui4&nL6kS*es;a$`}z*p2;fwy6MU3j%4>%Wu+>?$4HiA%2< zz!CU2D(r6>D8`G4Z=*mutTLAFq{Bs0e?mWRkgursI4;7r!%uLta#9-S--y%0gdyx| zJKWDSFb!v`_!3;8T#t*CKf|TUDf@X|HSS~DI|5gzcyXM9)vDlnyk%lIpr>$w8u912 zXmpI`WaB!3(>M+7A?(ySxQ+zzsMi_qR*U)o{D*S98wE*RnQVm~xSMiMoTc0c%azRL z$M6_zXKbvojgP}}t+$?li zmYb1vDVCd6uyOyNOTqONi(u6)+_;s4+<6iEHIjcxp0EEgi{ ztyr!b{uZag2NcMK#U^}&<-E221eYl9z;a!%@h`AkXso})a#~w|jpa19-i_tDAsg#I z>is~0oR`5C^?t%~-dZy<$9zv&4EPzF2uSzC!sNe7$lhUhdn!|FQ-sSWAID zPwz0c9o&iKw6w0pJMf_t$bjE8w(+;ITt}?m#o5YRv0Qij{g*xbfPw;*@DY{^i*4W& zT&lbS%Z0?ozrfYXU*gruU*j^9Ef1l)v26bSdps1Te-u0vE}&2zIt#Hp1In|SIO*fy z5p9F<7g!$AYUFlG{9_(kAxP3yZHMa5l@Jqx8 zoBD63)4vqhgm+1h4y?Cgy+%15UvWXqG!gOs zPG|p%PmOs}Bo7p$c~lVxTf{5CmCC2$I_1;wJ~iMXyi3KWI@zr<%ar?mW0bZ`++i^8<9)$coY)4OehEnkAFhA~fpkULua0b$F?@8er*dOO8 zcfn^WcgGu*GjO_El)doM$zgka@!D2%|IehrW5mH0^|GV^!DZh2n}3X$)r2 zUu1YDmKn0XANyxTl=ELMy~BSDrYL3_sK7EKw!-sRPMc;bNdAoffp-ZiT|m5HP(mZ8XRs- zE$x2}I^1VwY%V(_1IjY~3(EjHO8;`qE@}=2kZwHjw_pGrj5q!s48Y!u7OM_rMpiik zTCL)8dw*0}^0%0LbNx^8{!b-Hg?}kagy@h1gDvF$b*ePz+>41>2Qk~@KepwV9eWP;-+qgn0i5LwV1}~Hz%{sjW{g&3i+GFiHk^gzW|rDLuph>q z@LuA1CSHc)QV?trZ$1UNXNIrW@5C|eFG`wx4Ud===D&eYAnrf$5Z{9{&JN?h;xrym zW_dEaWH0qVPV3$MydvL8-a!Yl|J!GW6?&79t~xv!cPk19un=b{*WzKyZ{mFAUvT;b zVf(+~autvDVE*r;z(1|ngHwC(QcERViWg&l5fZ;2->UMr;K?fg4_u3RJCQw(di}Uf zu4Vv*SPn^zF=UH)cgHE%NQHxZM!h%ihuFTY)`Zup4tkTgiqmYa$v@dxnv*WZV41;S zi+Y7v-~Gm8IixloKb-cx(#BuFwJQD%=F?1j z|BHCvQLtSlbnD9_lxm;{-mKgcCtVnJ&8@X zPsY^?L!XJ)UL1NFUUo_7>A1ck^envftgyqI@Y2g;-cm1^@n&(Hf?$hye^9WK3LPo% zZypEp(h1vp!8qKg8mzz(7HOKve-MAFE<6w6UCNJ0edV<{-i;~u&vTCH#}tTzE$V%W z<(ON4jwh)6)L38}?}TLySa-%tRsKk08z05`^B09JIG%*fs)C%-VjGvkFKfhFj#d)K z)LM>CZ{n@w`Ar@8zW9FZY1xLYhxfu9c#A}bsszP_f@}-|(i+KCtv};1A<3{DKSiTSx zY!UB3yqy`!p+IKn1e~;3uD|}qDM&##=Fuk1$2m)4L6|BR;bF>`;K|ArxLEm0EQci6 zqTbbbp7J$#LvcUTKOsqg&6X{!Dm2Vu^F4W|B~JtK0= zTd$12_vHF7i((83a;a?ej|pIt3(5XjJU}o*!4~nlV14`Sj`P$p&cON@_rl@U)RM_N zkWxRLLg}xhH`jk@-~dz5S5=S!oPcYukC`?&OPmf)QTeilwsUEg{4{FF8W^kM(%wA0 zTD7+zPQj+?u!D=S-h)e31Jc1!yp)m#>|3dqtGIMf>(swb#ijlO%90;{oq~!R!U1f? zyOxH22Ny02{T`mI{63cNEe2b}+lJ+fi`F0GP0F9*>=~_J>EQM6A>4c@@Q(@SeJ)PA zHEdug&QczZ^OZ;966H~NvGVb_;r6h-6Y<2>H52E>AO&k%3!+{D-l%*k-lBXO-m5$j zr?LaV7WF1$*&*vQvFx$+G<>wRy#GI)f)%y^&%$-ebMSiQb8+g-u)*_jhH@F!YiK?W zx2Bf8Ey0Xrwd49HtMp>7?=oehl7dzHI!`FFCdx>VcryQUlc4r>pRDJ?y1rFZ--$#Kg8r#6(Txw;J*#^Go#g&g4NT)$LZy#p)%OWi` z1Dw%^cRN*l4VFW8n92VE%OSP(bNWX7Lnxm=`VG#bK-PdwcpS^B%`U%xz%sx=CjSmBdtj&h zV=M!-j`!nR*to>xf1(B`Gqw-s)T&3W77CJPh2H@^Yyj_y)ynW>qcdEgJOuBcgJ6q# zN8&G)kHY!tgUAuMS;ddVNpU)~4ID>7it-84fO0-AR6Yf-R33}|$9s6CKlcCq7YaM3+6vSs5UhV=|w@8sW( zC)^wJvn9V~0PBCAp}aJ@n}p&A!i0w%ufZiM{tV7P+sqi3?(cDhivNh~*`aLukjL(f zLp^U8`Th*xlj0QUCz_M7R0uZS&&S(wv1y>(*v2oz(xCMfSO#Q$6@JA?cCZSE8~6XQ zJ=#7JEm8?G<&R)JrE67OE<{f#Oa6yW{&p3Y{LhrhkGDja8{I*Y%vI~gN2$uv!QoDR zu8KUIR$1~t*ZHh}Z>LI- z3STKpg$~@t^bDoRZLM|VDOp+ak8<)ysJOI$tTONaHnp7XR47piQsF#h$^WO5zf8p? zKcOu7&pG)U!?@gkxLJe+{&WA=PKDhnF8MzwO9uxGY&%2UaJV(K^iY=kf3)WN_rDY` zPbEkPCn-yX($)&nY>GEm#U=kjWy!zA$-hm-CI5D7>0c^5<5YOgCiuJ2)Ur`o@;`U- zcdEE_@RhRUCvn@fHX>s0t#S@L5! zZKt$94!5S30m_m;#>p>~xZQsl(RioAMNWlFR9x~al%<2ao&0-MT=MT%mi$dPUe-F~ z6z@%yAQj$LmI^;&oxexLCI44t$v=>HD0TipINX|AdLOR#Un-pHR5;D4Fi~0ZuXggU zQE?g2Vr9vH(#cO)Y(tC4X$(sW46@ zNCy*?rNUKCewB(#{vu_`uXpm-skr3FpHT%;;VY-YH!3a_zEhU`1BbNT7X5t zw|Z5l$m4G7#_d{J@(*|Nb5)%6&l8I(kP2ry6{e}U3~0KtmU8?7via(5di>Q(=>eOa7b6(!p*g{|6P9{GXI1 zfB&Jp)T>jk|GQ97Ul%j88u7a04aymKf_m+CA}&#%<&MS$#M{$?yw;m<95l#VJa{~D z|J63}T5+5Ln{Xcm(t-5@STD*|INX|ARx8UMy@l7WikTGN4Uzf}h5kQ0OSS(m9AB#n zK9mZrJ#e1maO1)=koWs(kPk}y*Z=Qh>Cm1PeFpI^8ttW1NnXyc#M0py7h6QF%kKb>qUJEDa36m8$+>c%#~(9ISU}h^jAZV#c62Zw#stAE^?g zgGqR;>R<}qp*$7uQ!d6^Xs;84mNjr4&R88YyAbhiz{P7qFO5sW9P<_l6`sX0>`x*7 z60e@!&y$&x2KPIP0bm;+foqiK;A-WY@y5r(4sXTjPlS#yr=UR6QS0w;_)ch?51lB`i{xh;EI23P-5~IZZ|=O9#bH{!A5@{MpKqf1Q(m zLl~FqKVJw43;Y+K^-hI#DlYlYC`$*QI{BZgxa99tmi(ln?F{+%pA@e>1>wf4VP&Z> zsI`J*rFer?Tsk;HS@H|ssU-RNLd;zw-x**Q@qPm zT=K6_mi#-M{5w@#@@tL#{-wh6PK6hp3JuDV{{tR*Za?oO1|+B9fg`vQsy#diCphio zy)236OUgwQjCeBU@1OV*T%cTmHz;3;w<=$aN1YRP@CfeqRM_5H zi7P*WOP*5q|EDNesuG^Y8AE~(H z$3Ia8QsH-}!k;QG74|7h{z1pKozmVo+?rYrR+juxZS&*a@hU+&I8j+D%xqi1o2}xK ze~z-`U+d&AQE|zyR`y^2uW~A^RtZw!QDy01vy=ahic9``%98(slmC;7v;Lb}npA;Q z=*-7qdX*l4!>y^Mo3i8|;p7ifaT(Cj%91}><+J`%yfamTRG6kL6)IH)$&ahJ9GHafo*&MmJX~B!?FgfbFdsD>mgVUk@b_$N;t*+xTZ#25j#CQSaXr$R62*|6thz z>s?qMl5eGf){T!?T(NchJ{eyW8L z+eMgj3_m1-r5{;@->VMg81Hv-+X1EHaBFJmsx0|O;pJOmUW_EUFkNLV^UubwQlnr! z3HEv5Nn;ydk1LoF|I$no|HjL3N56K|>u?HR->1IKPs6!t1`ouID&7m%&E@{zx@ahv z@NU?^sran2@a6WUxLn1r#K#lgpC0|25w213M{zE3CfJXEgg2`AXSi`L_kTNp6rQzW z?}Y>Cg!7ftaX&SnV{xg9=iw^l(fBm-_cH@nfa_HJ61+9e6xji+q+pjyScTJQz)ta2 zoce#^06)YHs=i#2%2hlWFIVn}lV~s14Cp8v-=`9ept9xJutmLe67IqsD3C>Utg($BhaV))Y3;|)H@5LI%&HDZ{rPyk zYVR&%n}1K70y&1ZU?twF{2<SAM#x_5CYOn^Zr_rIx&%{}ugdGmR3&@w7n+$Lw zUcW=){{4^NXhgv*66~e;8l3TY*uZth%p}!mVtm_pd&eDdiK@T9<1V;d;(q@$*n@)Y zszPtPTR9W&Q67LN{5u@rAji3mhvE{IKLXd`pnnGN4+=J@gcEUt@+nvrQLynfZO0QG zPsYPk{#0D4JOeNNB4+w$0COlo;*V&ZI!rK$CCv`oEb1>CjgA18>B=O@+(}fo(hsZzrB@;^U2N{B-QGrqWFODq|b3 z!s&4mY{4Q5(~mPKuSJC?J+x(3G=tAe{J zSgm|7-k^Lx-mF}Qo0T8N`;^z1IqjYp{|mX}OL%I&b!54L141?xi)??6GgHMOK+eF!c&nL8v6 z(<;HM$*N>$-5p)Z%!J# z8doSUa$N2BCcIqbFT+*enD*rUe>(*YwgBJd_&&!E;5{n;VaIE5?Avg_PdI)GPcU(= zzY*_QRUm#Im#GF`#*39V;g!m7;T_8F;eE;EDI% z?;Zc__!pd`^8diq%KLEE_tKv9&j2E)+k(I;jyvEyzd{i2jBAy<;t@Z@B*?}aT8{fT zj^QH7_xq>9ArvfA4GhFPl!rJT=J;s5OXZKk>5X*YZxQbV$0r*H{WE|u6pT_8PQ&|@ zC*cJ@h7A_sQgxv@3s))6z%|Ne<9clGrZ)vP{c}IQnSw1Oq%mT-KW{J&_8{uLfaN^5 zehKeXeg*%jya`X3ALhS_iV|7t_$3=eE$o}X)RYyiT62vCmnE`%-<8oTrf{YV*Yn4@PJr>KV zt}`8cf@M(-GcG-mUrfRpnPnRM1Ir;f$PD0^llZ-m*uGtV71jgpn$P>cx?oLy+k_KF zxAkX^KTwBE?j1j4y-1rK|ADL3BHnj8>u;kfh)m+8lyZvWPL4a{MwQ#R7 z08dcvLt2_+nEeP*^Gx0{d1~`ju#GC9Iz)$1F%JH2PB+-Ds zNJ!{3xorpOj=SPbY5*Cy@#mPozp}@D@X|e@`#CfN63f8L%LmVH8OBu1hs2JdM zwDa8^0CH3KN*+RHp6upgJ7|Iea8j-jn^C@wRS$K-)H-1vb4tS?Myr}0ZC zI3#<_X*hU1?Q^d4WK8judIk_z|R8EWVCZJ z{Yy7HybmuWKR?)iZogb3r6Ab&z{&AMT&v%WbaqmoK;MdT}xJtRBv41b2{nEhx{L@Cno99$mfLE#p zF2UQCufSQ&VTWK9TX3OrQc+uXaGZuqRQ>^R3Uc;_4IYRW zDED$4bKD;;X{M`C?x9)-iLspWXA*T~g!^I-s` zB*`(KHi1LN9%q@G)6-aHcvBFMdnZoeJsmnsr$DaVi?9s9dJ~pC;G-Nro_r=R(Q$v{ z6V-s^n9gtpe71_qy`-egfcgCOJe42~EW&yUs~z8j8`Tsq!?8bO3`aIz&f_BGyRe?Y zdvNO}-~U@lfu6z#Re}uYWxRp2#Ger_+1rYB2Om1#j?4axnLha2ad@Bdm$>x5L7er^ z-{VvT;zq|m;|fzj;?1~5`A@u7`G0tia=WSAMgIy1l!|i$%k`h%W=BE3O6cOahvS~O zLggQf8(9!N<1bSaNqm*C33!vS1@_xfwh-~Xt$ih|85VGUkQf__)PUryc?;`9`kv$War58m{{ImL`OH8&>5v(ToW&E&|6)kC zh?j!vl{?`r%IUb0`oU?+XU90LCFa+b`gx8=i{mPxfP!r0ad^G*=~BVVY;EvNECUX< zs5cFtf`?HcJFvvq#;dUm(E29a=Kg;(1>x4zax2!ybh(Pl6xU-tpr;*gz{P67FFI~G zi}k-)CA?08_GY|=W1PXLZNJRo;g8D91l>3jXc*KRAP50xXYMGUY>O1h!K?!tt>?A$@NB$G`COdSJ~OCJ{kg{3 zkzhc3!Z`ht@LO2mdoM0h4g8I>Q!`r|jLv3{mD?NpZ(z{g)lPho;KdFohvAzAS z!TVJH6F9bCSbx3mcv$e9lduuzstT{*-O6t`e#h~9c(2O;09SMl``a##tAfv+gq?Vq zihqrZ)gGpw!$YWwcgKy&JsltHxF3$k_76vNCbHDxPsJFGRY81L)(ppW{PtCH3tZnQ$)a zFQaQ_@XjZTu$}~QuyL(+yaCI39c+9kh2=c9ehKfur%@p1{ddMT-iYNiwEj6xft;to zmhAn4WmVgR->|G|>%Cakfc0Nk4vF>ua0Nby0vW(z=LNR$9DFPBsENnVGzB(c8cvW9 zF$qhIZM+)GA+f#*uf=vvJY#I*&*2Tkhf*K|+GT9waqn9S8dZbe<0OvJ;if`&-boOf z3SI`5HDKKfkHSY$ARU}+Y~y3_LgJlFyxcg5^Zx&36v(2m6|TTb@kmo)m9dSl#n5-NdsCnvv!CY^M0pAxMV7oW`iXbJ=vE{<8YPo>5k8I zJPq$sGcq0TR-T2;Ye~8Or+9NH2si$|AJ#L{JcgG~3^0#XDKnBji%&`!kez|^Rejmx zC3rRQLK>CZ`)|fUAH0p%YXAPjcRVTBp!P6&0mo3eJ#JP`GtM#{(jtg-{_i#oh zTKoMo!pRiOQVCNX7vlvgel}jFd@kOlJlF98#~0%X2devjg(>Z1#$?iUw6D2kD`O#B*-!U6&ES@y^seIRlmREY{!Ex@;Rmde_3k{~2 z4$i{sv3~kDh&^Dfg7pVLWc&Tz{ zyj9(t4!}Pucf(mM!eHa6xd#O~s-P!sRM+Z0SpSe|49j)EHqal-b-;Q6mebDqFuX^# zmxCWC?!T=kuYb=p1-8O8{2B?JDUe0B#Ms8Gv7BbsH{o4)Ka>BAv5h~6<+QWjh?82^ z1o!`MO@U4L9``1}`bR9MmGvGhXMy#vSk40L-*GvPQXo5!xiGMeXJJ{y{wAOQA4-9& zVw*4!uf**rkOs~$w(%k?tK9l5EN6-J3@m4n_1Rd?0_zeiXMt?2|EPB!1>L5E2^ZiW zNwBBM?Z&o&8Z4{Y`fj{e9pig3*DkZAc=zLQ?A}?}Jr70?GY7&J&Pa z`7>$r9U9PL|Ve<|8k*O$`ncd=X?V~2H>Aa%UGb8SX1*ZOBepFKKjxs38 zzhD+$bYe}U%Kpon&5u$bXF)m%;EiMQu;h1FU8Lq9UYha0~$0?Q!? z`sWY~Qwg#M)9_B!;Y`P~aqrAlY6AIN$NG-~v3tke>i}p6jUhR>i7=FcjDETg?GnIVpabw$6IiNiocKJ8Cl@~KB6F3 z`7`6JXt0V8DsLO_>o^mas`>-))wayvzHaQ%?5gHl|e;t8CQ8^&uK-{W{C&QbaCRTPw{f;G58`3cAC z9Y2egs{D<3yYefJ-)QT&_Z9`aRfYF(+7aO%eSn84Z+HB;BGfZR5Gx^8Wu& z3U<(77cNk8zn_8S!V_#!?`)jP8j-u1#BVaT@td)nHP*LcIjgLfV>#`tS77^#OIiQ? zjz$C7jcs2#H1J@bb_zhUjD(j_K&Z3}yD%?VWe#*TK%c8Lr zZpX4{tZT5W3G2JDtQqTjv8)m6`>`Bi>pCnqGjsptFB(xGcQc!?2J8FxV>sOS=oRaC zNS-{GKVr#+D~(sP@`O`%9^a~&5s5Rb-Z?ys7df8pcoyz`w7UPFLqY6{@VR{%-iRY+fG^;?mA}DvDIaj9=iRA13fCx~ zhgT@yhVO{0f)^>cU3oWNuH3bf895=`!wkGr&A>@w@&}m#Ux>G2dx-ADX;+5cgyVZu z13y#XsR})>;-gaK(Ri5h0=!k#zZ>VP_#3!Zxd~5J?tL}uKT8#yay5IXd=Xx&d=D;B z-i*tYf5nTH`*L|%c2YQF{jn_CV2gSK;uOfLwgrdbEOjBu!K~8O_z*k-^Em|TBI->w zw)N%v1hR;&XJT2T*0ZrJYU^`k05XNPpcKn7wVsRR5LsV{NJ* zw(%>l975~(RTSi_f+{S>$R;epGUe9SVVQF48?a2d^-{cC`4%jT+Qx6gcZ806w^Jae zg-wuOi6*Cw_1#!bE9-l)oOagtV>vCY>#!_3>xZ$dA?r0*PU~Rf{{I*Svgm9=J(knP zdL7=W{0x@U$i|<;`cl0ShZ|qt!}?O)YYty@;!3zyUcAch|9w?ekZbd9EUPwO5?E#n zs@ksNOB`3=m1>n=h0{+CSN*lP?CS8me+&=9*&gS=tm5qy6sv@G*YHSIzyL^)0hEi0 z$FStzhf~#WPI((|Qyu=F@d#7D=e2F)2Zxqj=PMW#q*sQQ-a?#q3hxC+f&tuOOtPQ9 z-0=!rKz^|C(-63j9k9M1H`Bho6261${kT8%ytX$5cEtS`*#v1K;$=G?gny<%`^0nx zmKn1hPIEjR?^W^HIB5*|!J+4;R4K@j0)ONF?RcT%a$KPDFULt&h3^?Xh)0bL+gpwI z61Ow(0bY&c|DZ!TrvIa$MkO4!m_1USj4PDmxLSD)E>->zH=h~~;8Vw61P=CJhVUf? zxrJecZ*c~T&c1)&WeMM4#1S*#f8b5y!~7F*KNX*cQ?cFS8eBIa%)iGs_kZ3S@>lsT zC*eECjd+7G2bnla4WJNvr-$*0;y4Ax{8vu1YA4~Jj+fzd)xhnz zcU3?CtJZP|Kf{Zav##eXQ2B@9V&%a&E(M#-0OmOf7dgHJm#GG>zy<0$unKpZ6z<^~ zoTdDPv7PZBub2D3O8CX8@EabX;{U~Ylfw>LaFudWb>IzVhfX$zY!UBN$EQ`Z{+6o- zCXuj5xd@LqBkXXx@n)KnL$<<+*E+rrPgeEo@Gj*?;uLsO!VVrcE{FyleB;D_aQqWa zSM`6z&B}Xmg*rt2Z{UTEa{M$3N>#z-xS%K;(ACBjW{)>H@wXgr!LwBT_i>f-N4Prd zkJrC9a{E;YDaQ6=xB@3W&hZ4iP1QdG_r5gKt4t1Na5;XG4kP{whZ=#oOJ)&1;(NfFDRPp2Y}c&5YG?dHp|L7vR%z zmTKTkTyPB^O0_qO4sTKMTD)8New=nzIDm(6y7Hqq$C&lcw_YeHQwdKS&oU$a!-?;6 z+=3UY`bkUapg0^r2V9`s8J7i?>py?ZfPw`oAp-T za6nh%wKK*3{fEE*LqYDWFrnJGG7@y~krV&S@xSq8RsSpelv;G1|H->zD&7^JDDhzb zquy~8tUWs%z)8k=<~mU2#Fsd(#@ki>f8t@Y!}e~&CCV%C(+nU^`y2p%%9VoHoUp>1 zxaP`CZ>O2!tebh0NyQJtRmy|$TIHd59Ua*AXW-o`J_k3>QSbkk1_hpdvw4*<Q5ic&|nbOQ?3*L2(di|et3#ZAsVS^ov8|hxo+d?Nk(eY$F zOx2%?8~_6{G#zr)4sQ?Z9Eyrb%j(4 znpFe);qub3!!Ed9xrg!UNH9awocK(~v+;IS|GZ_Kf3XX~4$4R*JLGW;+0 z$WG}Cc(;l-;J4Hs|9}^$_V?g-Y+OG7@3ow}8wDw53QxxCRfSXWF69Zh^73#%XW(tN zLE5XrA1XhJKT`e(r(O}%XZ`c*cPMyUC8XTWwb>*{yc3ptfjva&SkF*bC!XQB7j97X zWBAjcKY9L%dZ$wG83lF`U5cBro#OlP@7SJJTX5sm;eg)98R}C05zbTo4DX_Tx|!jW zJA$*W_5RUbb7m3;sCgARvKuwZf6 zz%X2<7U6L?>Dn-U63$mHz=hSB-lj-!DgGy}Rq@+!`l7J@3Y>+5{uw|m1(Q|6{Ziq^ zOmA;e(BO|a!ljh<`6udStYAu2eji+;cAy^~u_Wy9P`p<;2j^d>?*B(nu#aQJW4qr$ zF^@f<8l|RO*w}cJs!16X-u<;|BxCi@v(w_DHSo*W> zawqFgMq~@RlkhMupg=}=ys?d+h~;fJ>(N-=*Rw9b@-CS5skl8pn*wR?Qezvx{7%-t zylZ6(DoK!cxvb+@-sQ5s7R$S2)=Theh*&;aJ{FHjaBEDM;nKw+W+ghPu|DXKdpa;9kU| z6vzN>H@5K_+(*@a&Dh4@z_HeNoL>ZL3T#3%?%$da^$xx}u#NY_1BlxT)i`4tpMVDu zw*$P=*v7BMhuik${{M(6unB8%u1z5Rv9XPRiifIra&2H6PsPKD+W`(Ww(;TkSW}

#g!S9u8Wm5$@}7{n|3!t&H?-51MKv$_BBB~c3GG1(?$VR?+UJ`~Ff3G0D)v-06s z9y)D27t14^^-wGioz}y#Jad}+f7BaEfjrgPgi%-?Dy@&l@=$4gB9@0r>(N+V*;p4~ zdB(Fo70V-@^=Y_qCZGS?f{7H!Gn(~eEYE<}XJUBm{SkJ-o zJYjt+#a~ z{kB3oFLyRyLLI}~@li$^<@+00Ui&rk!a#hDYCt|Ge8A~om5R%6I$13psP-RKajCx< zxB2=1cT|Ej@SfAa`zkIC{Dk%M!LN>g$BoQL2D>fSiP*h7!0r`7pUwHSjYD+mxGeY*{$KKaI<|^vNDf zy{~P2hU2qwzN&vNUT|yJ-rP6^%T>VwEK?S2QSV}`7ty6S-1sxxSRdop&gTthb|9A| zSu>R?Uk=%wSo*VvApYpewgaelybjl?0dBzSm0!f$m0vX;;RQ3){rg2Sz;u)0CrKZMNQFnjvMiA6>q|YcZ5^?J6@{%mt*;m* z@s>%U&&T^zybN=QP5;~;=Ti`FO)VE;eT;i?Ws@n)im+n1vR#U0hBi@2+>GUz=Nq4L z0l)2*4*ly0KhkjnmI1|x%a3?m;`e9zmql|M1$vKHIKB((MR||k0Im5Ozs3ve0Y9kX z(tZPOP&4|vIIapdQ?OO}U0iTycntrAiSe|7vj z_U;M?^cSvB_EvG)DJMJb=y<(6V6ced#z>%aZsQ8|7Z&GRl%=dG zQ@jD^z8v~R$FDkm9cN!3uAx1+R_X`$AAUoDEnxqo%e{Dns?dKe=WRpSVYcHzxJ>0w z!E&7lHomBgw@*mIA8fyJX!g5T%x=gmn*-67spk>dlW2JejnETEjGf3FaB-~4a*e2YMWmQ|(iH+nfm4|V-@k=PNz8$|gzwJ-K zJf`yH_WQPc_q&|aYI8ez84~gOJ{~w|l;4WwcmQ6ePQyXCQVnnzUa#UK@ebwV@TgbA z)A*z~1%;}h0GB9_!)3~+<4WZ-acooAU@;!0e75AP0hT!N`1wvj87@~1EOcCs>s0)5 zy!ef909WJn%8MLVw{_gRiGn?SQl zgg-dm)5hHYex)Ff4sC_KxLWydyhSs%>iPQcSwpWDwm<%F)Z-?Ph74l+~)XpyiLXLa(oZotKtvf)gOcd zdKhovf&?P2>(#zFrK;CCnCPrO=H_@CoQJrknhDULhfT`Jxg z?^EuIb3aj^|7QdRGXHG+ArZ$hT=q%02Z!J-J3qs{8~lS6+{6m7l`}UxXdL zgo~74bG+H{J2+mhDr}`-*v_!Q5Ag)$PaS{Z_)9!X<$sHpDmUVl%1!mG|I+`29sW*2 zh4NpHy(ino+u>@JpNi|1_rsf%yGZ_*VShcIWc}Bug5D%(XFAT3237uHj&rbF34<-_ z4Z+3OzLPrD*v5$k1{(zE*%R3q;Vi|C<@ggj1B-`W< zEa$IaG37Di53tN=j%k0P8X%8g@s^vNJ-AgR$cIqNojq8g;_?i)9`B`tV(Gx+ce@!w zwusl_IQkTi>0jCWI6o9(3T%Z5jwj)ID%g0Drj~8kt_jwEJMUwaAXD0m z^#J~Kybm|f;UHR-`~84*G^hqV$njv@sNzFI%l(JnfJ{O5*WnZ&i_5`(t zcpToU@=wR%7L#9CXUuNJ@$B*O9 zs)2QQhw=uT{bSg{i;iD){5ob0nf_Tsn<;3X8Lr}YaHC$;xKLdg-^WQeg!$WWd*zRD z2jx$3C*{v^=Nr`P|D6=1tAwxc0m|RtuFBuxZpw}LK;@rt59MEQhVpOtptvg7OF>WN zzpy@!|A)h^sU@;LJdfoxK8H)U3^*zWkW2MyEISl2{sGGlSPx#v^s zrh@gL%Od_Uv<=R~GKIE*dMt}Bm-=$^N@7OrCKs|yJnQE0nebFxq!#If^{hW#Fo}fa zDxnBh+!8jh2$%kuY5L#;C%k|T?3>X~;iam>9k>?TH=|RY=G|`<&y7>CMKv%D?^X$m z@g4?X-;90&XDk>utmLYSXQZZ4=jt+x+j)JYTXCRX=)wAvS_XQV_CG;1Mq6!{{4qv zlTCq~HZ~y#%V}pl1j}h>eI%AOVto{rMP@w$%ObNr7Rws5J`T&8GWXx8cLD`+7TAP* zEUVo56fBF*dMuVjXFU$fny{XLWldO5!m_5Ur(n6anEP*vH=dWNp3D4t<)Ubh<9lwgRRs2nyue=2>R({{{N8-3j_=JK6<$vR{ zj^O~l!kd(LOT6`%rFcK!aO3NFSRcZ7c&R1>%8Lef%Zqqv7MCe)jsykcFXz`}DmSSH z<(PMVq3r;=IzA9@Qv>XU_ps<_-oKKL#?_s|9UA)r>#s%?j3;5c@??A#4cJTZ)wmL; z|G(0{1k8%!+W*en9zaF7=rDi?xvW9ZYwwF-AO?)PASA(^UKM2(FsNwjd**xm6XSh!5o zRi{p!I(>&RybJgS;4d)z9Pqtd{eIvb93H&^XTRQ60mjj9weSUEhCl(no@-zNi+!sM zjt5@J;S)0Ws~LO>@KYT9nIQ@`^{XjV z!G8l@iS~UMzwppsW72U94$I*F!0XW5;X@1$JqZb zLcx^wg2uunz$bEeF7U}5UI2U=hZh0UkfkrY9GHeI#a95+kfnGTFbzTc(EWdif}f(` zFqF`Cd^f{sgZqGK2vWQjm|yn~16QBcwqFAC>;3|`-84z}v6#Zbn-m{gk9n^)lv+H&<*0h7kk`riQ4 zkYO3a{{h2>W$@iW5Idp3lYwc>;&l$Z3z#O|2qw_4xE_;XdJ%YFbE+YH(3rum0gvJ8 zcLMK^alHTGx86}Op?{UZI~n|52LB6qDo6h@@Ny2f0pHGH;Wrqv0agA70bffv*?)1& zN(9KHtl5sv=9W6bUU%QFPu0p7$lSOL75!#4x(;P9=$Z*%xg z;Qbt411t`y3jA~6$st#8KMIy|_+i3Bs}0s?@UJs?Bk)G7n&fFL{0?{*ho1m`A9yeu zqE_IL3epDeqkzUZ#UBDU1E-tC@Qn#h>qh|}J*`SV2Ka@qRq;6B;bFSW%x@lBm%=B+97#>_<5xG(x^0i|_r0be7GNrvkSU)AOacsVNbvW8Nr0mm-U3V= zoSD#vg#kE%QV%yX24@3P4|lT$w*k|v9>(hDKaT%k583`3fbZf~$xRvj1K_P({SSdR z4o@`#=69gr{U25h$CJRqtyTO_;ARdF{XbYf4xbFHa(FTD;t}Z!@WbXAd<~E3{C^z^ zwm^U{pjR~M?qN9TBmxk?Bw&gk1SSDf{0J}!nBsN7Bw&gk1ttMg{A=KJ4q*QGC~QPQ z^=WPU9WXx!p5W?97@jx}A$Z`} zR-=9!CMxw{D65~ry^w}vA@CEZZ=`zs|82m$23BS8YT#YaP~3lNau*8Jv1yO-nGEm@ z4nG839#^ej2Rwnp8#4Iu4BiC%6a;r?5ygs+j_KL^Nrfk)U_IBPGctG@@RMBq*MXn9 zV|ZaX-byOJ4|p2{d>1bu{BPhRk4Xh?D0~8ZG>4172Ytx(s0RxE{G+r1K1v0q7bH(( zp*Jw!iXe141J zWMVZImIKq6ruaL+G-N5h5txP~#Ww-31a3qDbzlR-Y5i}3Z>`pcg*RD2O7ITw?I7sM z7z}(e!D;4 z45#(?0Mi^v@%_N@ki`X!g$IGBde!eJeGF)%OC&DSDl5HFY^B)i$A96bqmONQSMxq8yj?TlaY zenfKaZyH@X+N8*r}lH=_F+0E#ln1!fEe7GVeliao*1l(8C2V^=IW{a zGnw|!a`n{y1!~WK|Njz4Knxn6>ZpMx;Of)b)(e=Q6Nhm1)LzfDx43!|U;=Q+GnmK` z5Q9rH4CZq6#9#q1-+mESPwnr>wErV!p6RHO{=n6zwQV3Ur;)HQm?IztCjwtgrZIk?q6|I*cmY>G9e5dsX9C~O z;q!r?{8F97o$>dDoI#6U(tRV6(N8b?43%nXC^ zTs^f9GVNz`_0)b&rv3bCJ@S7*aBGIakE#Ud3QTQ=!D_Ca+CP(N|14Ke?O({Wf2qA5 z>z^1jBKpK@poyYU?GH>XFt5TxxO!@@XWCm_Jqa)&(|%%FPx~J+xFo}1Zb}df0aKe{ zu!yUt_IG63|Cp;M0oG*N|BThg`!6wgF2i6;hQZbhgIBqFYTx78jv71&xcb1<0`nT| zo7Bhek2P>yhQaX}29q)jzQWa$0P`~K7jpHafyJ5j-;C>%_s0VKB*Wl;GYsy^Ft~@S zCjnl}w11haCjqu)+Ha?N_WoFagP-fD!b5?pPitEVm{;N9Ts;Z!rA+%TbM+*^j%Me8OE`KG@a7D^m0Ue_ zIJ_;x@DAXaQ_6)&c9JS0gfr5D~n41Q6L|I7yA zb-=5Dq48LtUBGLA*D%~~OGo;z06#guTv*KNAKeNKE-e?f5vKV6FJ3{w;ErbC&X7m_O)6MA7MPP_P2s|*!U{VBj}(1G5J-vhv_o-0$PeU`Zr*hC=^S! zf_i+z{^XO5bciN?0z2~i>a4#Pc=6Aw0=)-Z0>3b2xTp<5B&cu(W4NdR$>Upw6|QGJ zdK8#Gxl9H84y@sN(Br+a09O}r&$lPhP(Q4V$9m!CcAiHMS^MP&A>I zBStjDzyGt65&SnW{hm*XcLGz+=L@WU%18*bvRc0en0}xrr7wjyMV*Bs62zv-HGgw#s2}`+*)ooY?6c_+Fo78p^pN7S=<5q$i8xX zKTkdW1ekskDjn19It1K`-HuJd&}v97t)PK^1tgaP)3@HKM&})eNeJ6tW*T}Pn7)o% zkaQp{sN*5wv*q}Ee|q6-z{{{XjAT9h_5_R}7^Er{PKE}=>X;q}{Nw@n3+x3`&Oq`S zHwTsi@8a;?z(54Vn*V;*+82%Bs+;><3%RLsb4R}_6m~Pggx#u+$Cc&XeJNR?pZ7qpmiueC_QLqmLm@6@Z zE6xYQL-DH^jKL?sdw^FkeANZ`#5#gC!$2QhdB1@u?1XEA~aK2$NhI_tj;On>Wr2dn=zF#VP5 zbXlqa+K;IEj6N{^DfZ=z-n3FVFJ7aOuuN9;&JowqlO!+cngwF=^N10 zvL1gq?84uNh3)(Mf4ecn zDV~g$o)zeZW*d%U*p6!il4iMHMf^0xQYYfD8`f4Q>TZbD!bp$(t5f7tEe#FSaWgy&vOVw4@SuwSy{s2l@(JOYuBgwIyFM{Xh*(!||;^)HK7XSgF=) zlJb<2RzIoH9jT*sV5@gW+mWH>ix$dF1EPkPi{+B& zs-j{0j&5s)X83X>y<8kWQP%@kRBS~zbzQerIi8$ssPc8BMr*eUMnBs(Y}pqr*Ks7p zv&|{d|`l@Ow zx*|!@fy0DJ%@!7x=Gl&^YKkY>R!l!_lQ6ktYPw=dz9ze_D>;S|oqo9Bl=I|>`fMw% z?H72Gtm&rc%C2bWnmr|2I7o1!CEJSqqNx*`N>fZnR}@`$98Z%C*;Ud-UtRZkFRI9L z)b|NtYN*+Y9k{k+n}I5dv30>5I%USmvVNh6{}Rh}PbpcgpHyM2!^BMGi)(&LS!gBH zA$ypvU740y9Su@?Mf!B~GOhT|{7>p&P58Ae(*o_>pey?5-tEQ9PR-S$LW+-fhCI?} z_KxBOp`v-7E(W@%xw>P>#;01ridwkvoHO*q%Bpki+4CghVpSDgP4su(gB z!$5T{U(yuAS53*pe((B$E@SfR@K+64s;IGl$TXHqEy1hx(nXR>tt!#t-NgZ&MZ0Zx z@hc_Ccj3~Arst}WXHFc17aML>_5& zpUtD!3Sq~sA+JHY+opCakDg2czx8yY4>O(3?#`VWWa!C)b^C%0eRek=+WiZnyZ02Q zb{@}z_ZE*evJ)`&_R~c_Z_y(ALU;aUKFnceo-Wv1Yl=jB;rw=@{lnhk=_T2;O(PJM zz!nulH}q)ao5ib3fv?ND@1qz;2G8}Q2j46%2vt=V;V0Urq{HttEDtq~s(QL28-Zzh zm3DKNONm9>e)`KLHWK1!)mz0%z7XwGI+w59zMbWhrd&fT@*FM5?K@vSDTcIuJ;<2A z%oWY$tb7U~+IO^EuCf)T1}m3V`4rl%f8s=cdZ&0%C?lQ_D7I(^IOZV~!MkVqg0=e) z`K0ZBK?l-_wI+YnY3)E;i!{1vu+V(VyTy~D%7J2!=(isfn>sJV%?GgMTzTo`b1T_3 z8XE(VUqXgzn2zCzIR2`Vf#aTqL$2hwIQd~;51dNX$;&0JI(dc~=CG~0nYnB=vc9oL znoFw73Xs-^`r+R@n`7VUnn8CZ&@V3RXVR}G9Q(YQB@ zBcj_{i_=S@jQvhE5DXE;Ai!Dplh)!<6E#P6OdKUG$1)X1PmhxI2_`AgzFk89=&JXM zrM`OL+oJ5~rs6raDMklci$_GKd{jKR1gq)8N{Tj2E}}6;^vrw3k)a)^nhsm(*|P1Z zP7-FQuKrxDNX!h@DJmb=BHpKWJ3nMTXqGFAtV9ofR2(oOmr${y`#&lkaa1m$rqGZZ z8ls89xF~qP_{GpefJSpQgk~&Hgrmi;@qB*mYdoK{-S~7M4Qno=c6-o)wk9ctD|ON9 zo%j+C0coHxq`+wITiQMKdS8J(ul*I>zM&^G9Z|mziUWq{3Zg^{-Y5=<791k4W{|3|o7T};9~LhzWo<`nA0}j0waL#q z4S_-!*#O>;B>BFhxPd82qN{6)XjAm;*pG^%YOnr&omPKz=SRiiQTTDO&(s{Yh=Orm zLY@#6S&d42i!ITy|1S2Nkxz|2Yb5sEdJ)?NjbR zN2QO8U+BCyPW-qysB`JX9~VcSs^aPZXExK+Vd7m+3slQDMb8OL#Z@KEt-#c=#ga!F zz4UQ$TIbhDJ%#4}HK%1{|EE})TvI6$j)v`?o@_a$DH)aw-&=FsK-MH2C0yS?xYSZ~ zv4WuTp5mD9yn~kg#krw~zA2h&YNmqts@fs$W%{OU`ksq8mS(G_E2_SwdbTf$7Urrc zR^nJ2arDZ1uBv8D5y#I{;*qNx@wXzS`t@JG7tl%&?~)VdvQ#fuuF)eXX^=(0v(QAt*9 z*L5&IoWOEaL})fP3P(mILFh5S4{#6X!o-O<9?Ghcs8WsWqHts>TN#~G6h?F|B|kQr zR}}houEKm6(ZxHo+V6;G1TpKPnO?hD6c5=dp_ULB<3zqLSXwd5mTYfhRY=jSqA;X$ z$1s}U*+b~r*RfO$hvvYA`(+zqvIJ_@+}|V&Zpo0RQ`g3f>tC}jdcB9xztdY1o!5AO zqCZsBeiQnNH+5nM?G5f!_-d`f_KqJ}OIj(}-IvyW%XvL(yd@c(E(OL^tR?VYYq9Fp zOZZk_Q_)OSlq_Arl(&QE_FlrkFjJTeE!pejAKNZ;3Fipa3p5W$2*-9c+=JVS@2V5k(ol4ALWr(!aB zIN8Pn^Th?7IT6DiK zr=%E2{V;XKh9hhmo)^7)zi?AYGBsI7KYSfo2XKj_6%PoeHZAFlrb-8Wp@v`o!+(qhXt zWJSWIy6pzOjFgv{x`dE}2#*uD1P-p-Z97`{u<#Zxa8+5BWXn}F8|pWwupWq(DNDFZ zFwsax1Qr=Gi4O9vF)B(o9B`D@>^XDhBk(_Wu^u3f^6DePiV3+qQ@z%ZD*D+kgx~dr z-4qe_a1AZcbj^&e_@yupw+uB>PWbC2P3%V2c*5tiP`hN&phnVqK?!wCU`2z)Qk6g# z4e#@-SdzMYY3EUrYhOZ2=~AtwQ|09o`dh-Fbw6D%+}enR=Hl{M zcHp6jhOcYU)W?KMNyTJxBwfVXfiv%l(T$G@*OYWwHn2=_rm#&!{IqDn24P^NZV-+x zS)v;tnu3tNiIFlLs;cxu@E(iX*TF&;aeXu;di{*1QR`mVAha~(kLjmTO>NC|qnJWi z->m3*Qgj}l+CoURr)KzRR-*R#b)jXHapq?*2yj4>O`+CITX;8I`saQt>^wgIqA`_4 z$0<=#6;V@E)shVCE@sraQTSe{IW}%WFV#ue$-2$78IkFk4`a3hO zlY>PZT59)>WLpyL`JK=*-8Ov}L1)~*VRKdV)M?07zuvWg5wgLijMXJWbZ}O;JXjY+ zY&W2tI}|P4APk6J+9X_35_Ls~d+5oY?#qtqM$>*Tj4GL)iZoH*b>KVbO5jFMJt_pz z+rJkMD>b!vH+-RKMqdr-q)2FV981@6PZ_=agz*26 z2O@fyvYKirxcN4;ZhBDXkhEKv&N}GKq4piS*-cksHI9E$xOkdn1xTC4m}=Mt;3BYD zCuyo{AX0=23`fCzjwx!gFH07@3^?MFTVaE0ik4(5s*HG&CW+(=MpOSR+*p$7jzU9g z53TgTi2m_sVNi76ABFkTM9mN2sYxc18ZdAO9>w!K_l>MSUA%Fcjho~^3RKC`5Q6j7 zdfCR4e{Q7t17J>7Lt&cjg?5rTLbzH&tifWp$MTpkc*9VDNfiB*5wt-`g zrCV@x6wGTCsf+MW=gz;}Px!+=*cx4Wt8^n3xLV*TMj%U?;~AdmD;0_L2I1Kt%jaOhbo<#koG-Cu{n=Sa%-YxB5XE}lyIJTRik^kU9M6<- z-3Q}<%f@(m=4y%Uz%`gB407YgiB}U=kf96r61H4aVK}fzbYzajGUT#Iotn?iK|YUJ zzR%7g^%!b!h|YXYm^;?;4EQHHdq(r-)6DEbWrKk$B zwM4XatdVJG~$>iil(Ni*a|fycv-p+Cy{BR2H!-TxeO9J-CU``A(=4G zKQ9a|d9c*DHa0BPQsD7RQNs(u>XNGCq^`lVQ!>AZQf#JvG-!*^yM(VQkQ1#rlI==T zfcT=eMOae8cssaVP#p&e?@&PW=oaD90Twd6MQoPX1`w%HvFdS7G~+ARVbS?73STN& zvSeZ#w^U3O2}UKl=S7$p+#t|d7D)awbF=*Y!l7gF^#R3Cd=Wk& zR%-jERzud97ve&)g#o}R!@{9nuJY;=S~xhEri@XNJh!^vb!L?;%)Gnkip*Sr8j7yP zp;9BcMozbr&O$^#_^U8}MxDHCuuk{7&YW)^+jL4v@hwa}iobY)EF$>#`0F_IV*xft zKYvXa9_CtkB&{Zg#u^s3&W%Fu+DJDj(M<>N4cG^Fgc$cZY1t%pFFRb)<%>qlb6E^6QRg;^P;UA|AG- zA^j%a2lE*-f42tXdO6VaXd$1c^C(8M-xH21QRnfW8QHo^9xTR7bj0Y*ox-^#%RtZ=pO)eD5jc`>CtMLm!sk<}6d*RBYqCaMhm|}H zQ70VrZ9~&x>^v%M8Kk-Pl0`ngvcOe_f)lojkSpG9>CuC`g^AIEcZ2~Y2ipyfm00Zv zI9gE2b$=ITln}VK4QxUN%(vou8Z|ic2z}A~C6~eQ;{v#%p9%RY(OAwqXf3Jot}wQ{NHBHIBnS1=?3-IrXri5iX#!u-(p3xIzd=qH)`(a)k8~%k!6LTu0}yKo9GFN~hQ*Oo zBs9YR#(bHu1x9brd%_n(#TU@HC`ktaFbDLS7?aG+SY zU)UPmd_cG@8a=wHPyD6%INb`6>xe8|L&2wRR(b+QLIe)aa5>z z4J8~x5Iw-w3}+EXYPfJio5uIGkTBr7nuF_T6;YsQ*yyHH$7-5r1g->63E^^tpV=ft z>IGVA^iurng{dOOOMC3$(TdSceM5Mh2DTOh_bAwn@tXq4a;woOnYk`pJi7n)RZsO@ z#CUMEiy#c576v}xQ@r%Lze@(1>EJTNzP4UTx!XHos7QMfI~cYu`+K-w6US-yRpbgI=V8J676%BiDRkG}Ae4Yjhl a+8w+aJl0*%)KrB9-)(EvWa;1Z_ijy1Rz@qMu(B9did2~X%V;VLlem|PWEgi8LKun= zMInrD2z>}42_YY0(R@OP{a){Lu50JL>+w5}?}zX6dcUtf=Q`K-{@l?m^ zE|JRHyY`H1dS=L9T@wG7d2;i;4GrH{R=&F?y=Uu4w6;qkmNm3jL7QfWMglj_w`% zzREU2`U8@3Z7q6*nM5J{UZ8JrQejc$?Q|m_f3iP%;}LQ#@k#@wGZUsZ;^^LTfQu$;n_C1v`Fg!11 z$t-_PJ0vQP7}%lmkYdo3DusJ*nGqzL4TFkBr0-D-`>@U(?AOi_+ThYx2&1oap2=JI9PnN-RG)>5lXJ zP$`jfK69`-QF?x_Xzi**_4%_BsS^$lR#ELkiTnx2n*aa)M8$-0iH!43j@B+tOgyh& zwD$Hy^?ALb1-B*Eqk^i$ZdA*Rmk_%lQBXo`exei=%uOsUDZOKS-{w30#d%dCZ~Up| z|Gz9Te|%|T--K>!exC5mL5Kg_vtJvpXU<%&ZBnuXM-qGcw_CD4Gm@6r`ACbzcQbmlE|@jNOHNsLK_=7r#)FA= zGnu*v5?M3)wJw-8CB;UDEl*6GF(Yy1%$!dD_wAG}$=xV`w(-XP#&WskEBaL+m8ar4I*ff^-eEy+{1N~DI zJLa{HdV>;m^9HUtZ9!hE#Iw~$C+1Y=C35DZuBoe@*ebF4u|qpvF3Yyrl8(*f-zRN1 z|Nb^nysUHNyLn5Oty{V*vg&~)qX$RRmlX1kbyEjNcejj`tQ&qx^sGoEXUT&_(N|kk zSI4~UOJd&WB^R9{L~Y7ms?2Oo6R%3zh*`SL0dA30#T$_zgt8myK+cj`6-mLs4E(_X=`wi@+pi7^y!~fy6M}+=eD)ftaS#%(a@I>}p9BdJ9 zD6YmbAc-$Bw((o=3gTT%{9|L!WB+9zwo#D92VKasT}?Y(Vm^Ecyh{ln`>@8+I2_^4Rit0qG#EC>pMe7q2EJ}Ty|GVzy;ZG*4i zilbwV`LAK=AlM?_Mx1j-xCnp2S$Q!p$qeueE-+bnTs&=sGbvcB&f5|^l?paK2^Z5K zJHqgyUKJj!I#`F7sr(Ii5%EJz{`Yvbir3+(ah1@q1&dB4bir2=w~OW!yiLW6aV_z- zrh}_+or=%FXR7ue!`^@x|Bx->t-|qTB-r!#QwrLtgdKP-@iad@>NRiKbcR~uZ1M|; z%ORX@4A~;y47`i_ZG1(&yYW_RuL~Pnvi?hHz^>BVR$O}30Q%$KsBo}pU_72rd@BXg z;q}JSopiWB>W|Fyj_?)rR^xHlcKA8or<{_;`ImoYm~a%k+6-r!21;)=8Y#G_t1-mMmOTl|M|yaNSETzG7SLvcIhE;viMJC+NT&CkTAVmo8S#x{NimTSHB znON>6#&Pd#3aY{aZyc^uJ`W#I9*<>@ZG)4rT)M5NV!1h4Ux?*qWPLG~n^mxJ|G$KS z8!0HHM9%A_#w=AcjpagPy$j1}ZT&r#)7bh)EY}U$SpQLP4+U~w23yqIi{-qv z{vVdp(E4|r#G*Wj0@>ppoQ`4}&%&~3t$SlR4XyiNIZfH*{ulN7Qjnlv5|ReT8B2!5 z&%<)w23yn{k0)}LSWm*2D^JCp z`K#bUWPR+{!F9p97RzO_$FL&H243Vro+LzgG;5%OoW8% zuv{v+XZWtga%Hsf=nuh#>wFU*hGh}*oZ;s$#IgvvLi>If%Od0^=zEVeWai(K=kn$Z zeW|*(r#U_tr~Z&hE!mR2LvRb__E;a|3>64(_7jVY0VGi5EsQv6A`Z=o&7I4J?2S~JW!m%ql!4# zBHn3uj`DC^qdXEHPy;>}?^5vzICge8Ba3i4mT}4qJ{PB;OL5rYi+DT<_M!1RoU7tL z;(QfvPhz2pcfzL;Z)Z9fhR3P+X?QVl`^*@>f`T%YFdO$$9Xx_7Rs3;0i@1H@_!uu% z@$GmaaUO*HJxr!2JwvH@MVKG=T2ZiZcsK*CahJ2gHP8m!Yz80_y=-4ykoMmKpRn zx&IHMK&H$loPgyRSr5VbEGWd`R^L#^Ss*iX1ch=I^s5VI&|hSD7M2;Zeir*@MU?Yj zF1@Gh38pA!8n_9|jMxhAVmWR0Q9<%A{5hCnd)lqUa+YLM&5!R5&JzEl7WrReIp$r= zy<~WOaL8l4fAK5qr$CPBWHW%{ehrS%DC1Mq9?N-Mig%5O5tWS(9=Q07m@n}RJZ@Cz zOYxkuLYL#m{2BJIe^Ku$3bMw8Q$8EdSH2eCqFjmfA(@B6t-c}Sm!QJ~X2#~QLo%Q& zQH9nF=s%JtGL|WpH!Co_e{RI z{-<~!s0697Raq+hhAYOz7>;ZaZ$I8THs(wGH(sh{=wGa7C?Z#+#;v|#&;R`Taj(cs z$tmoibWmaz$;*EP4IV@#nV}@rfDGs`+~wSuX)@wvL*{69c} ze_F8z!#na(OC?m``Pg5C#2?1DtNi!yXqEpbUWR#{$R0<%EN+u47(g+WLvoKXWQ%zB z#VOc8g+qNty-oOIY+tMW53f=kbR+Q*PP6GIzsOjclP*rjGK0Yu^+sTQ_Zx-fklJ{B zGzD_ZZNXS9$JF{$H9;ZAJ&r_a)cPUT9`;;%jN$ikmKkk)LAjjBtI1^_nUxwuv z+xQi@P`LujA+Ygl@KojNaJlkaJipQ0|L0R6$J91(BbH-my$H)1vAzY%A+fH;atN&x zSPr4}U6RkL54I%lZY*bozr{Jy%P7zno(FKa)i*5PADrj@dCl##`=7ySxRWHg-9C=x zw5v52mM^dzq9cgQm9zU_!6C5smPt5?0gB_2@Gu2(jBUbqSdO7}@4tER$Z49-i7p+E z$Fitmrh}wN#6QiJVu?@Xf3hYfn)r5pCboqc$n%}#9mRuz%mD54{y&=RJ*4(nu552$ zJtLb`Ty9S9Dog&)cps-(utmIj94j$9z**6y6N?=CcT;={J{G6Q^;gc*%P2@!74E|) z`UydN6E2+|^S081oX6*N4s1Idj|Z3Wgk$1cjBWfQJdSv+iH{{wY_9(i?_3HpE{XY5 zE*(@G+XfQ2j$71*4w2;VGq(AE;C$k#Cf>ViU>om)3y8<%8P4A$Q(zOu zWBIY7^(35iPNtVbfefGu%a0>%{5CvM#b3noqe>fp881`u-IyO)+WTL``-y^WDxpI+ z9-&kNhvN0hU2xKju!HV+m2xH?H#3YMhL@fju8EO&)6967a25rFXN4Yv7hW3r9K7oC z&?UI~iqI4A>Wa{l@s{(#4sXF#SI4|6FPQP)#c>LPE#m!2!A>f)q`<#PvLkwrrbZzIi{acAP%;uw*$*DxBd!`RQWAq zfo=RCENj3z9apLRLB=+I0_)FT6t-Xp37b>}IYY$37WL$C${Ml03@33+t>tKRQI?~T zhbNIBGy1SGWQ%%_%KDQ<5o}R!WsLi^@+#~x<-r#9p2q3Q&*E(5=Wwp_dOT72C0wqa zl3$5aP)foDUNFKRj3HaptBVDT$S3{<%Nnu%70a5i{te5TvEGkmjadJUpCnKl3AvK<9MK#(@HL_lAqR+A68x(Yy52YHkLIb zJ0S6rRuO*<*!=sktQp^Y{`THWi}>fQ{jArweZ*gcV@v}xu`D_}pl7fwvc4vsuBKe> zhW&BI>=;qmBHln;7Jz@Ic*m-I)_;A&p#4FGyhw122CD>VaDvmoWEGeC7br{qLMQ)b z6_@;5L&yD3KF?54d`)=!?8*8P2OHmjz@^w<6YP(#hIvxCjH!6EQx%*uk#+%`_ z*J0+LE#jq6Am8K(wusjP%Qt+i)3AKA$NFHLHaGMkxK6n}mTv( z!u#gQ_1E7b-pLfSJ3mag6z4361!1a`<2>c7@Mz`PxJ3C{EQci6qI{>)^Da@Ihu4>6 zn*JHl4HRr5!9Q*AGsd=owOIDRdL2$;z&8IIV;lbt%MMxZ#`-My3ETPS|EX`dhVxpE zQAQ*<3$8ktg~lG`5|u007g%P*UqpBaUoDdviJAE0Sk^?I@#k0;p^dj}!-Y-NFUKWu z)xmZObO$FK(zJueuq;B`!8WWrXx_GI2bW@5WZTSu9>#La^UV%^jpMS&Mw*0ELd;a`xkS}8?TK2>BRM47R9L~ z$ffdU|Cj(axsbHU;;dkXf-T~;!}|8w5f`Xq+zIPr+!cpgeZ%p*ft33GnxVgV7q0)( zKpV1T05MfT25=Hyc4N%6!CB&TaH`6eHS|9&&61x+4OuhADlYBK#4A*Lm&GaAxG?PC z3as~_LNy>AjO3$~G+=i1!JWFELtwhBqqjz}e#)ztR!+njgl^hXVhYaNZw{lWq?i7=W{s^Kqf_ zAUsw11Uz4P2(G;|Y_AZHYFsmX{y&9+RgDEv?=-wYc{tvzJQD9$J`1O^1Hl&c#$eeY z>vOQ|v2_VP##-M0PoQ9lEx?m;jq(L}t#T<&m0O;_MZM`bLwN?)Yv@uOZuJdqxtz<4 zWHsaZ=RcECAX7FtDOj~Tc|wsjQAUEq4?c)TG~zK@5zod+%HLu+=JvwWt~D1ToNDq< z!c$fLQ#dPd@czG}TxwMVMOYS{ZQ!rYT=|%RbQ+Y?^fi{hEYealz>2OB{}9;t8(0q6 z;U>R%H!f7z#!tm^2<7LGeuFntAZx%T{0GabEiij|AS?K){kWJgDO1L zwEwvppv>66IA@u98`^SD*g*z%?@SLhdg$7>djL$`Th*x zVQ~ud6HO783c<$ve7p^pmEK8w|7aDL4hASo z{&`ORcok>;*EdX31ybQgr@|r?mkw@Gmi#qN{_`p>`7bC-{#QDm_3wS75~RX+%2J^f zw=q3Kt>w1Xxbc*%EcwSc`Nyfaw12!Z?|(;4c3!>zvIP-V$Ku`%Dj|D||CRf2Rd zOj#;i+*m=HP4O;Kamk;hEcv%P`HNLt@|Rdk|59PSQ{g3>;O|C#!z;>?|CN*fjfzVL z-ziIe3b#$YhFZvNl+E9NsgPz0q);mKaVqpxammkBmi)7w{BbHS`R6H1{&hjV>7OZ` zs}iKbd}XQdSWrR6$ClzfuHusaq_X61aq>S>amoM0x9MLh{OMFU;8bW(mi)||rc-(t z4!8P-Y-Pzm-N_#zal8LAqESwTa;L&oDlYl6m8FCG@K$y6S&pk7j+rs>t6I3MafB(} zqd4qe8t5JI8?c|(SCU{i>0qVH6<$%6{GXis zpH*D)>y;(H+mTInIPUeJAlx{{%2Hue(+b{b6_*aiDog%+C;vtjm;6P_Npk;R=Tvx6 zB}j#rm8FAkoc!-pT=I7-Oa4JT4(mmoE|14{li&Yqs|ut-zEfe4ic1G4C`y6hd_rW98XSdOKs`^>(SX@NBIW5R%y}8CggM7~jpF!OJ zv`zdeahw91@C*ggf%RIfFC6P|xYakjs4RQ*IbQon%%nuTFQxvYp})oxRr|Yee3dHr zUMe*9z%Pm5aI0^)zE8w&kRO!zpa1{B(xH7`C_I9JP#j)DE41b$dfpeOVJX91-Wmpc-+Z zN{|jNz^haTrFe((bbLU02Hs42tr)bdfu%TOMa=9%#Jd-lJRbV~xFk$5uSlryHjZI` z3h_R?VsfUxc%{Ma0~i3d@zd~9h$8lVOJs##hH%Z&VL zY~#OSnNjQgSZ37vZyde}jYqwIDbR}~GSKAu|Kh@QIPZQrhK12!)#tP7WevoL%UiIb zz7c;$`~gMz;WL&QvuD9(EHh%=x*ul=^>d|uoCd~FAdASpM*9%UBAM7M=-}uho4yGx z$1>#?(14s~Nov5dXnSJ4L%md7R{i11{^$Qfr@|>JK`NZ4EFH{n@-J0!$uC!y{H0F* zykzV1|bL&YV3ld^PB=j8vQ;*$TXvgCI-#?Fv`|4H!tSfS1C*W3Mc;w6_@;{jQ#$l!e*z!`%Z-ql_mcleC)JL?-d3lr(t$JS3jPEqIG^H6DCH*uhJ<-LqkP zuSi_^H9YlMb^qT;L6u5)3vW<<2N%;pYqLkc;dAjJ#<62LrnsB&>39(yZ+syG@76+`E#87xQa{u^~#d}fF$S!!lg|sc;zZC z`By1R{$eM8iHb}9J<7r7f2YEWDnTl|tSlXDck;hbamnAQEcyR9`TkG4?3Bvq|7P;z zFSAL77}jf|r;1Aly_6;YBq#r56_@-|l_h_g%4hwjco(SzsZgdY6>e1(B>#35m;A-b zlK;Gu|ALB3{)W)O=l>l}g|ET{=7m=-%F@9_EGpa24J#f+U=4Z=XX~!6w z_n#5(912E~(1q&q1;Iy+gJvV%N?fMm2aIjJ0k66+{HpfhC-BrueyMy?qP?4pZGIKr zyDsJ}mFtfr{Adbn!XBxxKIRpfc;<4g}QE#h5Uz;nEEC9YMThpS4%FQ-3+ zm*G?|81QF!|1^I7pJ57`4dHG@Le#h)Uau;ggKKfb#OLD}13bp~DV(lmU>jbh93AR+ zNVaTIFBzv_7|#q$K`I5(V6a8KR(LEfq(G*4fU%9|W9h(p5SBGyeFBz4WIY7SA+j#S z`{JtL6bjPVLz{3K&QczZ=O~ZF`U?eTVVQDUe+*uV?TpPew(~O0_#P1 zt^aGXQWEuU!H*JegJee58{7PsupBb$SFjv1>({Wpux%X5{Xg9J3g$q*Fh~V|O+@*d z4_NltU)A_BzPczgGKNa>$!9H=MVW@>qu5(?U^hAMzr%B0iJ2lkrr|2(pN7(Z`o-ZY z?{E^2P$byvz!c-4g@`u|Zy;{Z>o<*U{B4|7%Xv+KoK?M9JYpN~gEuJmjZ={KdYF)l z>y-QB*VGga#Hkl$ng*lZu{c9{FwRmw5sy$FiWe)#hfz?Y3X1Sr<5y5 ztVdyeOh-$8k1geEnDurnGrry*5bu9_51?iC$R=EjWy)no zq=QvhrqKFlEHh-^Y8@quRPEtdH3PB;ufRzgW3(n4?*j0|H)6h6|NP|>3d(E&zD^v3 z`6oXa#o<=paQ-o@dK$F9DLr4srNf8toHt^oO2m5vSG^f}1+FxUp8bz{A5ySfC47wQ z?2Hg^z)A0f4Mc~r2BwE+O<(L`e+J1PhqJML6FN_<*31ofR^T`_`CBX$$cTcCUoOK- z@hA#pfX^G-_zPGDXuSa!tFKzUiVqNvn)*K)+x$IP25j#C{KX>*WRGmZ|FG z9KR%jr5{;@2ULf0jJu!QbU>Ln-1xbnvgDtF7jKSvF_PrMbeplvKU>7RgMzgr*yn-& zGq&+JaRoEtUz%xRFRsQd{n}Bl^C^6NpZYex8_rcTn2qaHyf3bq&i%h}(NHk*KVbvs z;E-p0#4{g#+k{ z3zai*rW(+2T&m({;!5SQcm(+enE_mnYgGJ3yd};Q*#SID!7i1s4yVz8o#JnB>igjU zzsI$z{vlkE%2m80UaZ^&C(&N28PF*>en2G@Q_!D;G?Q=@j%^7$oP!IM=i*Z38*m3z z{~4^;z*=0T^4Fcp^{+-1yhy@o<(KhAG{{*M97DY2gK$7U;W;0M{uwVt9xJutmL067In*D3C=p+}OrP;)jWITKn;9jBWfn%&HDZ{keFpYHyXX z&3`&hfgD3y@GRb<{2bniTah3G+G%X_zr}Sb|G)SEZf^41oF3Tbx5Kgqtm7RikVR$- zI$=46)?Klzdg~aL)5^LhmNjGD3(IL~eK?l0z&Z!ZX>A<$j-)`2u}wG{%Q3SafXj^J zZkUh5jbC0YxYPM>1%k`r{MtJl=|C3 zzZ+WaKm2iku)z06c(tmq4G&ixHX9+o%^v=>+X) zQ~A^J9OYTK>Z_RPp8;G!!D5v#8?WNDw1=by58fFLU?skUxV;pAWE>1I>V1Ocw6^{X zFT_14kTuY3q*#6aPoY3Mv=v(54Y-S`(BIg`2jXqSvrT-Gv5il~9&0Mi#BVdU@jGyO zoCI5NCk1j^Sue$MT3O$VuvwY!SA zJXU{sI=@K7Sx{%(tyq4y+pH0uk|$#6(0{_g4`CUg^)4)D%~n%CYdF_`+2eEy1a5FCbF6K8U z4OZg{F|@^_AZ3@z7x{(}P)Wb6({{3|Y3{sX7~ z5XKKUj-1&vo`iE$eha)%xi!xEQQDLK89>{{g1{M$JL3YsLJ*JPWy*)){GVbHWQ%xx z93ScUXgp5x{r;(N31$fq;u)&LQsk+cyf-9A0;ibx#_OD~ z50>-XdJEpE{1N_B`4c>HW|;pO9;dtmmxcGA6z?kv!i^s~VSOcRbv*BMxbUAX8`)(oT%{=do>I zES4#^@w>5{$E!>SBMLBkn2P0Qb~~0mwwLCuSWe4!W`HR}`2Bx5t!zO)1#((gUyNl{ z*O(6e#Ih*!j28~&50kJ)CYlC2o)qy9$)RQd=VCb|_I3SzSP!^=A@6^6!8?Ub6DAF7 z>c1U-rw*CiJ0fQ_U8E_FTi}Ii5w|{z^|wJ4v?XDya)#rsj$^n^d zLPFQkO*_bRd>G!S2G9rB{Sx!{SN8ZwT(viJp5tSiI_?doV6Cb!#Bm`mWyJoXVt_M^ zgC6;r5SBf%z5*}Cy(y6E$Z}&Fe;CUQ1smW0dz1p1BAc)hZ^iv6kOsCI+xVwgX3Tm! zZinraE&1%gHlB)eiKkH@?e#bIo=KyKIUfJ56$=5LP zNwg+czB^QX8NgFc`_DAS{rgXS!&;|G*S8qT)Lpe~VW! zK>yOs4!7o#SVeweu>ahCO@ZxTqT?xend+bvuTs7QZ&AL?@l}pz<7Esep6>5Yls_uU z9{w8h%4HF;hsk3D+X1z7d=Snh-^LHYCI1WE5mzdAG4}5zv_CtrKmWABoye(hJzlOF zxDjttuEJUS!VYhDe3#?9aiPk;A8+_A9yahW1*yM>Ug7vj$E$IM%6|^$DZhvpD!+>v3G37D>eIN8(4c+5*np)&mW+SeHDKw$UsIfhFK}AQSu>KjT!Urox!B`J#&Yn-F(n*~1)@zXR+1?qizz zTeX97S~rYk{pn+rG_I+e;~EAKZ0rrr`Xh83T&&!|ac9Tf@KlxGGfqLy{;oqb0ha111hxHn{Uv54Opp+yz z=Cem~$k^j7b94F_%ZzUf;&E>>$4Ew$PJvvzAI35O>s?s(fFI@f@x#XQ2McgdV-c$T__6Fcl=8f|n|{!mE_i@m}TjIO*?jK%H=IV7dPD7mX<>R0&y*4|kk{D^&hb zxQ;bpe{5HRvo6c@q)U0^x)IO$CmcW(-tVt5fB&Q2Itn(agbjEF3HF)pzs9u37WIC> z8;J)SfA<6LQ2qtyjSAzxVi};#{|(Ck%;(Rjx1WMkMr`+>=edDxgFXX8JWMuALOu<_r^#j@yvE!le>>s9;$4mZBj ziS;6Wp3_uj#Gb}~U|DoKs3g~gym9<(n7?CjZ$3kof|n_fDN7-tkQrzu9Wo=>st#QfS)|4heY#c`EzE(O`j6YyH)sZzn~(b(WcSOy$yQLhZ2 zg7YYl9av&)siT@G#cL^idU;DSjR60lnq;9bBRY{J!H4&tv`1 zR|%hzpuHV$<``!%D)|ox{Df=C=laC{@yF&$0tbVRc%M7|5^quMe~Y&%?=E5e?^XqS zNJxr=Q~WE=Q2xWX&S@V*n@>iAP!q3Z9z z)yiMvEz1AJdzIrqIR$$i{|{$Gd-#u7GUda@2ewmwn&aWPkbL_&;z?th|7=soz2_(> zrGia(5if2Q`c=GMd82U+6=Xn}6Pm_*JMM$GsrpCa^d#Fp@Bi~CC}}L93iF69cG)4WGeo%+`rXGene zqmvus^iM+bu)udqJWe%mFwRa58*GP1D<5i{O>J2d)lU3Q$4l`X>SxLQS1N2V1;LOb z-p7u&;pM8sFC6d0wJQD{uHsTF1CmQ|`V_8|Eqi!*W(FqXwGt2ZpRZO^P}d^d!#hj` zJD??wmpOg_=g@)8ufdz_-I6P3@>JrNhwlkU}! zc>xchD&8B{Dd#vo%5ff!#|{ohbSwqhgK@r!55Z*&Ak9BuJaFKw^sxS=c(C%7j<0ci z-36?_I&}~?)?Y^39>JSW z7UAn8h=Yx5wc~fNoY%p|52di2$JSf$4m^SaIq&~Aw(){jvIeXV!g5Hg({TkplmZ#RAY&Up0pCtMYU1&WOo2@(!wC{1CSi%Ojo*Xi zkXYY`S7Ey*HW}OayLdhE{uIc7em6F8zW+}_ooes^PU0B#H5Gc72DT0M!LkOd`{KcP zfXN?cY~$zQONqBK@f(bTIPd>&qCggftx$!l@Uf=CI%6Au5z8XAei_R{YOp2q8!tR^ z*$*aMdb2NT`pM}C+_=f-|9%wc$L#I=1W}%X2a_eAj9T+nOCF=Mji>QZN}l1YpE#En zQ^ZG__))3@c}yRU3)G@MQ zIOv1fYP5g<;X9rbtXF&34sTID6z@~+W}Ia@7~{mxb37hrv=3)=inZTABb-LTM3pez z@eDjm#V^Oz$`yE*^0khycf0_P?4a)di%fx?qFZno3D$Su!B>R8`}Hy&j^(46oY%W? zt;*kncPRhr_>aKB{!0^oQ4l+{NASaDeAaZPTs1Jx@p(A4V>rNxxIp;={0IYVVFp-@ zD^>hXy!Qvb|Ci(^Bzv!zgko7_G9afygX1Vmc$sRjIo?W#_U3XlZkG`b@EE*L#V6w~ z@hig$w@|QIRk*|0U*!y_?Ilg)8IC*S9M#^*cpvTMu!FKg?-)b2i1$8@OG2u+n9aF5GL7}>RlmlO@A>@8zEBbyz6 z;CL&ppuWxj4DY4GRMTP7EDllkFy10g!Dv;`+HqUQ9q=rb-x*ga$M6<)bLxrrDEGoy zEW%*pJ>lUL1l;Qs)p*01v$d(w}_&r!oGwb{CE_{&5-(+m#?_xRatlz^)jcbDY|DUG7CLF+B zNU(0ea#~qOFAdHD>trlvfpsb_$59Go2l^Y^_&_X+*x%&m|Ho1wtJo$C#>;Ut3Z#Jx zjcxp5EUVo55-ewl^(-uBk@e+R&I0Qzv7806vHqjp)fBWF6DG{Tdq}XS$z#U0fyc3| zYU?NQeszpjW3F9hOYzp=aO3X-U~_wy>wh!vlplk$ARo#7{Q;hU{cG+4z) zlsAp%I_{54RsDRt<*=~*@fauIqOdsY$IWuO85fTssW{5!DIIkVFL%@?3~btIPU1U6P~E@yT>WmLI?JV z=QNzpDz{T~1zvq**uiXEq~ed@jNCB(xZ|fCKZ|ozetaDTQ&qtRT%r7$<2N0@jjL4t zdw84jM~=5Ob=>=$g59dZPMmgBxJTdNJmnu9|Kj*pT&(i{z~h)P`wW?RC5y1}I>P;b zI0aLW4m&&(FDAjiwsYQJi|4B;Ux7C(e}rpP{cXnn&5R4%@mDpC57n0U|HCNQL4${I zfs*_EEG!qEV2gT}<5bp&+|49@pRtWE$8y$KKaAz9vVIiHX=l9>+do{&`sXhkP*6!i zG8xjrC&sqIXLteeG!t)D5!l94@a@D~nRu?TjrYgPRD8TKak>6Sy-5_L^0QxCVJem@ zoArfQPDAU9v79y5m*7wEWC~;lmKxjmy;#mF>-({sMM3{mc#s19lv{&k(bx))VOccR zk7HRA)=y$tGuErItP$%qSPrrE^H^?X=Kjl9r6`cQnN8S$_5J%*9B%yR73()7A57yv z$HIjxjZd@kgj01P->MlCKG3|O>dWo@C%l72E8jn2|0CY;tAm1|6MkCl_-vfb0PSOT z9A{vAp<0Ra`iE!HQ;wg(qgDKQJm6}6|KC34?xbM3YOv*Oj=AyxoIN1y;5fWm#V^1+ z2Zr&B9nW-p8SZk7y8mBAL2P#T-2M>WfFn$aEUN$DdzJU&dz5=#<9T;0kHAZnuf|K1 zYw%rhRq#FqcPjsd7b_n&hZz|X?qMIiQ_aBHV)BnL1FpndusuXi;IwN(e}dzCRRfW0 zsi`XD;B@7&I8XU{yhYW25*MoYHoQ!^*>$V|<$l+({BuEcVPtmk1lMAkRpnDR|nX4uB7upC0` z_-zyvs)9SP93z`>CzdI#`t*I+pw8#Vss~NsI|p0|SILK0`TM_HRRy^=|Al4M7D@uk?E1>4tN2F8 zi|}%_%5THzCx@$kF)q6831^G*Gn>zl@p3N5?NbWo5!C%p8I$7!eVE;tel;6Y=O{rpEAuf#>< z2V2B@3Kz2j)@$%S+P4G#0yOOf^u2i_~>s9d374xQ82Xmhx-H zcE%fSl>5I*NLtvmLUWw2;%T^Gbl5=~T&di_c)i)7aZdbv#}gN_{uZkSE+ApA^2Ip+ z?6AX`#+ytBE1mdLj-SD!RsHAjF6Ecv6nJC84r+~yqQRQj@5KLc?A^qgQ1z4XKIN9U zLLH(3c${*4A_b+Y;AUJjE*wy`afR9APn`JYj=#hcRsC;qrSfjPFzhexwOz#RS0!W^ z+aJT7>%=EGo{YDu`WNCZSN8DcBnLD2D1L?xBkX{jB_H7ObLTAoM2c4{ z@5F1Bzr#yu@KDoW`prBqsCavvcCPIp;&n2f$Oz;#FVS)N{69$-;HfxEHEG4Nf~R9Kd>wm;MjDlGzp%1Q7J`!(M&NH6cESQmbPJE%`n{n#-;ee{~stIEM z{uA-;q#$=~D7(kr%IRN~YD+RGBVTI4|(rbEnJIxdi zyp@+sDn1BTDi`2Y%ERy)I*!w2+wo3(isNZGPt~7}Yn5l= z1Iky3;}mQ)9jtc}UUpoIyIdF!@D03L`5nAP`F-P^ru{>zo5nlhxUSHNf_@W+jRzBQ#MI@M^GADki<8r)B)xWx$^DlOB*uixqj8mRxoMVpJn@;>)$M4}PRsSR0 zoF^i?2pjN7)ls zRq@y36jZPXx0oqxe+LhdGr|FN!r3!JcXyoSxHm3V`8oInILxn_$;nbUWZ>&d+-f@1#@rm_xPZM=e?=g%g1jhPr>`IXly_3l~N%0YkLSTaeSHM zD{!I8pN;1$$MHht`FNS~O?XqIx&PlP1r^}{61a={e19JUu$h7sGlk>uT2h|=>a+g&Nj3%VsDz9=xi*^wiFd_vFR+Iw6YCi|%!&7L+!xoX`bXpKL4Wf6 z6ZOug;ByM>B3g*|VLQcZ@bB23R$t<}>%swji!;=vd^avo-h+2hKi$l5#$CZ#*LeT$ z+E^g_$S;*RJ`7i@2K(S~mEi!6#PWz1Y`oBLe5~WaxK#4}=MOp@Lcy&0VFM@QGPMXt z;-u@t_}REn`CMGQu!pxX5?qQOz{^y;2B*&p>#xLFIOv}NJVn81m9R!CEb8IyPYN1r zz!5H`w9o&dUY{jQsmebRFI78`hw~SN9UhDKE1!T1Z&3IDlPEaAG2*e^?_dUw(xE-( zcjIJrE#HV`kL{GdjrELecH$p6-YWSE)iM2y0`I1U`j@v>w%}G0 zf86#^X`1*}Xx5O-R8#8xx}5QN}i&hkFsX7pe)yHa;02LEH}T7GoQ) z#(i!3a{qtH6xf7UaIQ@t{)4fN*Wvyu-f>xA8}Eb%61M{!W^Cg{c#x^j^ABGzFaLq;6Y;>ufaozM<|f`?;G3rhgd${T7QgBQtf&71tu={9}WQpMXEvymbX;4ffl$_ zISp4RAB-0&AAxvlr$9ch+YY;7`Sfbt1Ix!{>ntpf(bm23 zdgVS?9=mP4FP5if>s%~P&F22gmqaO$$7Gu@5X)n<^|4q!NLUZXo0Lz)^3ZAHL$N&4 zSr5bV&}m(S<(bpm|D)dN6v$JpO&EdYq0)L3mWN8~(O4cTt;b^dWMh3UmS;Tc^RYbQ zSx>}u6ZrYREto=qJfm4p!}1JheG!&tKr`C+(#ea`folI{6_@(kag*Qw|3W25 z13R4tzEyE)z`MWc^FgxXR9wf5WU$+Eoj4lj^E^?A<&8@Ge%7B91RHy760C2;MJir} z$0^^A=P2K0Tw^-e=fwYXd_aC$y-YO_d4N@~oPuN3;Q(71mviZpJ(%vqXF0wc7pnRd zc-HMiuBTcurIE_x~wKnj7A&&cOxPK1R>O z>38&?IobH*L5^?6xhh_b)2MG3-HYNxkDxmBU&RxNkMUdM{{JHdBUOj(AL2Ecasi&D z8W?757umy3e1+pDaJ8zx8gH_e&%e)6&~9-!!WWJ0BJ1>U(|C8snK)n7?~SM48Mc>$ z7b+ixWyWQT%TdasK&C9%qTVq$3wNeK&f7`GHa->0A+o*@%M4myjAe?gFTu}adq|cV z6Q_SK>fK9$Ou4OaKh~@MK^$)N4K-M=`o~mUR{2J(_xNqcoAEyS3%>u)0Dh-nvzns6 z9si4Wt9UaGe(_!56sO`U<%1j_;ittXR%s$s&W*i)rsCNaHDYdS^o6ib;4L+da*I^E^ z>7U!V9|M|gptoa{Iid-sF`ItW)NAA%Pu zcXZsvarZ|!{!3MbEE3Z14Ldj-$CUdy?(cXY&Q%&!AL_%xj z)3HA0BXGF!*YB`C=0CB>r2Zz7{NE#*&MzC|sPSl3U)IE>aSHT^u5^4g-lj%;otOr* zr9ql~8Bbgm&e-dCj`CaBn`eHJiToCi^2mnMO#S%j6tttDohi5lXJgyJ7CaIcn|RyD zc~%(C<6m z>iAQfePg(WqN}*qNd4gc!(S+{1?-=6*%Ifg3IlLzZP?*)j*rJ>D!&xVbt2fJ-gGS2 z0qYr39|!%j2rs2Tt^+oq9LsgU`YJ5f0qfa#89tH%xe(PD+xTNxPE+g0v7DyXPhw6} z(?1QYra;b9o3IAUd20PUmebVw1uUnT^#&}bnf0q!PBZJ*agFjDcQ%c8X&i;Hjv3Z(w^ z#x}m-N!H(Z5)Lv6t4R>sgf&=Jwe|C2BYCCr0uDF+2qo6Hw!HIt7a{9%!&0tb!qSFs%D<7#yp9*^g!0iKN4s`%-6hw?}~`1SBKK08i9u_`zh zPgS0P%ao_$Im#E|*v7EI8F;Yr<&v)kc%>7MU*i;9hs#w1^BmuRYgGJZJpavb0M&S{ z@|}+FY3jIl9|e0=g@@cT?#9;nKH5?>F`BA^gX2^y#4e zAkO_SnSug3v=v(7g~|ux&C2Z@AL_UZPI@{(596yG)s`x6$PviY6z80_eC>+oWc(ZT+ z{uA+DX)K_B2K0Z9-^AY5uz`2+4&^O4{o^qHvE%KIzre+k@AprK-%v2_ldysB@nYpV z$Muf);f*T)PrOh0UtG8?Y`@v+z(M~EAk`Ge{>u!s!YfpTbjNM+Ru#{1+!^mu@fbd! zd>GFCO#S@7Pf!r_&j5~ed^9fmEZl=*@a7$%2jeOhVY)wj{!?yvj&d~~`9+w2r*HN1 z|9hN-`|x~K;UUM5;2ITw9Or%+cJMSFsl3+l3*xv+*g!$4@@u$U`Axh``CVM}RoLMc zJWlyz$J-r$f#c<>!Z#G;?F<|I9*$VRzr&wl{V!Do{YcR6?|7gzsPYFnJ^{;>FxaBr z5L|-oo7CyXHa;Ux!Bwilr8rmpxV;?9Dz+7_!m`S(XJh?DbS)0I`i4r$f6(SP^ZJ(Y z1$4PL$O8{=&Eog*h$MTIM=dGnGm8YS?RAmBJuc^l#DJ2B%Nvc!SO%PI{4ka^l5O%& zE9bw0#gxa4|A%Epb4>g5)Bt$|i#IHH_TXWaAU}k9)Y*fTDlX4(Z{q!QP$C_8yl#0m zFl38(Z5+45qrbKJ@rZZ6DXV1J_0Mz~zpO355fRA@vfa_FzSZKNb@E4FN$o?*z;^Dab`_O0N)yiWX zmpGn)x2XK7IDL26-bHw-Z~y)m@n$p@$V5fF%N<{d7pn%Y!E2Q(@thyS4i-3GF^E;R;vbb8v zl7ddk2Vs34r{i#|Z)l6{c`T>#0xsP$;HVrxF4dc`>`=tG)usFmLFExRE_+}r+)jZ^ zx&L!I8u$peR`Cv(Mf^Ro4W5H#kFA$sIRv)7FY%!&KIjU5(53v=m65oA47nNkBW`gO z51u4gpN{1i+6HgIGKIFoEm#&^F7@T+)j`dWT*&(4iMNK&gy-XNYLQM}%lgv=7m%=6 zC0vXvZVMZ@6PNzkgYIPGS2po1I#(wlAYIp5yJeiVuxbuvs-whIgxk zyYOBHU|&YRhO?`~0oCCZ#O=%Ij?eQm9yQ>hct7p+^@q!!Y{uCt9$!L1J_R=6bzG_v z_TYue8S8jLQa%Z9{VSZ2BFDoWkHqPJH|EE^vng239%Y*mR!W6`8WX$)c$@Mfv6_MB z@PSCCw~Iw0_y2>}^Kuyn8$TDsB`W_!T!yp!{&@d?F$L8s;ZB^7We9S2tHsMz{3pCy zxx))gvGNcs1F{1++41Sxa{nJeK~6NRa2C$KJv_$O;cd;r_&l7d;!oiW<8>h+{RR%x(By(j6-GV9@3)|mB3ENjZ#f1}=66v$a% z6UJa!<<{q5S#;JVSQef21T1U9dNP(ZVSNFXHDz6j<=$fMzbW2y3c{_vVFuPWmrGS# zF0Hp>y~q-d@4|c4BD@#ZB-;T*yybXpa^wA=f8sOBy7eRsbK>jINpl0Rs1ttsQe|Kul%j!-Qu`P_=$pA<-NG9 zWjKJ}@J8joB;I(;QoMg~xbgM8mzo~JpZKUI11g9Hcgs8YXcm_#-4_W8W?s#o$y9De z19p>R9>aP7hdIv1Th##j{=e3)1Wc;pTK7!fK@0?%$i7I=0E!6B-4{hA?}2eag)kaa z6z(c0+fy_c(bh!s%!@H5d8SA-N@Bj4XIwC1z$J@*`|QvRKs#B+WfOliifqiUAzXE)9pK62VK7jGJN=R@)utUHR z@R?wcnBwbzR{|F}!~21+0UpiqPT<>x{C*E&kP6raZtYtY;3)br7%}1BQUue1uM`TL z04(>fGB^czm4I7Q`1BN>3%o_3cgslFIH1Zf0-pK(Y74&yJRf)*Z{dT$R}1-X6F#U~ z{{0kgOW{4ht5Cil=T{#6TMRmZ!Ppc&6nH%fB&XXi1KUt(OkI%RM}ft8zX`bdwY6^s7ESkM*mlz(-OYVI4*=7kr{5Qf z|NigizSa<{v=LnB;BXQ!bqQ5T_`ATQp?DqxKMPD6O19~PE@_BWn&i&`CXFTeHvp5y zlKfYJsmm~pvHtfx3y_(9;I96t@b5;)n`?*)DyI5FL09!3L32=W#FHWsH)Hao;k9Lj{qL|-_;62;JyOB4tT9Ve|?OF_5a5yf}a3y6bk$dc$yJeF{GdyaBVO@-^nR z1Md{@4&Xh&BX}3(H(>lxLQA!2 z@w~?vS-^2F{t%S10pp(rQIfD^15^Us2MIK&e#CK-ellJMyU3^EiLj07rh*drC3tqw<8s2uuRM0@Y8`<^?2> z0K+++x1=GiFt*jm{}=<6T5vGWkAw=TOTGd8IPx1QAOF1rSk%C;Q}|xsozPI+ekyW5 z67&g4i}6ebxK+R#fs2P%^Pd2oBH*nl{9FpZ0KA1-%mr-N7z@nnhr|*RHVZA7%rWTk zVT=G1gUZ*KGl0b|uz{;zTln9bSiG=k+i{_`W54>5( zUjV%2rk32*sFhUyF!0L|@B>spxX&h-_DPAraK!^p6!0M6m&-znh9cpqpCkqFC>5A0 zsCkqQ%MK zlW|-bSdFBWeHvlOkI-TTYy&qHzI)=u$AK^{~6#PSM%}rpLjw-&<=bf z2oB&3CTybg?wW0VUb(gQ2pB4Cj*NbP=$PAa2D`3VH$cV90I>CF#^0fq?# z#9&&A!Iy-565xai1I{y_J4wi=@+(s1FA?&o{AF?Za?&UH+!X==F}OX&;4UGb82mbB zP%VG2kWb}bPnCaD$fxpeQF-zG|1N=m7!2IfS%pJ@t6y9DaA0vvj1uyx{Bf!BCkpu_ zz{$X6k-;p1fEcVyF(?c9#Ng||V)?6td@8>tRsJ3!pUVGc3&y|5;68zX80<_jcw5LP z2JZrk<^Lk&Q~9A!ch=wt;Of`be(=*6e>SEm?$TgWGd*QOYLPspe852ngLEaX%9M^oj? zn*;)4usg-z??OH?_(zJtzl3}$KXz+pjT{PG{o2|m01Fx^=OzgR#9$8a0y2&92Nk98 zeBfn5eh9o$z~=(rDBz{Qn+3caxY}i9m|7%MKbTrzLBiazZ54s$gNXXh=2@=0TNruf}0+ zCI-_|489}~kN_v77@Q>JQ~4FC@|OttRQ|G5`75gVi2nh>?I{L#RSD1#nA#MBdxd-| z|9YzYn?gR7e=AjfS4TePKQR~x?^AV9^vVq(Z&b$zQwuDraFmcw<&R61KT*gh0ZvYp zpOxg(`bP{_rWlkHf>;Qc+7yGUgnTN$CRP3(A)f^JO{)BTJU?E4iNVekgSS%*-c2$1 zi;z#{hd$F;gCl^eA51N?JdBf z3dafgB*4s6`Po7~32<7f{OQ0+{jmU7rWpKZiot)S7<@;_Cjr){%0D3FlK>B;%0KdK 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 OO<484orhh2_WuWJ7CjLF delta 95370 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 diff --git a/artifacts/test_program_methods/claimer.bin b/artifacts/test_program_methods/claimer.bin index 6fc9979b28817959ed847bda4c548496a94f1a4b..6f3980f90075d3744a2304c9208ab870f7e87bef 100644 GIT binary patch delta 76702 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 diff --git a/artifacts/test_program_methods/data_changer.bin b/artifacts/test_program_methods/data_changer.bin index cfe49a6a7dfc16cc9b0a486904dbd54eac53271b..55e7bc6c29ee1cfb9089ea2898e311d71dc39ef7 100644 GIT binary patch delta 76828 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 delta 76981 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%0A$kOR1P^M+A}U+VJmL8%T&m*B@b;Ne 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 diff --git a/artifacts/test_program_methods/extra_output.bin b/artifacts/test_program_methods/extra_output.bin index f546d43dca2b36188d4d29a2ca38da4255f9d024..0c17c48aac5db659324b1302ed9f37fdc592974d 100644 GIT binary patch delta 76104 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 PY#OG5b&-Yn+!SZo{k?o58kl)IS>N-E@> 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 delta 76173 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 diff --git a/artifacts/test_program_methods/malicious_authorization_changer.bin b/artifacts/test_program_methods/malicious_authorization_changer.bin index 8341e3fde5c840e80848c860a745a4ae699151e1..ba7db36585514af8158767d4258ce38c337bad41 100644 GIT binary patch delta 77298 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�>N7bJ4xo?(DVU690Q*_Lgk=wh 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 DcxR|i delta 77294 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 Z_m?PBZ9VYdsjdG0v$lTkkg1oP_x~#Th@Jod delta 76096 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

5D851$&j+qNS(q&1mF_tK8wy)Bj{N-G+ri40*o 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 F{{gFBFSY;x delta 75809 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 Jv%Y-E{{w`yV&VV* diff --git a/artifacts/test_program_methods/modified_transfer.bin b/artifacts/test_program_methods/modified_transfer.bin index e294d6d64e8f595c613f7c0726567ab1e03d2fb4..a2d9335453045da029bc0fdad2dfbd87ca71b956 100644 GIT binary patch delta 76980 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 delta 77117 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

7MOupPGjey6a|AR7)ptp_m^3_ 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

rfJC?WKUHl)sP454$ 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 diff --git a/artifacts/test_program_methods/nonce_changer.bin b/artifacts/test_program_methods/nonce_changer.bin index 926e7ab4292887bf8d2a8517285a4bc0ab8bfc7d..a89074edf38ab62a0260371e5488e0cefc70fccc 100644 GIT binary patch delta 75766 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 delta 75697 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 delta 76783 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�+;=LU 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 G%l`q}&*_x_ diff --git a/artifacts/test_program_methods/program_owner_changer.bin b/artifacts/test_program_methods/program_owner_changer.bin index de2675a530213d0c6684c602a47e6acad4651931..73ca6039ac781e34f3225689ce515af7d881c6c3 100644 GIT binary patch delta 76408 zcmZ794}4Z*|G@FQU7fJKU=3i-~IenBaPWyU7b!B@6kW{+RR8#+oN~%b@A=#m9D(@=5*V3w%klf z4{A3saeaDbyPk=6)64nqJLxU_w=SKN-81nxa@+O9`quQ$rmt^K_sDVWOj%r> zb7YX{zj)?e9TJJ6^!&Y-Cc31D=bn|wO)ufU?bB^Lot4-y z>AE&uT5W4=WS-wmZ*^Z+|1X{0_S06`;jw-)y{+w2(bvWE((`veGJQ;!0nxFkUa@#u zm)4oBHb?{2lNQhE_E@WQoBYGlS%oJD=JWK>!qbB4i_`N9&kSnMN$)D`92AdC=N^2- zUbVwpbnkDzp8Mo49Wwiy+2Mh%zBFBN@DoAp8|myr_793*Pxm?GjG*|3^vDwn(jyN# zI;eg&J@=sVS{2El%&5D2?jM*t(>;1#5>zit7hQN@`sJP-)3+UReLDNl&WS1Mo`>$U z+v}tEP8)Nvd40^{L5E({GAKSNUDJD1P<{F0oFg7>7u3#Ly!^x?5<&GV>Fom!3Cxq} zf`P9D)z2*6G*C*fU7UB)6N$i-EUr7bEF->QR{Lg>W!%wICCF!ZBAF_ve zwng_9W_0`BySM1xI*~3uy>n3gbb6iSJ(+HM26>OCd!0f1kEScm7?aK$d{9t3H$7-D zdz4O39lU?QkyvyMKc$q%SMe#pFg^=UyBW+^D@np1(~J=|378HiDvH> zav-LxXQempxBs5>n=rGJ2|2%W!>_|7P`r^b%s#GF&}s38(QWrgj~m%B{pp1Kpv9%> zT@yM7wKeJ7tM(6SFG?3*wQulxMY?*z5rL^oZ@BV=#Qb#CHQhSbo-?KU%Eai~=(u}E z(4l3vnH{c|;9Xwkc!UyY5a)`>n#?>jOWl1L1l{bQft)!AE)3bJP}KPo6}J$FjdWM7ap zBWE`p6-+5C5ij=gQW5NzQO&oclHemW^d>lim&qe1-t0K)3HH|$@%sDx*0Ar3@$KV^1oG` zlKfY;g!zj9)-CP#V$ddWddUaujLQuIQ?%BY+}#*vJ7a<%VfOeasymN$CVmFzc1fDm z)?a_j&L3<0qJH<;_q`On9;_{#eg5*`&SN$a>KJw!nEf-1iRUq44#ZQ5=h*lVoNSus z#L@#^4i0OXx|sov-#=-_lO+Rq4VNE~G%JJ1lRh*i@1UevW<6|;F>4ExW)6o%@;_jQ zHc-FH)_?DlXcT$Yo$I5c>3k8EQDjB&lo|agv&G>~+6r&sC2Efsd`5@L`Rk0SKE9jj zKz@Q5slZEcuJvPh_~A*j!M2zAg)wuFi)U~UUex3vftg0;96I2LgblufAH!{|+io;w zrHY@1`_jO9HhvdQGk{jsYnML0G8oMDV(A}m1dT!Jpl@jZgl?v%jgQ0AaJYQffv0hg zlGxkuvZIqsZ#2UCckgeY`6Ifa6RMUa7+FfW-|q=j!T*z z6v!c4@SQQ+aYiC?*YAzlS)4R^*0kN359YEFWx8Dw)$v<<8F%<)o zW|!^vMbe5-Oqv4glV{)ePSADFc|RGmdO$bR+SYC}`|WpvFZWFSY|O}$lV-T>>om7SI}9P4nGZrjQ##H(y;2|8VJ zM$(WL#y4PTD$B-8x8bs-cdiN!%1Etk-~bI_;5K>4FUBN?#w%z&Hp7yp)>hv0S7YW6 zj1TA#Ts$Z~Aot)h@306T3rrYMdNG3QcHduGz~VF}3rx*O{w{=YvtK<9DJ z*#Y+4Wz73DIMO!w(BH=Nsqbcbh0ZWL|6Y3A2f^V%qGtBXYl5zcIZMA-6CBeb^?y4U z$i>Wx-H~Dc7_;vDq^Y#+K7b1^;G${08OsIJ`LIS-9&T&n*I~KHI=_u8aH)-V;GoSJ zl{5<@r_5vuYDnm76W+vI@gnO(6A3fsJ!Ki&cWjDmtlKcrlS{!5VHb z<1dVt;7pcy=_zjJIoJ2&_PvM#x%xGEWFTqXW6o{C-k13XgIKc-Ey_EY8|3UmjVZJT#+Ij&J1 z{2$gGyoYrMeRfZn+AHHT;}R@)*dBHV7h<{FmW4ZzN|^N&$gOvS-J`vjPq__q6A1Ts z5SCkUAKSpqSZ>Qv0|~Pn%Prc~uj+uW;BI8=x6VnJ>80)f2c{nP$0rd_%=JFV6nsi(o`z@1b zu~4Q?PMUEx{xJ)sjCj%xq<<@BLiq_iW=eeMKF8(Q9qQe<5{-}ZQ|4+4isAyZ9?LV0 zoYQjb+p$(gss>hcWTsAwck5Pmb6YBD#@GQC@0~E~PL1Q!@jQH>orZVu%%*rMFnh2{ zS2Yy`W-zW+o{3j8fMPqK-8*saGJrj8gM;yM8>|e(8bVa5V}F_gwm)Z-dt|Q{xCkTT63k5BIhFZ$snd z${F}Btn+87xa7}Pmi!mJ{FhZ+@@spTR8x;q;cKtLw_b(slqElxm8%D|kF4aTt)X#W zWywFq%RlYFxPPiOG@kBNxZbO9gNjT3RAuSlSucNyic9`dWy#-^@+xdr2~y#EWvQ_D zLCyELGmf{0#xBZ|f3lZ{ zTa_RczEhS8d-05{k8vj)Zw-xk%94MQmtU&l(*9uO43lbToa|LdsRXHTqq21HsF(k^ zic9_?WyxRd<*!k3)_+6e$ErXo{OMKrTg9aVQyA~RdOGO z=O@DY?wRCF6_@rWx%$!dr=_`0B}fC+%2Hvzs}OeD(mbZ(lK+IVx{)@o`u>aJ~ZTML7Y-TSMd3%CbZE z;#BRNq|Hf~`zWZoFZNvAOLg#nxLWyPtUFwQX^+R&@M&f-mj2vX(O8g3 zg$=r=l^eS!!VXWO6?s}&s2Y?Jzbym!Ptx|mv#B?L_f@_e!Vi_D{;znNs=wn>gy$dtMYi?K|p^MA2?cyN9J>s7xT$6G_=g#8lXAuI`^ zRsS27HIO7pp6Od0z-L%yARJJNRX%_MnX>R0;#;xIi1R8ei;6=THjvYU*8;2&_o3h} zENf(>{dDvT)}MBIAIKYi+P{$ca#p>n2Aq;ryWZQQjVeJ_{U&9}Z}jqm!)du`YiP_= zmiz;;p0UC>F4y0N#zW(R@b){zt8k`@Oa9r)(!q6Jezl5A{uE`&f2=7#y#BW|PpAZ` z@RYJt_@JqR>}E@|R>dX%6J^QY>E-{W;*$T5v-B?&I&s2Iek3Wavn5O(Uai~}>nZFe zCwSA=(AZsB+UxJ-m#DZ5V4!ul|59PJSK%VB!dPX=zs1YHO~s{yJCr4V8Qz_52ff0e znXU$KB{f9;0QgHE*Zs8kgN!XLO95Zov7T~_PXnxY}bHW^lOO%htLzPd&E0qV~ zb;_sU>|v?6gKH>AE{Hq$Hy)%s8IM;^;W^4T;yUG2Of zuPtcV+nDq5`PPTw<&P$jY}^@f?qkVN;v*$azPqxG!e(I{zYuRGzCXn>qcd@dil=dE zkt(>Cf*R%fa0Z89v~6IeHDn9STUZWRv<2oJEQiebU3}iq*sF0i19I^-z4`njQ{)Oh zCPAji`BPl29+}qRVio@q%Z$1FudvLB^EX&#z+sOW?F(cso_ih@Ihv=0$-%>khmT;yFR*s;3S6b)ORZh}MO=MWHi(amU_5)^X5?io9Y$MVYQqY#U&qp*i@%9`Qon=(>0q0+i~owHedisxI;9H!pg@k1 zOW1|w7&$j$nPTVQSYA>oXX2g8S-6ZDaQSVpe6zuM51f)IcLjS=FiuTbUuzdX4$C2N zJ|4>6Y%(ff%#YwX z%8%krXUB{11H6cMo-|1QzQ;w58c3LYTu0oU);CzY_|y~yMT_I}`YUUf@QqX;?z{yT zKOg%Cyi@rne2<#J2E0yrJKn0C`du1O1%Kjh>|wM8=5IVk*%Wikm0RFx$}RC)<qjb#S-R%Do8elXu} zX2z24cUbn&#S0Hj zgi{`#_jGVMmKk)e!7@W9*#Z12W{0Fc{U=QOV!pDQEW)B`W;7mpPQ2>xz>8FT zCaxtO&Isqhi#Yq`q=~kKc^Pj~^|#=)QGP1CFm&k8&4dE?CiGY_Qx5of@JC|S? zkn=!14xdheTxhPecJWFq19YBC&^T5O2{Sa4^%t(%)fC7f;0H59x8O=8hrq4+XRu6pg?-1#be<23&e>yk?%n6?iuiWQIS+YhP9O|4%8%AR*d#L4bGCLA3D-4ObC& zi>$*5Jc8B6@mzf9@c85Q3AkFt2jLFH+tFZnGs5$0Q*i@T6l9Rl!X`X|>r?{^ajhD_ z8eF&{u3wMKl)u0`$akOrv$!Bss`&1BdP)_vr=S}H*xf`U?1yVq{CGTH4d61oO~ohR z4aD6PKY(*yOVXNb{HPF~rRu+nQ`IWrLki|8e}e0&;2yyOR#(>R$*?(TuoZ5_fWu2M z$MkSqsNzTBGUdLwQn~+$oPXcbfootK33?4&f#;|S6L5|4)p)sb74FA?f^dHW^9WwI zG9K`wc-kAWA3u@xzep7NLSmWkzx54{;^=;U@RLPbesT%NF2uc%1S^>qXR%OYyaQ$kXv^&r|R; zReu_ur+f$AV9omHXG?cX+$+W4xLxxnOHsxO8!sQF5Z9_5$|E+ zc`S}aDb+w%3fAJbHsNGz*TAV*E>zBCSWYYFAy`f;=QFXKhS8R3&c<>UxcG3KlGDT$ zjG#bPweu(}XMyvDc&PFiT%~*|o~C>`o}+vvUa4GJ%K5)a6-*={kU{27_JeXlDiGy=aHquEE43g zxne*f9HH~0SWcU@wt;W4?6GU0$G}85Bm3F6Q`8Q~WBLE3DA22P zzURmA7`2KQ;gxHXG$&iaJd3A&lnf>QFV6nd-OMu0TX=(71MlFrYKBwqQqV&cthNnA zEoPcEc${rs4#CGb-WnP|#rhDORm>|HIxHe75oDSNud)3EG8c%IV0e4K+bY=i660AvbxVm$+Ydp4)?M5JaY6EAd!+@u0?CQ;Hk=G+H(IJrVDU6o~J6Dho^rUH#iEfQoh*p zIL}w$T`Ip)nd@)DOr)Ujv$%uFo>O?Zicj@?3$9Y}>3F8{U3ii5y?9Gxx&9~2{S;(< z9uHui=LMb@;sTZb6s}f&4(F|l+gs{+d6UEYPr|%PK_69NC7z}HHZJ-iZty+NYdn99 zOI7~oc%kwJT(X|_!v2|oZ(MvbzvC^+yF4dOYaY+Q+sIG3 z23u2*_hm971K7iJ2hV%qK`MVAoV6jYpTv`uyW>9UI@1G}o!`y&&+W1&1!GjgA-Ed5 z+iAIVG{V4~i{}z=OM%>OZ?bmrX;{v4=i70O@}2nY^Y#6og5-#}!YtfFc{Uzro0BWy ze{j6tDo#I9; zGm?wt=G4Cr?|4*vI%W!+;_qQOja~gtNAYbJ6+aitX}rj`pM7+~q-2lX-EIg4vd8w? zZ0^N!TJj4t;ehI}oL0_%VmT|E3ydY*FL?aMq$IN?%6)Nay?$SF)6LH@r_5% z8}RClNeQyCgLvmx$xxX0KNQUQx~ahY?0LKA-*K(V-{rXx_hEqHnqmhIDvKQT7?^{x z>`=6&`1NZFDkwOB61k9^YwaqWk7b6OFTgTG&J}n*K7<0PKf~I^@5VA?&iCL=IJ~f> zs8DMQT*B+vaE#oQ?I&v&Z@_X4ows9sVftP2n>K!*0P73WPdt<^+?X`m65M~}LX&+` zB3$(qR1$xEGS6_V(#h7jr*K+Pq11XHmP6LV`ft^toK~GqZ$6+r9B+I>0^0$}^}mJb zrV^xqV{xw9!~S@Z$LxT#e}dfqq~KK5fDB-) z*TFaymkzG*I+&p1QvXhzyD4dRI$_eD@5N&zF8eRb=6+XT{UDyq2*YbXYvgS_hYBUc z<%PmtXG9Lu@jjmS#S7H{_QT7Rd*F3A>YoM$JlEmAy23^hv>#M^DChNySRbNSJ->!) z)FFHe7k!_kJK1==!{y2!q`ZQUJ%5VFs|xFJpC6K8bJF0~c(U>q&p&$JhG(k$)Nd4Q zQU!nFE$W#6jeA|-7Foc(lLr>%7I=(uORU#OYaDM4jcu`7BPladZaxfP3|Vr_`*QP< zDdKlULeIuB2PPvIpv-WnP&!)gl6 zcomlcO~*;jl5j>0uVAol|6ygh|Ct38RH*?xfwO*0+CKRMG`LcEiRTwQFUM0={t7%_ z`AxhmvRwZY=6@9IQVFYZ_D}HuKEi#KKf`6pUwYo;c{84>^0(sUtclig|C497y@&Do zoC4`md_11EEgrx?Tt_^b(!fl>YgK$At|IO}tUhE-b8LZ`k7p5&w!l1w7m1_$Utpe~ zV3+zWm#46d&{e3xG63hrxE{BrKnA?t+Qm2Gjl{z%Bk{IpMt1Rb_-Eog|3(cQZ3|pN zKiohJh*j!+; z&fR_<1?B*p+M9x2l*l4Fg95Qj z7=}xg%dtMD=i+#4Xgpu?)$8~RR9t5GI;;nD<5{eKU2qc#W7LRm^Lz)Msp5Bgz6bZ> z7)MXdndVWviu`g$DbJ91@r5|r66W4=j=wIrkA!t9;X%Af`4PNbc_Gf;9yjM2X zx`ZBO0F7QeBXxH33axN2)j(TZqP!;_qr8{(EZf0tUVMhV6=!<4?p8vjTR=^tyyh%0iJ$(?bBH(D1no3aNjhBuFAd2WNtRQ+sR^hexYM?BJ+^`9`EZ9#$Eg9lZD z#2@keD4t3KOKg7rd66L-e=W)Lfq0=Bz#({BWV!zG6OI)0`7U{)kNJDd#s&DDyl7Pon`hL$_N;J@7lhp3``d z>Tr(d`|&D?NB1ATQ%S*aF10;qQ7*;*!?}MaO)onGT}Cj)Dn1DB+(iT7#*gD+$#*`( z^I4wH!F|Y2xe6mFDB{vdfBb)@sl~hKFuYwdpdWDIKglSajBU77`8Ushdj1;^SNXw6 zcIcmEs;R+N6s%GSZ9VVlIS21j`JFuH;q1nwi8g+|0B4ML_lCff;=IwR`1U)If-I9C z<+F#AaiQ`Jo^SSiEAFfE@5I}c)1K#uQ!3$p3NjM$0OsMT$_qR{;rS^%SLHv43)y4$ zeDMWdt>Rzd)J|2fnF8&to`1%LK|H|io`1(BD!vQ%WdLnWw5SibfHl@4u3vZo>u-=M zIE)1CBRn64m#bq~f#+1ji*yFAQ1KUWhKhfK=V#_K9NBogenF~v!Ovd8FSwKj+!S^h z#oerBe)Q&(2ClPq4c_SaCM>6QwDET(v7E-vx2GsrM8Rp4$a()?YnSi>mebIAIhNBj z+A__nSXQ-*zlQUa-@vj4T)Ym;A#qOqkAguIbfQECu*2FV{DChZ9@u!n=*TX903J;| zVdH05yZA6Hhs3!YPsVmlq|6js;1X`e(@6Li1u~##tzCQxmNnqK6tBex+x)MrUHls? zYruI6Zi{<|`F#HAP!SclguQTo6550b0bfUU@e(X+!g(Mbj*qhW6RchQYAlP?xeCie zYPhAi)Lu(L9}1#NZKnAe>&NVGalG*tlCXZvo_jnuARbElk|dvuR-eWj5iIu-aSuK@ z$s?TeWkY$3M!bx8N)ooJ4&*sK>q0tUl}8&NL_BBXY8CH@%Ui|yo$++#uAU2GbN+FZ z51^pbO$jq{5H3?b80#4+!tvJ7_%EriK6re50)Ih)0T#0=We0ybn?DK2fZPlm(Nv%Q zWslFGU0tqW}XdtPMYvi~vzd$|JZ zPPjldu&?KQJWj>;_k19ptm22@xyt{-+i=uB1L$K5!v1kT&&7Cn>v)e&^gIYxsrae5 z?S=90epTTvxIEllel#1eYMpQUr^AI5Y*7t7<@q_!&*Q?j`O!C_>s`g&P z^HX%_ZZ1DkkZcnV=oh?F#k-8*cej)W;d+&Ss&%-^nUVLr_!`e2eUU^xWQ#?KLZz6ZCxD1Iwei+d>lFqZYVS~akZ1nu8E@5EWV#~uES z=h9%yaCm{~aS69qoNGM<55jJSugB#o{`e)Vze<&`mW25#p%E{~9Af^TZzf;L_xsz$ z12_~9&(1d)K{R7GTDuv!#q)H}Gg1^xr2$uA7OthkEZgC$xKH~yz7mgAe%teVoJTc-H~Ur)Rv1#$=qxDkk>jkj1hjoq8hGpt>F7@n{4%kdJtd)OZL|0%Y> zRk#_;Y3F<^UW?tLT4L?uOR=1m&M#s)tDIlPauzt(VmS-KO}_vCIt3*Z1eC}g{$%Yc zG+lso(9g$S&R;%OZE~f#ocbjrGruUQr;YQM3i-5G-eb^I=%d z0_R?Mm;+KiLvt*RD%fArIqIMo5^`k>9*Z)j&DFy6=-CCNuDSpLQ-kc&z@8>r58(tp^& zP73rP_zTAye>4K?Ly)*Uj>--kfVZj+3q2o-d*s9e>=oJe&mJC0K_8XS7ndpb$J3Pu zcs|ARX}ESw{3{#_@LJ`6@TMGf|8H@H6vQKJiQ9IJ-Ny4CxKPDA;5t^hyV>-^Q&s$U zJYRXBIHd|oy@bJdiHZ-!m3zelIvY<_KHu|b&llmUi{lH~T{yKwHE=Hl+V|mAD*hlY z*gGD;Be<{fLhFJ+t||%htr!2n^G{cB{#B|5ekEaDZrs66T+E2wly)1>r(fk#oK(IB zkL(oJzt(fL=PBb^e_K1p6{eA(eLL>4PaL1=IgKk+d=8$e2J||fyKh{-4)^LB``wgR z@S*3A@HkcBGdzzD+!Igcl{^u#sQVe zDonuRl_%n<%9B0c;CU*Z6X&PQtrTpE3(TFK)1L3e+g1MkIJY3)qj|Vkd4cCAnwj_i zPf<{=Dm;gKFlFw3|Akag7mln6%s}_J!`*QO@$lNtA?SmLswp3h=PKWcYg~PK|DU!6 z;oS`H)Cu@+&*m!L8PQ;Sd(3-cx$s0Aw{KjJiYrLu`RdI1|fh<$N}l)5v)^ z)=#-3u&fyuABAPjIA4fmO*oIivSy@zw!mCUfh>|}(=OnjeHaiw(NwDjV$Vhp0n{z2Dm#3a)^(XICdAR3S7Lu`usmODzJl2m~nXI{_$ycCC(fhKjq$!$79#v z8+fMjHr%U6T>m#*t>VdRxYQr0?*HAxg1Ev#o)5-74vOQ4<83q;*gZTCProF73Z8~9 zRbGrQQC^S7rc^=eiG1Twxfi}zc?7;l`8Ir^^7FVtc>`Y6D<1GSxJJ!Db`|Tdh6+9H z9vnl#JnW|QBD_xdE?lb`SdLdKZ^j#x+y9$~TUEawo~Pnt{>}Q&Q3+`h#wovo3zWaZ z+f@TOlQ`xoejJ{xdt?EMb z2bM+Z;=6Dbme+rB7VLj*WEVd$MZtJgp%BX|bqR;!naYP_nL-!ujpdj+_rbNw$6z@` zE`BWDpq%PY!8TP;f@O+bg@IU(q4UXD4w>_*SPqeM8I~z`9)e}cozKKFpGc_*Tz9i!Y5Y zy`8S-_Ixz&f)mjIhFeoPtbc*$3Otm2d;d+Cu@scE2ho-=m*bV=;u)BOm#g>#)^5Pt zy!daPcj8xR&pk28&%Mcv+511=0dWQ42omNXoY6NPko=+YY~^0KkMdETe6@*@4|DG@5RfN@5i;u^Y9qj>tx&eA71C;^7(f) z1-Ylj9eiXxk`c&xzV|K7<9VLD;v!YQ01vI?n^LW!`W3id#mD09)~tW-b`<2E77ySm zoTprc`zT+BtCVlFb^~7N#ozY43eSw{(?0|FfPy}Q;{kk(hbn(A4JdEGla;^0bCkcw z^~yh6hkref{*ImI;?h3_Co~mA9)NSo;sKq4mz@#24EG%pdzkg)L^S1(c=3gvpTr}j ze%L<)sG;CSwdg*_n^XrIaC;SRb1MTH8V?}by4YR^PW9qvcpio~Q9tUR0h~iY@vykT z5qP|E1-^*^&_3DxmMbniGtQrd=U<+0HnfOlpaBn8@f~=&@?Ut_ndEdgZKvCt$M^M|kBd{Pf&D31rQ8!|ofCIZWWCmQaFrLY@_a4sq3T!T<;pkV z)H+pg8wKJGwu5)AAsfG<>G>mU&W#878Ln3T5-(TYWW6vE&CmhUS${gAaC-9!hvH4D zfnK=qytu=oaE0=*)`j+v-QdM<_I&Gf*8d#Uz?~#~q88zccsOey+W5vHmNntL((~J% zSK(DE{{uWnoyNOT6ueCVXH9ro9dL&+vsJsSKDEco@MP7&%lLj3--74j zmP~f$UKHBhpw-yJ+K|SMvOY=M8wS%Krve zTou><9?K(I)BXQvR}l8V4;y&?9al;P8{dT|PmG0)EMODqF&{t8dTgD8*zw!J5^ zi?_q_+ReE=me+dD9q-}#Bd@_+K`sfO;0q{_22Zed@d22(R!#XQVR_5t;-y&Laybvi z@|Mi`3|yr=EJeXGRZx!Wl+VTW%I9Nw%jFup0Lxo0=L-Cb^2JzQI=T2ISl%%?r!J#F z-tD@A@mSvNI$wq5U9j^txD+2nfy~fD)-FCDuTtL;c?{n~zO*3uA6nb|l=+B)$4J=I zCYXC8y9Qfed713o63feE=hk=&cGvn|)-HY|{(*Qvfec`jbrk3Q|AiF%s2Z4Q?HWkq zZ7TkXwTrL7zpD6FYZw0+?;!3jRGnu>4&(Cke_bf}iv%~qLDsH;Q}ExagKMl^{NLE9 zE8l!;7k>=5Q1K6~CC>WipG2UbB?)eXW=>?+KnvVPHE@WviywyfQ1Ri`E`dq1^xZaXJd*(`~fzFO}gAs==46UHla+FA|+sV0lU9yb{YxD(AQGAmw+kyi>CG z-@v>}K{4O`b`@4*d1vFi2Fp7k=Z~>`TzCEy%ZFFzbyz+vJAaAgDcbofEKkw){vVic zD3Hf)m#_uPW3%%QSRR|5f5P&V?A(CmDcX5Emd_E+zhn8};ru6-XHJ=aHvSn63gnqC z+5)1{L#J~KEDxQ|EwMb+I=9C1Q0d$j%QK~OJ1ozX&h0TDY;6Awpd$tHjOP+^u{`5B z?}KXx$KDsqBbtlnV|fO2F2M2(=zIW{Pg>3g;Z;|t`~Sfd$Pnl@PWd=2uist#csw-4>vvahA_e2D8aLPn&r|M)WyYc{FvVD}p%ZYt@y~E$y@pZ?M)Mbs*n=XnWYL_YD#$Ur2up|V z5LC@=K7i{ySK}Hrz?*Qb@@;ri?39^d3;M_an4+(mCz#EizsGCYV|TO4d4NwkSH@4# z$Kt%3;u$-^^8nnpDW2kYzbRO!7Twi2_vW~PNw|m(&SZeHC>P+Q>Torlr~DV5tm>Nw zBfB+rzIAw56Q=vNrGR4ux@A2T9 zvAYfov3Bt@u}r!1*;udo;W*wJ8b@Hg>PI!jQ#}2$%2O2RJ)Y|M7QB)UvuIWJ@L621 zX6V13U%=Z{{1se&YdpiR<2m9~I81(dz!g}(>v=VMo{l<(HB%%vjITt#ap_NpU3*Esumd$>nB?r;sB9-F`a*u21e;dukDiz}FKaNl`xgWuz+mGS+* z<0JB>G z>t8JKt6c|yxf{vx|5Tab3Z#F0H{N+oyaryz3snQJd42EHj|Z(($y2>WLb_Q!G^a6S;rb-=k0%XPr{P%PI0=fkmF2b_E3arjUQ zWQImWj`m-k0Y_0F=c%i3A(r#hc?_1*)cH~@r>XPhSWZ*tE3urW&XrisGUthSXr=o6 zKZyc4&0NBDxKgcrOa1fqvF5UW^YRzPpWIYVG2eV_DVC zS7LoTuEg=iAEA7l^{4O0kB@EsTQHMU1-bps#?_owbuDDcCd?1kQKS6Mu;*X#Ty+}m z#HDJ0iPRH(JXQ%U@fPJac+m6ld7O>Ql{@0`%AIkQa#uV}xd0a~joV8dNWmaga0u2T zJj{z9;rS?Bt?D1^xj(K^@d0?|3rzz^nNujJjSEbf=V6}9@h+8r9xi;DpN{7k$RU}J z%}Y%kn8$Hn<)?Awau?_G|6<#KJBG_VzwEgdm(roje*@1_eh1epzwddiw%q?dp&m;4!sv{x;9QdESZV+kDnPzhFp#SrIo7JZVg^ax1*;wK(1u zk9j@zo}Tye+zHQD`TOFnoCU@5`B%>KK@{Y^5jS`$9;$qX=d(PYgR52k2+yPN1{J@! z$>IHnpY5g~ zd!B>KrGkw=fGggP{V<-V{FvuOo}a<1$&dQyAS|K4yc0M00xtVs>{mR$?)go;MCJd_ z^Lu!Mim!=m`)2?jQ?N}Xe2%kL#RJ%Y`zn9q`Fqbl;wqK@3$A}ZZtr(Iyo&pO^g$pn z`CLItt74ymhp&z+lzATJxg5__`R92aiEC8+Lfkj?LEOP56bx6s!gHnPiMUebPsY{C zH{gZJH{+on#{J!nQx&RUCI#B}c%Fl+RsI9Gcum~k!+5yzW1bgzer6HtZ=9;IgoHWD zFW^PWui(nHafh$tsmgVp-}Ss2*QorD7P0bu{2U|CZxz9$~8oRgwpoDIwOeD=oi*3j5l8o0|f(8B!8`+@LUFApHRv>G7~ zEbLJ)Dv7sZxioK0ME-glzfaD9GKkCjg@Vfx;ea!(Qx{So$E=5~aM|VjXbcS&+6KF* z0m&24(cXajsknR(sMs6u2`Vo2N8(MiKU~_EfB)xETY%XT=1I>_lyd$<;{}bj93YM!1|KMH9EuLWy zKZ`ra^1Qp}Y+SAKJK}lDo$;7;(q4G~Ntmup1v2scEg;Va;OSw7C|-!?Dj$ZoDj$Kf zzK92WjOSwKuzxx{fr27cVGyobA2)C+o~L|<=d(PYgO{lM5x7pd0_S|G?*C(Lf$X2m zz~!E=#IlH@ja7~72FIR=m#g?BseeKozYece@oM}@m3sd_g@R92!p-<|`2X z@(jFD`ELBR@;!Ky@*MoF-2dGk-A}=0mGB_mqWlp4PI*55UimSsPva+WyfrjFh4pDX z@REetn4*DzEV(w{MuF^6!unk-d*GaXX(HSMmp=r{l!xCXqy9ZuX2`|svFwnmzYq6< zZh_-U^zt2Z(uouZUC*WH>;Xw-18>|awU70DJr@?egyj+mrx)_n8*#OYXVmavRz1=kiiiFX*YAak zY2UpIKEHrQ$`nmI1hT!RO+gYCtz*S#$1P z@UtljYE;5HTt|Zkv&(X=ZuuMys16RpS>(I;aNI}LzXg{oKZnOCe}QYa#xs)o$}8CH z`Fp%eRrncKSI6H_=)9N)e~ugMidQNZ;DzL8+Z`H=xBQxKHnB(ox&J>-K{f^M7(a~* zRfSJ+UtC}t$XLS7M#T@sSy)<-89N7$SMi(hGUXav*W?t>cofKp+yFLs{>JkboVz{F z{}JzOYA`Ul&ocwR#qln>LginvEIJq8fo0J-|AA#q*y~?l zc2OXU!X-3fSyax!f1BT2GI6}|C!4XpxwKJnxw7`adW{`y9X)@rtcoaDrxsyvJoEQ> zQ67!wDIe###PdMBTIH8|9*i?~s-OQKO2N!O;ttQoE0xdpJlgX`IOET_{-vHT$2lr~ z6)yTS6<4UDV7yAW&hw3)Z^DaI{%yE?SKQtVT%$Y->*s^nSl#~`8vjFqK88>6(M$$Z z97MOvw%m?oO1CE>e>b7IACLy^Cdd3mtOxL_=htwmR*mp23Tkh#_j^vu23+}fyhl6m zROP?$N@cUun4Z*^8gijJ2$y1a?H`JVU^{)$l^%8dAWvaqoxTZzip#0&0@7b=bcy%k@H`8y7E6*4w;K5UWnF^a|T|a;;rz?*eSCc1#9C1vpddU4_pJ; zI7hhy?x?&M-b=X??xdWD^OU<{Ib_k6;?Lz$Ajiyg*d5C;bMArV5IFb5*WmUP$SOb6 z+QrYtatNGH8m4=Io-a|s=<=HKbI2@)^Ia?HZ> z7~hZOkcAJScs-Uw=Hl01!{3J^zMmbyg=&xG!gM3fXc^9s+}V46y(!R4*v4xY#3lwb7xs^`~mrOJN` zS1Yf=^TlER%)kc}ELRC1d;Z+>dc0QUf9?5O{3VAZe9vbBv*(L^&j=^O`3y{7Jben^ z|If7r7gJD5K@aP@@qFyA-7n+n-QyW~>EH-@!9g{`C7I7bz#`-mCNH;22e&La%oTfK!FUP8wpZya25aZ z6$3cX`U)(2SZ*ski)9a2TmOn>55Kkfz5mTOGZ{d>jqjrdEZ6=%cvgItq)fl&1*RCU zj1$a>cu|g<5&l@6#BYr+OqF=8^8evY%J1Oq%D>@^+gyF_|H)VQtk*H_pu6XTJRgh~ z&|p{DLstD+){u=C5LgBnZGkxt%K)86Vi{n#$>;yk6vzl&!bMm{=sXtdH82jx8^70s zo2>yAmnolt=cyf>rOf(InAsH6sD!zakn0AJFc0DL8BiB`l|5dCi#x^f4?KVD`BPk> z^4H_4&S8DI|M8ZSf+bNw=q)%$&A<=1m-0`zM7aUW0HZB1+wrx^zhgavf8uD9{+Xh` zDQGr@7xBo&h&&O@M#PQL%hw>QfR5YlBxy(x# zkLS8Q=9u4)WyH}ImO}uUG;;U?Z=l8Kb1Rr9yR1{}QKB7P$f*m|W%8XRf zgIu}lqY7cZOyO^MzS^TdJ^ziDsCZDz4&B+!Orr%E@Y#6LZQTEVrUNNhKtWblw}%Py z1kP1{CamD%fq4$!e@E=+v2+k^fmw$29>0X+t)cN1-0bK7S5V+K*~9f%58!Lh-{KNA zz#lySgr}?cuby|{RG%5{QplBX1uvach3=kv;6W;X2=0}1d(1!E?)h9X-@I;Xq8WY^ z7b|aH!SSC;gYF@;>ubD5!%17=WL%vecQDxVP|s)K`6_?7=MlI@#VcM*@yw?R#*$FS z09X*=nwW)G?T5pS4;nbTAohcvAMyMs&SQ_=4t{{kOS;+i0<$(nK>;1Q50n2`M;W{z zf1OvSGN5n^Oa_)i;M@wAvZ^LrPt@-zVD444%?7K3utB{XnO*j|e@DPOs{QEz+ zU}zjaNa8c&ht6Tvu6{ZGiFowgaPI$8Y=KL-8F%8Cu>`^?eb(B=mtZ-j&P%bZa_1MZ zta9gJ@U+*!vnnq2*Ln57RB;)=S6=;ZqIlSUI0M;lHJ`!`INll>_riJ#JE^z~pv0>` zP{m~cCwuiz4dYS&;Q*?<2CnrQxZZ2v1{Ie9Eb{6_ z-+B#vr{XezoVw;SxHpbBewGaD8SH{x|KR`zc@3Q6HE^2O!09S31DNd9PpP=fz>Qx0 zo9g2J!vWNgpwH9iJuk!hQu-2(Hy)|5-oqRB=0zpveF;hO47oz(%Ye7mvH!ZkpH+g4 z_!qCi-&9;0NWR^?{(d;#8XEVtm&O&ISK_3Kzl{r(-@~QKYjBlvJ=Qb)IgYo6RO5PSpy_tm!c6@> z8qi3x zsNzz8l2`va6_@%8b$$8!|4*s}Y2azEfoD}*8d#?rp#GOCF7?0i>VKo+Qa}5D@eH#5 zTbd3O#2c4dtf#P(ic13}ssX7#P{m~cCwuizRdK0b71x*RPfK&HN{|Mw_ZqlC#ifBo zaRXufXH;D3Kj+ndUd5&UhNk-A^{=J*S|vyW-+B#vr{dB;&Z>9{We4`g@y4YV>ly5# z;!=N*s~`4H1E;728Ng{?1E;IFG%(pU5cb;Aq*Pq$-{{r9NyVjpjjbQ`&j1#y1Zm*E zUIQgT>2&YOi>Baz|CF*x2m`_uq1524Y{RRs^U`rMX&zLDlYZ6 zNd2b%8Nd%JK^pkUYoI~JrGdQnnlHkxINll>yJ0P!1~zsLPwkMM_WQG*2xO0NC)s0z|yEuO1xE^m0Q!!;`Y zE-vU9-`qaLbqB}(#@Gr6<3%{b`W#$?=Ud<6<-Z{D(MeNj zETSOIFf5zwi zoAS*_+dwgvpM)y19c;!|)<^FP_B5F$>vO)bI4$4Q+IT50;}E+YdJ)U3*vS%?-+%j& z0{K%b?wH;F1p~S_8GegJM*KdO-+W4jBj$Vi>)AsF+}3t53CnNG62NFU>c_L9|12u>7uA4Lg*Qg!L5kI)MglLf!_J1OqCt4GzT>TREn72G044HNhTb z+4u{1yqbaIzh;rnOPZlJ|4qDncATHFiPQL_@Gq~V!eeqe1@bGCGwlGXamCD}*=al2 zvW2sP4$81hahLB{GY=5pmwx9uvrHCg zDyq`{h!fUBMSf?w9X7a*<0gSZn+%ggV21Tx&;j^&(21II}O$a!+^80=j)<( zKv!Y;1q63mJ&jjiku>!-{}(Jjm{e|k#h(0L5x?!$%X%r6Ke>==y%X~%8d6OK$F%2% z5LH4omY@GCwiUj{^0!^)TA$D%VX_y+XTcj-52!SUKj%Yyc}6s2|6kg*N9j>i`5C(A z2q?@q5+)(ZhRFjYK|ktU-8>{JSrHM!l63)r&`$y+Bobf&kqT; ziXtb-Gl76XFaoP6qL}bhqJpgFtc$Mhulg~WN6++^a0q|g?yB2Wx9iLx|F&6xAyw7;PXSIkBM`iR2ks{H^72e)?Ta1VIMm~p2(AKrG2kU7{K+Al z;Wa~mdceu(0Rr5!EB-IxF9QBCm<$BSrDm%e|J0oFeP7RufIB}MF<}4MV5%p#GtG&B zU4Fk(o!0<%cRVYmeAgU|$B}I;DR>@WcY)EZ!AZrvfZdJANAXDq_svD05ZZX=mG2Lq z+l#;dzgv+WcLN^SZ!}5w+kZ4k{{`@65YtNa-UHZ`ZWopxxByjacgghR65asV^@J`j z;du*2^Ux<2K>xej?-hxEi2=WOeyHcra>8B*;*6fyF30Z$JW?ty1-$;bp<%Ay0(c}( zY@iUsM_{ZvlFo)-s6RrmA`hGT+@O8)c_PF2kT~)&W1K8DgmhV!0;I<{BNxt_#j$Y6|1HR?Y zLp{sO`8NZ8`!2K57wYEY{I}x4@?D|3%N-s2K~UhY+jsbBz`x#YyXJZv@L%vAN1N~P zL;nPXJ@}gt<@_yx{|NZX5W zHvo3OC<2nc1+cS*n*pDU1zujhzu{!8>~Pq3oT-y4bqel<&IgPM4!+L8 zz~`7exBt)Lf%|Rtq(rdbR45a`CzS9xfZZ>nSLX9>!0tDnPb=TgTH2fcQu^mhcsXGA zOXpik_y)l4C!Q;@96Sy42Xhaqu>bGH1NXz@mz5Kyhmh-iu%nX1p9SoGmb((mX8^mO z(RLk@Zb$tQ&Kx}>kCr=rA7IytRq2UO0e0p3TCBRe+t-Lsr+t<;F=HPkBwY_(rsU%NS+4l zZc1HTe(->EpqPG(1-z+Pz-@qCX}6-_k*jh2>Myf<=3iNoc=q|dd1ta;eqcRd*I?*= zbkZ&G4*S%4uQRA6&Emi$!thWU9lj$z{k%4{w{Gwb>W`E$zDT9wQYbC$EgL-ENtFmg z8tPO>Q7kxJ)HCk__pg0)c=pP(+cFZN_Nk6!kVQejSm=itXUvbX$mdboW;-&NjvL&W z1hpJDdXm8bf{5~8w@Vio-`=q~cJ~Lo{aRy*Y!83Ho7zc2tzsRDFwT;Ihlw95mHCk$ zXz6p!f_6|5wQ(eq-4E5}&`!Gp-fR64Z}P5=5~HvqknxA0kWb z*_*t1NBaq5obNvv(`)PyS_%|ta;dbTStLQvp9q>XOhx1m-+V5 zM=g0DS4%0#Nr$?oDHq)jRx>q%#{-~GN={ixVrDm-p z_zuYMnn%5%X0clMsCU4U#;r3m&So^tv0Lxxd;8p`QEkEO!b8cF=7k>qLvP=G(j<}k zEJ4+>Q4oEoZwIQ0v=K7w$WjDr+< z#6bTrXdoU#aq*C)Iy8~ttSwZjMwsiZyvsbSUmpUce9=mRP z+Gg)PEtba0DC#HBxiVDR-nQAB-AN&suZ1i7VyLl1A?B0l%J9aM|_NJY|9Vmu&pb{FWz#UI@i5AB_ z?1?oa26LBQK;u~0hprdl9EL8}i(h2#c5H6;yF}YPplI_&$88hThA^KUowqsEROYQOcQcgA?Zd-Y{+O6Q`p&R@|UE0cxU8YwbH z8b2}# z`=m*-n9?j`%&vdRn}4{9c;v%t52C;qk*>V(^NtQXXkvBvI&7d*4&u zbo-58dAqluAX6wrqynS~;>6f1f9}oegqcKirbQC+Fp?3^*>k&~Hxk78Si@?ec{HN< zQKOHVlr^BrMh~BCwEgJQ-t?iSCD?UOduMhMle$PSrXolv{HT#a*@U63hJ~_u=&-gJ zHMCPJ2g3q9YHaP$@s4fd9EM0b_u#n$gt+7^&_i>|V(}=eZv}w{b1P zw;P`H4zrg&>%BRxS2}r=QGEZLGgilR=_CpYe3kEPl7V*Mcit4c_8G5ly#BlW8E;u@ ztbi9nJVyTfk({M;h8zIR;F2(wrV;WeK4Uc2$PR>&5%7QQhNrw~lgR79IC-@LTfDt& z{}ylNF^%|P?zhWR(`b9)7H?=t)2OzS(UDxzJVDswp7W+nuRleXY|7tv>fh%Ir19`_ zGvq=Xm$+&^>%wYP+*>fk-nHywAKB{7J4Tu)LX_tF8oD}8R3?Mer%9CgB9=_WjwqGy z(KwVAC%E`o?~w7FcKx&7K2vKc0fqm~*SwjzL>y5+Vq|`m2a)eHgS@40R1{}iF@zU! zYJ}E-(6lWby8Y~DpZ9iKv$c-tFMQ5h(V^I>P|`=jkH zczWpAu>})U+*~lh>F2CGcNx>|v16_Cfb8F1^mZMOeCZ2ypZs*~Q>SB&nCK(Lf+|(t zu%P}I>%Mvjo(_&(d?6fm>+{}VJrNLwkCd>9)@Sdl{pPmXrwd>4rc9d%)4KP(;)h#Z=IF7(TQ5HlfX4uF72qpK$m%aX0nnjU`p*1POKomOczrF0u9sl&6 z+NU_Sxl_ktDCo@XRWExpCwQqQd&%;bzN9SB z0?Zv|j;r^6>#BA*_IX}z(hRYIOfr=qEQrEbC6OPBG?o&ECsCrEYlc!kHV#HeHk|Hj z9PC_0yW~0Vt#ymr@~Srv0m`VI2mCXfL^jT-BmRW*Lg#e!@~^G_(7zA@67jNrjG4 zx=xigndHS-CUmB0;3r{36#{Md^kRFVC4(&i?<7)wD!CIYnb{jG`S|h376NyOJcUrm z*vH+HL`_1H&NbvC`8TI2>=WD^vp7Qilmq*UbVa=CLOb(X0>3Xpjow#D467F;S!QQk zOAhVlL1N-Cl-ft;h-G&AwdAl?8XKjM{DlV4LP}=;b}iY~@sV-Qj6@CA4_G4oMdhM| z!V^kWz=c4lq2Ra`C*54)m;?h-ASztGd?hmZE6&v!k|C#GPp&+)5oblJnpIi;1@b^Y zR3k+K16#}#iprM!2RXaB?k@EtYt8w(d1Z7$6urLP_eml;$`25w!O5qJ@c>2D31@Um zV#am=1+VWpV3kDH(bTPbYQW)sE6QLtcp3;KAYBHF+IyZLLw0B(>9gJ=^ksZ}1m2 z7d+%0abTvIp%J`*Ai<#vTItHV3IF~z^05J`(c=Is#}l3MNXCoo!u#M&Ec`mzeZWs7 z)NUF_JcDh{@DA*j+Vx*2Z=HtjD^xW#3soBWoMH!KT45H9ZH1YbbL=TMlO_EsQ4A_R ziUO@sRkZ7GCjZ(AB~8HeN*aM0wo#Mpr^^$nbW{yR#$%|jmRHK528I38Eu?c?5M-fA zak>hsAI)kd|Dn|=Hb@1b@(>9WVtlH2%2|Ml1RQG?x69-8X~29TITA(+&09V)PVi?A zw6ESo7TJTpNoKXUt2HR#Nibh$#xDCNx$HQq(hQAL%tucF&JsDIob4MwTkfavv&V&~ z0B05p{|hH?QUPJ zR1}ThJ;@-l33LGeM?esy$eqL$E6-1hFF~1v$`!Dst2Sk^%FqUiW=$0(@QG98kINlu z<1{lzf2c&W2o5n=Bm1V?aP$&Na=n_TcK<+#SesZbecOFIM zUesW)cijw^>F{;rk_Cv)-~?%S9mr77s4@yZ!eSxNLM%)G?FbDe?2HEqqKG@33VL%m{yaJuV9WCingS;SYBZ5MyPifa+C|Kvm zcR-^f_GG9K8??*{IC0GG@;!3nfYfOMU2Bx^(~PDpx4?;=ekXa$R0N{vGF1@^W5zNA z7Y-IU@NM{YGHCbz8JTY{zLOl(0xv|UK1ej7OA5N!yY3`s4F)VizgtRSJCNv+MQq~R z%};xC?5TH=ceVn~e7FSY-*t*i8+*%LJ)*p4ly~Z9L`43Kn);IeALN?^EkHecWBKI$lficQiG@o9$=JcP9uBj zy~J-tC=w~;U=>XfONPbMfiU1ujHs$08w2);O5bP0y=3Y@syIl5bXR1;fT^T>=iNv4 zS`cGa0`EIWkh(w_Y7#0y2aEa0vIG)2M4iGfjd6+-ZOMMS-RBSZM$%B22=$u;O~hE% zLF>uT0#1WWqly`8G%iS9alL^fCeY6ppyA3#8zY*sit(;L0(}q=kqnB!&#JH1jK6R_ znX^EuI7UJ$U|fJr(#i1W<5P5h2@sDn8sX#dB=`q5kf0xyQpHJ_1it%^+TQOWM%nj% z(q0g%Bt^a@rSLW()5A8fW~C0(Kmy+=0Ob+E1R)0(T0BNU`+l-#CqPi*`y9u^l6bp$ z9FMAy-p2YjFMWs_GS^{f*Yw%&%KD67g#GjVC4ovlU6u|^qpX;b*b`n*@H`A*-EePSc|bc-bst|{OmgMwOu zX16OIBqt$L3jbJY_(Vufp|n^U)5a5%<+^LAYNtO$7Irief(b+XizG`JD0JTBR=OE+ z=_l79?iPdNghA&G)g0JkKPB^9u3<@r0)5CVK@PV(u!Y|zHy+ZszKNG-XKf-Uwa^7d zQvsI%@|UEEZ|{DXoY=A427UgWOfVwDRUPzAlwPsHc@cd1grA5N62n1 zBvL~iJ3kj^MI&mDdzgHv6&UG<5}qlGvxuc(j=bOHfi>FCGNc={;`Y@|WNyDg<0x_m zp-~zNE*XIu^%#M0Jw`4VUk|iB_7QTpUAsr$)K&zWgE$r9jXWi;OWAEda51Acp@Ahb zP}d?&?8hD@3+-ngae0qSrZ9a_Q7O+<7`m^_*)uTce$Jre!W0kf?1#xvKZ~Kq1@I^6 z2Qkqwj@Asb>YSD5pOK`@EJIbBX3$;8CP;&P^@x=r*oGzK0<_H(g@JV|YvE3b#BR`O zmcZ?ggqv_;E1*byy9PY;Do6x61+j4;3M4}(17ZvGp^u=5kNf~iuJ8%a^`ev5p*eQs z!eE>co1^#+%^ARPv7OBzF}htM4i702euAm?+nY(dh4w#zOteAD8%_g~_^)gx`?msy zRE~m0@e$C-G_(8th#b%gK@5Rv0b(L}T1+~$b6SBifub5Ye|IB`(gH7f;IVq2rXdWF z%xHlZ@rghT7bh^4LMCaB7hYHhQ3q4F`!PXSxdDy5Ez7)Mjo@@EdrlXfP%nGkqNsv^ z8tGknFEK5&wh4-pcatYC&(f1&NWYSQ%05d z;Zh1m0tSQ2d~gN})~$Pj9JtGY;AgZGBLBy5ErIFEhBCzsvIrc#hR~thP_+E#S@k8j zI44ojq=69#46`an(bz@ADxF@3dGSxk=MHN|QDrpiP{dD?YdUd)as(H7#_ChAEU<+!l_}P6C_2 zFU0-A0O5df?iFN&c8#O5oHZz{Q}a`iq`{Rli5^vGA12WT>3nxS?7J`Spmi0!MKR~G z35;@Ot0I(aqCi!asH4ErrRODQoS&RghJ=$fQ+4ugs*>O9aCNtul5ck$0kWe-Ls!#* zPPU1B4<)@bg3=h4muv14L8m4&P;yq67-|rd zgzpBy1j&gi!C8~}_`om8ibEQyP=+QoOR#%xBS+Ywuk`I{PyZEp#?IJAc3b!6XUNoE zd&OF^yIp)sU%x$d3wgbZNTQ_m8^})a%4CcWMtX()%$+W5Umhsk3_4l5x4*sRN*%hNQa<>0p$jlGQt&Qs@7fo9J#T#g+K(!16XS~ zkcg+bz4bbBa4QN@Bu`@%rD$+Ms>ojX0(t)erKrhb2JZ>EcjT>0#>CBMOjYiy2HuWD zO4zR2W-D&xMh>PUpy5&Y5wEeW{n0B591ak-=d13e&vfpL_9<>_(_<>}O|0fw!* z6@IQb`#jqk>|^%MmvBtWULv1wA=*KngTZ-@G>3@W*00G2I!zrlNOTrTiwP7XT(TW? zEU1P6?rmwMn^6o~>2WBI=o&{UKXuEnxl0I-KEx$r?}s7QYpqGUA0nOd5JaiS2yB46Hj>-Y2B`@XLG&vQTb^XHtMvsN~Dt8eaBogG_r zdyjo%Tc0}qua5IyeKXc4RoDHX_G69twjzICYJ2xX!k_D^Q@MK`6aHK=H#KE1TW)Sj zE!pdEn?EbH+2xoUQhoRC(cVZqb+4uh-Om*-r>5-vY5RnfS3H<1%6=mJIsdLyT8|@B zNAGlQ`=TIrc52a1$A>?gGgDi4Iz0S2|MXN&CtF@un3~kdmYb7POFEqtD@ZkVIxv<> zWp_R>R-GEge{W5d@!y+Mi}-I(5uDvUYKGr=*6p{(Nbwy!GdcQ%hQZzA&|}_2&tx4!gR#=cfj?{(Nq# zwDspvsRgY+m!#@je?BwS-1_r~RNqY3&hS)8>(7O$s@9)RUbZsx$at*%vc}!J#A3gv z(z>pQZAz``Ix_Y}s_PyjW9w3r`0t0Q)%^FJRCc$KvHE3Y-S%&nI=aV+;nY;Ty{xK7 z$8?M3%NF#0w0&y)&|aymgN}-u4XNUT#F#@i<{F@oew-~pZw!z9u(_3zT$~aUD9J6Qt7c>x@4G)`N68I zJ26#p;1S*OhqUW+yxFwy@n5>6A8+Od3(1T~H5~Y#c>dBo>Zand)E*V9!F0;~2YF38XGZiD&ZlaBC?UIr2#fFSuHtgUFGU9dP zQniPVi<=?Kx*qY!u5q($*{Y#O#Nzq4r?#KiKc4?wD(9pZbPynTwfY(YHeF_=nN*Y;OD(#5kJO-FJEbzWrKL6=lAd~J zT(4a!#*H`W87t0Y!e`BTB(-DQxOm;|sm|m2?^01RKEp-Q7pI1eyDW9?_}pV&-84Qs z-OOB^ZrbtxGZzmvd$tRX+SjbjmVNizjq%0I{6tKy7+Jy3!9lNB&sgUl*FN5T*~amm zcS$u&Ju>!ms`{$ld)1ZB?6W#Hehw}6NsD*M$TaiwWG&`jn99GRXKZ3>>=j4G>Qfsp zKOsJIOlo@B-m!;M`BRxvt}R#gTz1|SkHu5@(>P@NrY220A)bG!w7L&U&!@HgaK6G8 zdxtyv+FPl{Y5n6Br==3*hqSMip_&<~<||K#S7fFJUo}FS4%*l?m0sbuv5TFocT;Pw z+AnU7PBmY3$gNhiMZd*}vTde5*-klFlFq`2P z<9{0aC#;MSZ|%RLTmSfsjSjA2t8(|HWU8FF$bpxvS#09v#h7%(PHtGpTz7gNU1cX~snJ8Z)`L zl6coJzGD9u;)i4;?__{e_Dh&4l*)kK$0hqG%<6dPn?5jR`GEj@UqZILo>mk3KYEHU|Bj5i_^)(*io+2m}@0!;j)l z)|p=!vs%SZ$Ajr`jE$#oiVoUaf3)JU)$!r6*uN|Od@bG*Pxk$W_J{N~2io|>xC#f$ zhXF3deG4N0gjXJwV0yzDp1FnPM4Xafe6Qicp;3POZ^<8=FxzeZ!+0Iz;c!d-2=fgE z4aX%+Ukc=qJ^Y<9+i_YfbdT?iY0giWZ0nnF*AqA*)&qVp=2Zqf&JN(J`ER}%|8KA2 zt;S3^DPeZlepix~KQv)-tcT6N`>lA--5&bMm^Iw^I@;R1&VTc*_?NrQ{MneXrzFg1 z+sU8vpL;t#q}Rsb3G!r%nG$Abbx|UacoeRl-=iUZ;EA&~8pEU7E8kOl`2O zwWCvMinJiU8CQ>B)!F!nM&hTfxV0gEKw5Hr69?!F25yr_{bEd_IAJzgZ^7owgsHQY zyZ>rT%}LP#9fk9UMF-?QT%`OZo=3hr;JvmRlNZI$FykqxJ1b!Zwhu>p57tNg!@oE{ zV>svRfDYSX%zHFA7RwTU>>pzWuIp_E1Wq&N-xYJ-j~^P3Et>zrhw+}Vc`G)27(cpQ z^3mTJ$c4;`-H|c>8ngb~gekM_F2=d%a~-w*8Ow##c~A>04|lflSy(Qn&hO(1c(9G{ z%|V+tE@762PMS&z7LibB6W+z!@Dl4IV=+^DN_4JXjf<53hx5lr7psn}=Dd@82Nx5W zh|jtCOqm!h!38Yw!vAwKe@5IK$US^11s&*6DqM=ol<&)knf++cE!G{o#LRXEaF)$K zcGs90O}@LBRLs9<9q0PA70<1U&y2+u%s=L{_~e*b@x*6b{FA3Jyd_h(`PlhBu_L=z zo-lcKcbDRUSVki!X68=p9!^+ajW=JG2#%}7|AQ;Bi+_s8s`^7ZwP`Td@q``7$?Z9O%1`5kGowSd36I6@Q18x_XiAiyG}lp( z7ZsQ-Se|L*oR$IX$yzB<4ZOJrQ+-;rTh;7lV=`e%?Ep{OGiKJG8pY?~MYx}xhL3S| zYdje@S*+5A)`GY>2UjRB#A_Hpz8%nB-8pv|z;3p|G58WJ7Xz8+MR>g$;3nLM_RhBP zK6}MXC*otpX;dhk-~H?Om&qYqq?&K0AG;&XxLn=-2K~Y9PWf@#X(ZpxY{$J>QYwB5 z&Kw?Ht#8H#yY1_!{CR@zB*NY1>Iq^X8`EP8BznuJhyD_yC zW=J99@9~>4&tjSnd>-yRr1d^*9>n#;-L>Z$cBGO{Hj*z#_=mrZkxsL%KjA7r5a(HM zBPXk2e%xO)Zmp@vKLEcjlF;c$#TyneWxVN5u{C`}&$>YkN|m&a3dM zSK)PK$^XvF-=^Zy!OzN)zYi;2?@+IPQU462sU=5F1-nUw)4dACDlYjWl_kH@%b%^{ zl0QdT@>e9i3eT$qsqlibRQTS@|53#yzfoE8dmPYqj}tiBnp%?kssgD{E+K>amk+(Imt_s zrk4MD6`qa~*pa4|XOt!XGcSLGic9`RWyw!JsO=1Oz~L60|4l8OS_^m$L4`c8!eJ^d z9UP%7`J=r2b5&gO&sUcG8(n^Q{mC#lsRXGoS6M1N_~=O^r>#LUllmGUomweoK`=X853 z<}sn?!8{xA&>3!V(;H_eNoY@ryk}G>1=uAF$NS>o;eq(o)-FCBO9#$LJjqH<(-}D0 znp$Ql%MLw)lXVLcHYa8tqoDlm$V>46)xm#ph4Rx_clZpBHtwD|Jde^IkFCMe%o?>24%#b$^h<3*gklc^ak*y%9lgGnNPuJRd5Ne zUletC8P0wv^5wWexeUt=gj?K9!%LN~!K;+7!{0{c_)}2G09*qzu?)!hMl5e#Ip2h3 z51i*>*<q5O;cw01?w=*i<~+NWJ+CySFuc~^Xph%JUG9J^%`lw(Z=0x z-&k-63*zCbZ_lciHIN`Fc-6LlESQmCKuK2l*%Zi>1;-HIi)BWfH(*&*9Lk`9K7C`s zB62SZ9>lUn#@bg$v3_k|?F_*(Q+NzTXCt*K=fXX#%m^rK+6#Y)Yg=h2*-jSAsUcAdujf1lQ7vj8{M6kco#Bf}oJOURh zpNUs1m*Dlvqj2V#$*6-HDM&1iI=BfBQ=W^bDBp$`DBpqWmG8s}e%ZK7uzOr*aDTkJ z^$$2dNx?q0pxfcboQu!3J|3@nB!Og$nF5^kXd;mKB#D#nu544WSrWys#NQI%k7Ak8 zMYur4AI8b0s^Ad{YLy?uX&i#_wt=$%F;4#IKH{whNtS z=k}Spb2DDco8sY?ZvH-;^|wwH z{7ZtYQdc2%MBCFY4M!VK&C0UMbG-chRb0-B1C%BIq@-8j6qO(qPF0o)7kl}as<`A& zQI`B$y!>hvm;7W(6-b3zufj4FmkQ4+Oa6ym{>LgV`JXCF{_kz`ljcvAAQg5fONH)7 zwmk&dINF+8dMZo)U@!kT6_@r;P!3-IpXXH=rxK*XL}lqVvlDv%2GUWK<+TsnAHS@M7I@_$ls$!}7Y{9Oh{Gs^nUFuPF@ZA~p*m8HTVs)FPX zP;u$tNM*@C+shxV;*x(}A3M&cd+vA^yk{*1MYuax}96J{6%QvXM57jML~=un;^rN6z7 z=7kDQy4&ke3f9v=!Zz@LwQJxZyn}dG8{czqXcylL*VAAY1=7J#oVhd+hAA0_vz7l3 zH!M~6|I;WKTVj7#Km%9fDY%1eutq9yX?7jFi_3|}ZTwF>SLNp%!;D}iG#Jouyq)@T zGROe0#+%Pl_y30}n8F^o8F>dwhv61CYk~@qKg80Yi+_v{q<#Sf(t$ZPw2QaH(!O&B zu1Knajugl-atWQW93$slu}rb^?s%i}9=KUK3l}j1E`M*S&+h`9_rXb-a#zrcf=O!1 z3awpyIF>`=JOaxha6S_ob-OOX*AU;0VwsVd)-M0XW4ZpxF>?hsks!y+c`nvZy|>|L zYiceEgyOs*w0uRFYRdGqEhn&RAZG-EnMi{)bJI3dEh8asD%r|HjSA|KdB<494;~t(DX8Hsxe{3Yt~HPPjLF7;bU1GcHxm#O2Ce zaFud5yjHn8mKh7TxXH%qkS0w}3ZjiCp4?b)2r?;@V>BPjAqXx!xE{+M$T5^-y3;`% zV`hL~MF#m3vCLSx^&*LrFTW;`{I9X>khC9*^ZGxhKkrht7R1ekSf(sY;FAHMLwNhlClbX8i@Lb^`@+2r^@#Gr3a9A#kgH6_zQV zVBh1(J&f0bbm$i0-UDL6j18q1S>VENyb}pB!&~s$m(>0LI||ZB2shp!z|C|J zZk)rooVZ(L`wrm|tS*Z8#Rrd$UT&X(D^$D$cOkwj4F)$OTvL~f8mOWmjf8eKVHvJh z4Xnghe*;cdsD!U6Sfu|(Vzs64O@V>;YrF()=Q}&m*Sg;wT)MM zPT?w5e*s>kd>`Iu&H9g-hbYLZj|T84&if$Rqi?)wmvhv7Wp?q+l@&RG-1$6FUtUk=%qUVO82 zc>iS$P%uR`u+8(&xI)FZuqwxaee7s0`D6U{pWzwS@vdMVZ zhtUAa@bSdmrTG59y#5cjxOtEQIj@~-@MzqN0%`DFYZreXONY*DaW$6Lf|CEQwTs7C z3`>dkweehWQZ;Ze1#59){|6<)nIL36Uj%*(jyqeLL_>p1gMcQZ>jpWuyZ4Sa?>s~JviprEfR z*k~IFTTC~b@Fd&39D*%4+W2@L)`wt1K5xm;VIE1bc)IxymL1HGhlk`7EdALTOq%Y; z$AS^<9aM;$QCRjMI8SNdDclvO*#@_%0mu|~IJNBz?Cd!cFIO|P2VUY1xk>W%D+>C4 zlAw9ncv*!PDxd86G|#8wr7Hg{T(&L|v?lG1!j;NnwdMXdQ5WD+yhv5J6wm!MYH%uU zP@d*_y5}U`q4F!0x&Fq?YzlHei#nL=`8GUS#pijRkIPkjA+A<_5HD4J1aA#3*Z-J# zoPrLYM+2z!{EX+7I7j8bfGd<=!P)Dh_TKQ^(CXm+!-u&k7^o_&#q*Ru#d#Z|2EXvU z$@3OmsPccnOOzXN!56d_^v?|Z<_e5#G4q$_fA9pU5NzCDPGgZOx5rzRJA2;Eb64C* ze$qAAor3Hy6CoMEKA!jWydNH>@(;uvHb(XH@O0(F@j!K*8HkI{?QQ$#c6l@fr7GcA zT!G!~wA4BrVVv(3FayLpQy{n7JFQ)O0haUJ`CeSBd_R8kTz&tiAaPz)p$7L=eiTo# z&B>MUKRDX>r4!ay!q1N2X2XT2tG)8=ekn8sId#5YKaK0N;U&m0!SXmAB$0UnQh< zHh%Hwxe>4VDj`8Ob`Upzod|@J<}V5sY-%kqEuPbg+Q#LNYSgLx&YpM00~uhjrr3d_ ztivAT<`^tH6mH45$){if1^ZJX7m`b?U4_fA%#ictSZ2t%4AiHMYPde25Ll$X(g~wRZ8?>ESVSPQ&`b)E-A$Q_D_RUzq;pp>)Yt3DX$k z{v#Kf9w*0wRX>4R;>J^WhGUgZx9;|FZDBNP_Cq#*a2yOh}{3A zV2o-&25`04!E_au4w7C6GgMsa-;c94C+rUJ^=i+L;8Kap{>!p?+!a_qiKjEd;M&g` z`4lgpLIH7kLt(!Wp@VdMpy&R0i5kFRc%||{ydH=B)4(ydz%_V+=b?C#n?i;#1!sMe zFl8(v8PFPQSN|i=>+oRmU3>#B-IB2V)4;`RrN>U z&B`Nj-nUWvqXVn=|IhalCg37f;UZkWHEQ58-1WQ2S9mV>d@asV`4u=nsS0LMFi&|7 zmMIUnxVZ((nsBbhS-dg|H~x%<)K~Gl@B;P0<-2i>iZ8^;9QFCU2Pjyo5+1_qlow-t z+AYD+*3|Mi)~DUDf>_XD2a@D0yBSM=ESbRX7I6KS4%~TJRmgeCs+0?!T!`Mqa+>5> zpLi;9_1f@FEPK3*ZLsrcyjEleD{OwB;asTH_dZLp>|n0Ve|$Kv|8<3*NYH*#?V+64 zZ()6i-t+tcu2qNd6P)*bg6?GF_sY0L`KzQ?u*LItc#5j<6CU_OB4|z;{1s1EZub0- zXH(2eGnJoAr(m-x*a>e{$9!iz;C#2p;wBRpD0ji7%H6PDBi(Vd@%22c)=1J^DmNbn zP)e2@^OL#x$Q1FZ`M@<;rhK)HA5z43MCj11nWo4`PV`)go7D_oigULm7#^Fv{+~+01XqBkVLgS{ z;Am@Vxelu-G!-f?16qg^oF&1Gm~`_5*6ly7EcZY2347Nv+aK-Z=X{jU5ZEGs>WylBXK?Pa7yE5241V;vvE0b_hR)aYno$=o8@>O@oA|bd|(?Geki(iXn#+0!d(XFSJTo>An;MFe2u#ypr=VF<$G~#k|c^AtR?_s^`8L?nM;ms!9 zjKqBzV22={Zsr67vi-|x^9Tj{m_F|LNvY73;6JkQ*)ZI7T=aQ?FYsIy--K5wZ^i4B zf5e4J8psTqi<_*G+|PeWNb77omV55)xep$o@(;ju$_GpSuZf^FX>S0Q0f$@M9Ep>A zQZRrLSw!O~5W9qlxKOzi>tlKej<%+j%OqdD9e=rs%M9Ow^?>de$@6gUpPJLnv$%o$5=JS{kPq^MINW09krIx-E_jTD^(x^>yjgh}-mbh7 zXKs%gd;#YuzhYfLk1~K=&u$yFHY)T=+rhQg zkc~f>;&~>X>*~w>zlwr&t^nVH6U~XBx-@Wyb-p|i;Vz@w#s$-J$}cFf8hBeJVDj}3=jA_YVS)tR(Z2^@b^b#k4K%`Hesyi@wkcx+zj1o z9gdhk7UTJ0yi|3##Pj30LE_>4hrhT)!DueEeQ8lH#h>G>e-dVZoq>bSV~SP01UK)9 z_HYcA{BVnzah@;qd@&wKe$rK#OhF!(&fs>*L*p8}gARk+B?I~!=l&aYV8(K-S5Ei5 zljoiBXqCS^uKYKVG~vdF$tY-03E7@|dCtK*RDM6txj3^WVZx2i7vQw3 z@yY1+JDY+IrdOEHJj}(p%C~#I%k$lMu*$z5Z&!ZU^Ad4VB|J_+S}YnsEv{64#`E)@ zU%(4h{wp|_J$BC*KjJki{tHevtAal$(B9#>1?R@20j8bb*6neDig(6?89-+fF6tw3 zUb|jMwitg$j`cT86&z23_KBWP#;epZEW-;XM2qwRJVC|Z!f7i08?H(3752{n{yIO| zwxGpJh>v5H(}0`8gK$npukf8u8o0$eY>`W~=R2{S*5MX63$UEV&i5uMSW3ZZl*oDi zy0uGq6U%An+<@gY4Yzdj9+p+@;ve8_<&Ute0T*9~<&ZchKc`?A1>Gr;0c4C1?GifT z^NGi8e1Nr!ABo2kkJYpTf6vbENj5| z4ZIc~Wb=QqcJbe^tO4g{+!-Gp>@ ze}=V-&%&}uovW}sqy}4(OYO}R45T2u)TWzXv3|_{9Y8n0L{L7ZFcN!VcAeJf~+(qytuYxbZ^7a{^bWcpqHS zKFU7;&s9Fy^MJ^le;nl_DJXPP!i*e+iHda6 zO#OW>q~)EW0q*O0KipNt55$E#C8G*?6kN#&-CHW7@LW}4EG}VDrUiSDZf>%1-lGoI z%xhl$Tb|#+OH_Lw;F=^Ix|_>C6eK!D1B#cj$W;6wyiK_TuT%MBtot%RS;Sv>@lBq$ z;N%X~;BFUDlPS%$4cuuB*<$7%&-Yu-%}z+B7| zigLQ=4!Fb4QHML@g*2EE3@>g5;!2!lJsuCkZia8gB`W^h#jL+Fm9UwF8kMl?CERQ< zhnWB8m&thJuF(LF!=p2MnY4H~<#$-S8JX{Sq2~vZ6jaiHt5AdM=&*zB@I5?m_b9#= zk5&HE^B11K!qZj$7Q8??`2z)u)ZOVP{DN{5-mbhI?@;~&7pqJ4Us!+1^dBtOfpBA* zxQ@$pz&dH#Q6Q(COUS@-nuS}s>4>iwb(7H)z&Wl2A0#(`7JDGmGe7T&I0E(Sk8iAli&Y;NI?Mw zaY|$l|Fw1%VwZ-i*f|Z$Dt2y9dw{TAA(Le+W4apSRaDjR9tr8NW4vTIN0-XxNp~JfCZs#|LoyO6bw`e zg}6xhbUau2EYG7npNs2Cqpxs0gV!qWGMTsex~ltsm!KdTVK>})kH~v_-UsKZ_`bNF zRqk#!r{YQ#AAxI>M~aiGV6>NT9$v2E6L49#Xh0X?O6AKuU*Y*GTz+A6A$t%fm#YRI zp+NgF+@Ru5;+#FB0W8CVl~-El#O10IGrxQBzdipune(qqHPCJfkI`9C2OV%eBX(1I zD9%$JjT6c@;<4SM`Zs&7_MDo+`rEcwRAB)L+V|qVdq?p_o*%{&RD21pRs;GFFWe`p zzYY)R8F@p}EBM;;H+Yh&@I78c2kwbykIQ)?VpV4bCvn{5<5j(*4u;|^6`z80_Ko7n zE4_kiJYRL{)eN_hri5{r*R(pe`I)Q<;H2QHMS71meN9opnD97pp110xwj) zAJ@A2^8WwBwjj8h;SN`*1iZ87OuUo^celsv@SwHJufb;$?`-4mTD$oB_q78RgdpCpEVPT~;x#8k13VbZmCeNu#c~=tACBd$aUO^t!Q+DaKLZ$V3tYkl zSWYYFi?EzV&Xcfy%AJg5&A9kfENjO3N-S%_xg5)yk^b5EqY)IyA_=#+xgN_gcD@12 z-ORZX%iYX*HrBWAIXK$*)hpJw??q$zZ8#UMWM^K^$`j70^Z6yjiO~~HwQ4}_@6Y0` ztlAP>B(CS1X&VxYYKI>Zjuh70<)l`l;Xy%E;V93?;Jyb$@e^<(4aV&r zUW(^l96bduz?Ue$iZ53F315^{1>L9di$vuDe4+AWe1Y;kc%t%ac!F{xZWs^^_%~du zW*||{`m3eFfp!o6kAg+mP3cv5z4C*&PBqYg*C_viH!AnOnul9e|5Ut4#mlc|{dZLf z50fxS`CXi&{3qV78pyeZW3J-E@pR>D@Brn-xIlT$HJpFNs^D)D79J5znYlJxwc)Ca zn|4@MwQ~mErY=Msu`E&-?~FTOdHYY!f+MV5d{B~tDXPL?EUVNd9EYowPrx#TE>y-Zw%OP^{)9^;+<*abN63bcRT#heNz81@A=i=96IW5DD*Z((A zAdAi=RAN~~&a<(c*UodWEIQ{~u$(o{)mY9d=MEQ_{4;w-aMr?*|iBRrppm)b?n`sZ)EP>?++TJ`7Q!IwqX zfjKx0_hpo_il4!`D!vhKKbip$mjRr99iQ(bp0N4T@j8|NDBc+MC-*--_hkzP+6MlJ z5`y>+&n@ChqDybT>$yE2#e2cAZ~&96sT|b5+;bT&Cg0wFW9DiKO4x&Ni<#^3>PgWI zEWxW({0VC}V7ZU$xcpr|?GE@Q+H+4#hhmvAd;jM*Ag&-7LChS5(*{QaIu2(l7vO=) zCwrDJHtG23xLD<%h1W8mqaj)F$_@Fz~{JB#WN~6=E{fQ zValU%iSleb@KQei=WaGnQ(%sZ2C%~OD$g(B!76_>-bx1@O*p`xaTAVN?{$MbGe+(A z#J^n1@BdxGDHN(Q}rk-hB2U-$ebUajiCi+@!E`V((W7W4|+ zr-Oef*scc9Zw7Bb42|Obtw&QsPP2(#{9@0S;%rraD&97^ckoGTIfN^5vUo~V5Sz&{ zQWY|Asd6XldOLtqy!dd>BXGH@KN4p#0C&h|%w+v1PK@?&HVJvkbFJN!zvac>^ZWrW zQ1w5-g(pSrug7zhznaM^mV%XbkM^x>o6y(ufq0Q>AP?_QJ{%Vei#j~Y+Ra#*7r#2` z6->utRRcHRM&%oE=aZujZnhp457)%2UcBD(+c;a*Pp+ZBoDwzo5gw+Fk(tF)ukwL- zpz>L``2V8%qpZvAj6UeaA8Bj;Jvs^|sRo|JbCs9j64l`sxIx7?S-W4u^|`Ta`~c4f z;f<~JdHsJV1${5-Wu~WxQ+PSPfevHrft)4_aYbRYhY#Wf%8%ex%8%nZE2KK(O*uP7KeJQ~0jT&(?MFSdzSB{8077son@WBR^ zfQu=}KQn4@GM=JbhG#JV+9#WDx#HZjqWl_Mb6GF5v0XR=u{r!^RK+v!T;)!94o?W#gPZdM*@?cQvj;l*cro`Z8nMgzVLSBy+X1@kDVRS9?F>hpN0v{Sks zHCU*YVtBX6`U_^`{dC z&uv@bIJ{XkP=IsCL>-=tCn%q0oof%-?OyyY&v(yd{Vz}r+)u(MY7xGLN3#aPjlUCu zWlcD*_57*l^|(Rhe}xyQ)3|f;7XAta1)Md(X>}x?uM)=LM^*e5TsgHDpW_Uta3kJ& zel(zO@PKiVzxVvJ=j1OGl&A`S;G5{so#(x8HD z;(Jtl6K+=Vtyt~_?hyTm^$ayeak>BSm5Zn#a5HXD4g7=uqdM$+yD^VryNJvgcr|uY zd_8_0yR+&s+M!zNg_$7NE%x-*_WE%I)7Fz<+jTioo8Gp~%| z30$Py2bWyS{eN{VypUW>!4j1)8E0P=HBg50l&{8Pm9Lll>w1~yw6MLm@cYal%?FG0 zH{7W5|H3uX)cwDOf`am>!?YCV{ne2>;v(f;a04Ci)E;y&2!EiC`2_qCc5C7`EPEVo zd{+<;zJ%BR;TAXZy@Z9HAHe0Rfg0R-deq=!I8XUW{HYqiXLy^6e~H&8NpOp-)4XsB z-3T*1@8LNMmoVinzXwjcK5}ndpu9g`rJReCJ5<3T6bwj44IF_Bd6VcsdXVeHSUecJ z0nfp?%FA)r8BzV`u)IwdZgH~;e~nMJ?QNOI`j-Ni@SSbYc^j4voqxtMAm?B3G(3y~ z8DRFEp?);2$B zzM<|cgI_?yVe(2yZA}?2jX!GWB^mG!#MB%UrE7_ zs)0q;u7QVfql&+4?c(p_UsZgEwTrjl--){m)dBNE2XXoQ-$4}oO@bR?iM4BB6#hqb zaHF-0--M02@-4S^@fEn8ihpe_an^s_d_zG732ua$3qrdFy5LT#fn%**{CK>Jichk3 z@yU2M;xP*35Zq%8<^CTx_fa6PZo@5Z7U3?c!MCkl{9P<>Bs#y3G*PXw^^5WHb8komPa%fKLpD&pz{DM&w$QHVtJ+Id=ze&tnUBEP#{k%E+HSw z1BLStEDsdUCt`W6=zKDk`@M4^UaveH%iHfRJ^~jfdHdZJoJqkXEBTWNB{%;^`BI68Nl0EKOd~QoBnmdha{|GMzR==Tqyp*1w2p`V0laBlzT#lv%*U?&m(ZL zdH@-TCn%4`Rm$hz!~RP_jqTtiFJZOkH}DeGKm*>W{65Z|89f1gY+c5sPj=vld)vm3 zPI?8$;v&_+5InsyYH%1{q z`*@{udGt_v8qS^-&Da^9&%%RS<4HdGM8SHs=w{)p8>0s1;5<4wivh}_ds3DqM_W_NWUN>H)Yf>Cr(ah2Z4~G|p67W!UQLG` zXjS&`WxP(!(CePx#M@Q;U0iZgG{Ya_1>$5dO#Z!QS75!t^F~~&8u$j6&xsoR9jG>yNQE!Nv!bF*9oW zXG(`qFt8vxrYGVCb&OBO`WP4DXlrU2j`cC#i3^)daZW6}uua4=L#wGI7rIS&UKOu) zgDV>aM@-<0A#@nLy5&0?z-`jOeYinQ=|i3upBnk9l_-ZT$5+tQYC?NfwzjP*0XDvQZQHBY`+>-BUFn zYhp0g13KPw0p6?zd@^1#HTvjQ6`pikFFU4~N!~(1l`6Ocuc3mw(yhhoaAz41!|L`B z9pJ9kCAb;)wZ0c8uIL?nlUnk>zFg5VR@%CauL3l0cG0(UV~TS@J%dU|JP7ZPeBix@Gjoknh-b5xLGyOyN0J&)j=U% zkB_kRr%C)u*FoGogy#`I(#GGx4X(bt{%@urhk}D_Lhr@$-fz@EA)cUo74Gm*Gy~Uq zuJAk)7pVLyJnV_EKI@;qVnIQU8u3azKzWlipuEc?y!28Yglm*1;4?Al-8ZJed5}fB*L|3gki&ZhTT1%XPqc5SHtJ^I$C30q5heTnC&_z;YdM z9*QU7gDH?1njAXZe|ZL+N`aiGuELdA&Qs@dET^gSwOCG5=j*YYrp`BDIZd4_v7BYj zvvF~mdi_6#0y)iG!Y#N=xf)k0r?8yYF8?kp=e6_QSgs4s3vpLjBf-WeC~!_v6+A@2 z0OiHFKzRw4v%)p-IF{4M`AJ-+{1le6%Eg!CdCDtrvPKm=Pr-8K7w~H3Ix&lKcUqKV z_=C0U;3xbsap_Xx-5(3>;@MahwR6wMxc|$lbp^di$im$ykOoe*cJU(IpZLx;eyz2O zUyo%~JKuoy?YI(08-IlIG1i~HA3u9h+i$_lQ5EF&`zWs9w5o3>OEzZywhkNRr{DElEM0O6Z2SD({VlJrkYB30$Jw2TxHx0GBHtjH{Ff;M^5ad&xl* z3{wTiVm-p+z4(cqPsSCh{%M|1$F(Yc7OsA-bpS~-ih{bRz>M`g(Q_%@q4F=qxi9eP zc;;LV$#QJ|*V=)34i8p-5tprUabEwwY8!CJtlslGp4Z?)I&}FT;d#oR;dRPidfu!p z_rGr`$b2zsa2uZYQsgGwp!_@DuKYJHt&8%_<87VpxdX1T`K*7wU`T;^Ici{coUgnm zZhR$*XXDaWBlq&WpXYwKM&Yf_-r=?X|G2ENaE$nm3W=m*%1-OD> zRmIF=&r5KLRIu?U@Ps!bKaCeDukgIe^GkRQ`C0z*p6Iz0SF8L>Jx{^4Dt;v%oP0m(;2H`>D7yUDd%9zb~0 zYLYy#utx)^B>of2rFmN{bmJuXm$Re4l6}af{G|;BkWRk5-;kV2fgH2Gw!$@+@vl;zXK}r27HE!OZ_Q$GwqL-_T}IIdDa$SwwU>!=NEDQN39i1 z`zJ%Y{LY?t#S6)I@vfft#8u2dhoCoJ|DQm?MpfY?&!^x<6(5eXKaM&m#zo3!<4JVT zJ?J2ADy_o-#m#Ii0|+*G{Xa(%Lh@h!l}j9L{41AOuYr_`%aqn)J%DFCuf)}Kcp#0+ z-S%r-ZU@Zz=K(|&h`-0{)E@op`4`;vlV}G1z+*p+yaO*(j{Uc-Ga}3NKV~{ouu4_f z1@BPqf{Q+jI>_?e!*c>xsQf;7k@5k!biK3}+<#)`;MM|}cz%uQ`A9rBs1U{nhGh?&dt4F=_Q2(j#WLktHvb_kGvwmmVA&y8 zzc2TKEy|bRB*&n&!V?t89=Zyza4(QObUtlLEI5YTdx8O1V>v|5A7D9zZU9{`=aaIk z{zxo~&i$^r?!WH&lLqBVwt*?iyFPjZYhTMdAXEr9{xv(#yW$EJ?}~@1N4n#1@efh` z0-R6#?!Dm4a*~2tm9P!h)8Iie#Y|+kr)fZSa6IlnzKc)716BR`xJ3CCT&nyduG<#PNb(o2 z;1AD#;T@_%3$Cb$-tRwP84dm%HFz*ytvmoPAwSdZ(0O?4uf5D>7D-(0|Ibm7Nr5}Y zFXCKP;X6DS=hz0iF6U;W;>Y0*SXz)7yBJSV@jLNKLky26v&9&02)32=D8VX zZIAN*!Og7=#!cU6n1SD-_(6D`ikIN6&T{{sNkPN!QH3hp$Y~R9{Igluum<|`KeC6< zSiAU2EN6}L|FEob=NGXoa_5(^EOOac|8cXL0$JtZ7B_ETS>?`eVOizQ?_gP^&TFtN zQs)n`EK=u>u`E*OPqCb)Y;ymLoAngPstvce`4Y>jb^aQcD}RIKta0(JSWY|VA8@ns zPgvH7i#K6eWA^?ZH`^(YMdlLzz_Q4k|H87Uod3ac7C4({!&UCw4$Go*&cL$hoI7G! z6ZZNSH=QYvMd1>5#j>cJcgOnXvImYf{$w-OHOZ3nFT$&pFY|nb=c{nqUs3&Q zJztNzs`yNt_g6BiP({HMm2ivaJ3QZsm#X}GaLJCSy$5iuat+pp@KLPpe@!j_p+FzQ z=Xq%+1Imwcj_}&9JGWz*((SR(zfW!JC!|5U$uWNm>jAvy`2(D+QzQI@g1Q^*{hre@ zwt|=2|3rI~fh(0e;nm8S_(1AQ4Y^Pqg$uE}_D{g0aZek+bp`uBT_vm}p;q~8od0h$ zfNwo-^ZYZOqVl)n?3g=?cy){`mH%DA`qKsNRBQ z?%@TvM8$8%W$97a_+~7Loqgz-G zQMmE?KmJ^Jj9fuFmSg1H0m~tB?u6$m?}Fu!x%h5a){t{o{Ic?%cy;8Y*^7d;QGw}! z)7S&oKmvDF-WTtoydUnS+z)qG&c)fv2V*&8;g;mjK;5-TI^L{dJ-IAQAQz_8refnhHf{FDujrKjB6R?~G!Qc1cI&k|H z{9ED7Se#bmb;DXLheWy*cPonpGsI;g@Yz^q$UUYn#4@82PfCR^DUd013B9l6-|4mq z5}%0Wm<8uCUV`P21rMS42P}uo#c#ffKVnFHUps&+)gH@*=?+U3_`ImXV*@Mi4p6<=7p z_*Z!Q2~qxLoJ^>1y?jf-FEkKbI9N2huL|uN*aOQVa?ZkCIb@wEkSpO3YZpHe_awfb zjbCo<;$^E?|7+BnNYh9dN`(wt;UQ~RVKJ6P>bwM(;chnnLu(iR7|SYm{uIlic3!`V z^KUr??tb0=h0rcxCoGH7d1uV3ZFMHzq1*)*S4Qz}IA>Pm?s%u!k+YK&oTCbQ;^|dU zLT{{Z9({1MHMR7``reV`nNZe{yA+pB;~${oG)!ECVQ_5xKM{n<*3+@DITWtObxS9dYM{x9CF{2AV^oc(_l~8LstET){u=iAg~ND+~Vd^ECY0&f@OfgCa?dmpg>0G60X8BLg%ZoUIWu{ zwDG+jtk=K{6_+W0054KISfkAPkC{g)s8tC|B_YcVAZDJz=Q5xk^eTJ29_M$D;$L~* z;`uu~LFNC1%l8WE%l(gk#hQZUVL{+#+*QrM-*|xXzqmj-_EI>&a8}|b4PUF`?XjN0 zop87%<$s!5cBVj2Ve$eVxfn4IM&V1Z3;CS@4Z726F_r=BMQu52`j^In4)?a6$yp#f zu#a_SYlj?K`a1~UMLaJ3%ao3!K+nKv&*$MaYKA7@M0RutF2ecBm*LJmqWBfKuX4F{ zlKz7sT<0ZJ;Dv6F8Q|ksMjUQ&^CVs%dl1x)n@_D>e7&vj{3X_h;A_m54C746Hx%eY z(2fg}%t#qM$dzkrSRu%lDNL{9TCVnJC(k?M!~ z31U=W&+uOF;z}kDFKUy|+Yu4NC{%7B}@+@A2C>+L~J4#ce+S|2_q7lRf+i z>jC`g`FC8P2Kcw0!(2jXEWe>@(LaC^)zo;_b8 z=9kxQ8Hf~!fWX8x^7pj)?^(P25AZd_JKFd^)-EpJzmY?3&AS6#qm#{B1b*|CB9o33uV{95a?cFr_bByZCA>$JF@^ zEUVo4Ei9|t`5mmU18Z>WCa?cLq(EQ!K2`~G9f-Zwwt+MpZA~rhv97<9ic9^&z4`-H zob}(-ami ze~PPB{0qEse|HG@Eh=8yH}X~-9un!Fmm5D&5N%v~v7XYw*YFrk2gPaO&8SJ`%N}OG z?i!R9RhUa+oZ?W-U z|D}PIUIYL08hFub;AIt;`rEwvKdZP5;1{p{Z(%&>KbV2U8*Qg>UmR^sE&E|Th5b}q z22kwPAF1LpfOEY1V}f|te=vY5uYsGr25$8lxLw6%0IR(EFR8c;;1#d_YZABp2LovI z8u-;~;CHWqKUG`?kW=4w2KUF&#%IZ}p235#>pvJkiPyj=uYq&D2F_P;8Nghx{%tBQ zGjNAj|IYfT|6l-hBHP7`}UrOJ`(Z(Yc)_XW-Pu{5Hye}Y0o*~~?`7+=g_3XcH zutg=vh~sazZ7?0XO&Z9JL(JsXrmfi6xe^AAxezJjrtbWm@@qN#0aYDsE#ktB~;6mk1xLkQF)-&`2j<%*`%TLlk>+Q0g znelx%ps{4hF>6v4WW?ETwQaB`jy5i}Shv?l#if2xoBGKNbB0QgDLcz+;A|C_1}fV$ zkYQ%4xYVEH)xSl>rT$7?U;h68|5SoB@S@ki%PKAnY|{-;|7R7K`oDPfe^YU(pLjc( zLDqkU*_VQ7<5G+D6!uebX`om&AoWM8xD4PNul^Vnm-j&4r4D+i>kOqGD8u(MirGcD=XbNQq_Q%o2r55WM zJV?c*eu=9e^iKn$RDulPT(5!iRa_dF>lz4p%`msAxYWPHtAD48OZ_@qKkT0Yys8qU zf!DnT-c)gEV7qM~-0KYUhl)%6zr6bYsJPVc`%W-}wtoh2AO+FZ)Y2d8DLh2QrGe35 z1GY+rIZwr90OP#+6IER5R|oZ7{|q3d5~P8NiXM*8Um5-zq^G_}6P7_O9zJd}hqWlUj>1%)u%y^$*2*1`k(p8NgVa)D4VR3DUp? zUIQ1YxHK>i>udepo)==>{sXGMwExh%-2e3mn;OFgbJ#1n_Agcyq{B6Mp}M(zx@Aulaw-1iC zrj}k%8f`FLEvIAONi{6eW;lL&roC;4aM z1o6H$J_fHRUSNG8&cj`;lb2IqmP83N@M;p|9SdpjW;{$aI1f)zei#>%KgH%hjSH~6 zQ!4de#aWLg%vS49@dE1Sg-)7H6g2$XT3~ixLjw$`)K)kKFU4ur7vox7V?E!?e^cV) z6Q<0@$9~Kjn2<1qyq=c<9rg)tc-)>aooR4)e*bOi)-j@2qdngJQyxNJN|@E{!U}tQ z#_RoAz06qKKp~b-Lgm>Ge!-Wo3*Rr;&7_+ypYw~ws$Qnf#z*2J4zb&z*RZ@5J6+=P z{kLWca?MkNdzN~nZ3VY4;gT0+d&0h`dT9RRIB8l z@FjV#>w9c~Vv zDg?cpN1s0DkWhe_+K38)j4n@OKS?kzNI_zafBy5o|G)2CKdJ?dsrdOGz_+eel+rxdTc)@o7 zpAUGXfG;1$8GdaTP#+{2zaas*Z&&=UfNui)D+n1Fl4;FrcKzdXiu(h7e+JxotYd+m z4WW8;RA_DnZ0q}_>3j{a{l>Et$|ZBK9!IvJ;NU+2wjVHB8mv}44A_1Vxe>3l@btNu z6T%qJfyMpf=l0|G|98vF<95Ms-Zhp*`rTkr2Zycz`~|3KX?iyUwyoPEix*souC@Kh z^wa|01lZ1mt|(wSZ>$VmIuG{We*Ipu_<1b&?Y7~*1;qoyhu};f8P($vz@1w0CBSz+ zGu)Q?7Xf#k@g@Q_d;rd>5Xx1&KkpfV1A~3L^xfXVg-%<2ng=1gXE^KETaMff*nXV0 zrXXmp0D&8Z`>rqG2LXTKXTxn%eVz}g#`F6W_g{TK+VgWqkM!W9Armjb-4{pD@)ltM zgrXFZ(*b|D1O7VT#U1eO$G~6g81B2Ec)>q@XzUTa3&OI`E5lg_#ctqlfW40Azw!~N z`S#(yZ8-t0zT=MV&-!@l3W}}*Z0CM96!5i6`uptP^IcQG?g-Yy^sd+?7pgk}cd~rW zN5>NMdBE5I?{MFW;`y5azjv3}mc_x=zmD$ka=^deZPYM5 z3HS}%$I)g|z3lISun)fpQ9S=5;MV|OQov`NXvg_RE$2&sUk997M(h92I0-`NKx&H} zeHZX|24=Teya}-VTkc?L_QK}L;0Rdy4#3tMJ^}bt5O`5>|N2uw*%9#XI8%EB??0^{ zf9Vu398STZUNo~xOAWQ1Gazj`4h$cLzd#x zoN1$m>^#8sFP(2K?q3hs{)y*OE$4m$&kto0RPO&raKZlJ@h=n)yeEKO&%llf7GD9_ z{#ou)Eq4I6e@5F*NZK9E3UTI`8QECu_+xH2cjoY#W&PRj z|EwqoxEHYfIiD>5vjogsj)8$6jasVnG4p9Z!7NSdHo*3i%Kt17eCy2q>>H8BKyFBW z57>Swb$;K^k8&XA8P@^jen6z} zOQlsrctm3bJ_!;wb;;D)mDKBfsb4H@HS5ue-qEU_mnwTqkg1Uk&S86bD)AzwBf&k+ z!c5k#b_RybPc}HSrwW-u1ViRi5pWsk>~^CuAY0VuifQhJ%8Q9oqLjihvRJ!6ze8YZ z7n8oFCm-uYtItY!YA*V-J8de}Db5S0MSS50QBK~CySm3T;xM3rj6E;rUQENpEdGmg zWJ5@jCOqLH@k32DHS6wm7Bwgj1130Asgg0#fw}50PB>ggjyd+{&JPCzKL`RXBI#?Y z(lA+QEON;li|aV%J`F+-92c26z)>GF z@P~<8FG@0$LBx=FK_j(Wr*eY7sC&k2zIouibL&<$IW=T~JGGwBBOY`Pm?6*fq)b+) zYm+tSdMu36bI2!8Uw7u(PnxCgcK0zCKj`e_5Pq+ERCg@&oF}BvG2BgeHu|X{uEmq^a)w&V94`VP|n;!g)UQ zu=C!JkH4BpXDJfhg&|v(i6w-m`!aLVW@mV)@*Tc8@@Z$tT(jAsjSxOFrJVRuqzX~6 zd2X}wnTAybpHm`I8(4UrS^J2yrWKOJ^W!)cEDRK4*@Q!H5X*9{pzf>$%vD`^PLjyh`{- z9sQWK6PKDBA9a?u#w%X#n@aURYx&xUEdBH+&so{5Uf8KX$SHlsXd1^*+8`F57t&Db zfJBJLLm4+kJArC1ZFO7gx0Ry3w(HVTDVnuQg|*9>FceE?bfwlD`j~U!)Y$jpD2)@s zM2!DRvW(}pC!Jt04wy$m9;Yl)NDiZg=Ecp*U%bWFn1kTN2CTV%-fJ3aH6 zC!CqXwX4=Y;hfP5QxS%t?}uOrizMACUW>M7*1fDL+9qSn(pIJTx3zf8+RCL9qubhN zD6;1)jKj&cZ0V=|31t4|6FofuPu1H4yO%1@SQbprt)+!4bJwHJ;pT#;ojn#*+nOxZ z$lpJST{1Vl=uDkfX|l{kPdYOuh8jP9(plCRugP6shA)_ z1Yt@&pK6gH;x%_Y?(8#(at=;VPBXaG+1pIn>dZQ}7C-CEz3Nt*^R_y}BXz5qRv|k@ zqW%GHj(^74XJ+-0+0s&Wzl)#AtVQjSW()8{%@~1 zvoi7jyXqBLHFeau$|RLaa!w?rX~ancR~5vHdMRg7s*p39t6y>Em@jX0cDw8;XJ8^V z=RM=BY$crVSotJQQM?P{F;0n+z}I1M<-U6Gs5ZgXZg(g+8W5-%27BJ5AijoX}A6R$o|dDU8i{ZBt@^}1!$Z;r>5ONn{; zIcI1hzNODry=CzZXR5jKS!dT})yPT%oQvG#FD?!IrtZ^ir|Xa2?wr1hYqi#F{)2OndH4^`Sq&<=M*I_@z$&Ro zVsqDPP#E&OvzxhUhx4}S++#Y?B#E?E2@0k8L3!ro=bc$yZj$U~WBilm`RARv6R+;K zqv|RSw_>doA@kSgohe=3>`z9P>O$767ph)$9IjTsh35O~a+8_{h-`=`K{+@<7VN7) z>)330!P$4>)!kmKx|&J$elI$2pZLIOcwqW?&uAOg+54s#YRv0lXKw|8dJ}s6#o~gh%+nX)Am}^48~v2I!}_& zQ2QamhbRgqqI+2NNDzj;po~x#Y-ZM?u$;Avk(0Hnf3=IP%`zj;ID1tQ_wY;3fqERp z+0ke9g0X(PVsGzz+1bBU^>~&w=H9&6luAMxV5exbp;pSgP@;=O!Zd;>);u81{Eh9@ zqIP}hvst5E75`pK)#+AB}+ zv?qBg{75CSOek5{mpSa(zA$U9Sb?cCu;HQErTifA z1&c*2gz5jP`@M#Tyh}$xswjHe5%ofptiZ6 z4AA^hK^g?!=z_E%Lj+3{UG;>;R6#i}G4AJ1@==73w5MYVI(6jr$|%v5QGF|umC>5> z+B-@IqllsL?ggmr>o8X65AOMOcm7~V(QNi(jg})NM6vAhf<{C`WcxAth{!0EpI@DV zlS={;2Oj$U@TKPEue&>1k%u!z|C$C~io!fwSP(^sMzn_M0+dg2bc%WT@z-}jx+6f_ zRRk+mtd4lPa-E;9K5J!QPP@YW^88w)C95VsugJexY^~cNGF~QgHU=j3?s0&M;=hxoe7x|)sp7VEWQ%9ZYo=G80R2h4Gs-QCURE8RKf$5*+RH6lNdiux)JQ;nQL znNzNI*VYe2yk-7$KRIxx1u4$Lw?`L=uUg4*7pS00Jrnh;-k)RUM6p+sx*gInC#Jog=U%3z4;7)A(5Vqd7x zCkqkZV_s>-HSWwtkdhcRM-;`O%z=p4AAOBG)Zfx^5HN&u?&Kg zB7)ONT$rEA2ll_(oo;UUzI#R^N|E8Q0Aogk6C`|Q>+SBoGyO$JEm^ei1S*$N7Qmw= z+>bfKq)}vUxW!G(UH|UxJxGW^fGBi|7Bo8UaQ(lz&sjWg{8-E+bT7Tm9hrhO3Bd_T z;A_$}3eDZuxnD%5UWa}tQ0)j&O@e?AaKkZ#*vT0PDmK@n&kmAh1mmwj03ENl3}Vr*}&z? zh(ZwksSpDUQGzKcZEpXeJH!0L58TyDcoc(8A^IYT$MHn3?<{xJ<((Iwkf4JSXo|j3 zpk!JKYwcbN6Ntd5%U+Tcx=B4-bn=o!CU!69k6;1}K_bc$RD>+QF}AvLth0!9UiL)0V*Z_;u{m_HKX0D8-JRL;makgA4r&YZ z0@YKB<`;VQKK7dnVO__*t91FQV8!xJCt$b4c%qJZ9BV0%@05XUP2)Fi7Cye>9r<}pQd@52#pNPsLRcU; z>g1?gXr(AB#8T9v$T1YLeq7c$qSAc9i6;hhx??Tk}j$7PI z8>kp!mJ5Sw(09xVNb7LVZ1}#9DPWYcB&zQ$@lEqq_w4C3uqF)yYl!F~7^;QVh-hLS zdcrxxJbSCFQ2`(xp)gh)e1knR&7ZpIAl{0$xDc^Krb`HN^4AX=IKlkSPu+F%&{V+0 zZ0czlMIKz#Bo^n=YY;_Tf1CS*B`HjJB6y6zg9xH~mVdMZvZ$s)0n82mG zc}%UjLNf$T;k;ZIOE z@d%PS_LFEFSs~A3O68yK_`>px4^mQlC z9CN>Wasw%n3YCbEiZPl*)Ld|%dlEjVP%$D}id-O$aR%n82izg^xBJ{ZreJtWQA|N2 zNep66%+?3o;YJuSl%&yp29f}V$$apB_moByCyX$OTvd6gBw>y_WdRT1Jt2fCKA7@H zaW|-s@WV&#l)<^-BPx6AfCjoJa5xd-ScKImew)Td_XzXQBkuGDB~Wqd8^p#q^3AJt^kHdKtJ8y+}rroVRe*=OMkE4hrs80C_%3=)1n@Vzz#@0b$C_{vJ6 zYALiA!gyu`AhSgu7BEu^Az5hgoje8Jiou*xYoOsb%#@9Yyfdm$P|;C}Ju<38FHUl* zB-~--!Lo%YeDE+DPZdZ;Yd%g<7tzx9WSgoz8pso3B-asMhM@+u1T(TQd6ru5FCq_N zeyDS@L}mul$d52X2G^EF24CFd4o*P>K*NzmaJArLY`(wAZ8lJ@Mzn`kO_BsKmD+6I zgIh&{{{=rkc_zlYp|8i+Lz1TYoFg1}RU=2M&8ISphzN=fQP62>-SB*!ZR z_F=0$_~a^yz_T2$fFojf6gECpL}YkdNrZ1{V&6~E8qhTAU8#%UwL)=v)jeyBY+3g$ zpeW+}3JfN5;Anws)OAt$7dj4AV6}Ja2s|ZC6FaVf?ge@?MS@j7eo?0RPzuG7_X+rV zgzQXs#IQ%)`Rjl9h&yi=*faQ6O%upJLSL_pO#o<$${l)guyr^~j&c4hF{>RAqNU-k zLV>u^4_2MGZ1tyXFTrExo4Q1tyG;Jq^aR5}Kv!)0tF*0XmJ&M8`Rba?1K0a>4cWwcPNUYz@yfiN!yd$H6%O5JuKS$3z&!f28?L|b8TZQm2EM75 zFwW>;h17ZvbJGC>hv7>)%sy~G;sFvXFV*I=&$=Hv1f>j=h0z>Al*UleFWzITyBf}f z`G_>(#BBY^thvvb(+VUD1p+kCgc?pb>a!<4kjr3#A%_HS#wXh-N+C#2kn^X0EK!?5 zwLmpXBUkat90LYp@oBs#F*8A1M8^bqe~2j&)E79g$e=7}p^t!ahn+sa*Aj4;e&OqC zNhnXIiUdRr#dqH;*YQ6@(1^fy{nd^E9j(KA>^D8LJ~rV(>Ni-{D05hYt4RUeg6CNan5|#^Q_BWd+p16nQ76DZ7ObTGq+=6 z^BwyikjQ&x(4WoHAD_}SUDK{tlQG78S6=f$dRMzcqMr*lr1RS!9sO+9r>C~J<>l+r zi`)0J`D@eLTuymSx_gKHn;2=Qd{cUu`?>I=^wbWYG)ac#52lBAd@}mEaDF;t|0B{z zH6Ne2J6+X$NMc@kd-J0bbJKZy4N1&NPuc6J#O(B9ey&LG+^c8ehIGfQp8Qx2^rZTqPf0JR z|9Mz?UH#8P)4S_`K0e(&`{2ajbSeK^n4Zo59=*Ie`-mXXWckj0TO|^|r89C?CcaLu z${C&5lFr$0bYfF_3jg~-dM*F^Zn|UZ(TR1-r?oz?QTmu3holGOb_!}nq|0)LHYpE} z`i<$Ox$QbcKVRP}Ghx!1iHuf_O-5x{R$h_bn%l0)aLG0I+}Y*Qt~)O>rl8ec#EZ)Pf^15=w`(4}*`D_S+rrKuV+o0~8?HCzanr8jhG(`#C*=7;S2 z|3oiom6_X8%G1=U3~Ll#ygcWCmBD_;F*fO{ajVP>8!9hKZ|!=1qBuRQ+cB9%7wvpt z)%9)O& z3<`UsOM0CXn0M3Fy}AW8jni9uofj15R?a;jkxWnN-6<$PAw8hSH9<|w^r{{w2Zi^h zvwDu|RG2ZVS0ZOz`ICFeM6!qMylEWmxS5wO?|FFZ^0|$=4l-XaT=Gk+%t5Boga_la z^!lDp1m%CEr{{MI%zTu62tr{05T3w&X0cdR6 zJe(jl_}S(82Vd7Xs5vLStRLeYygcXd`&$Jy^Omm|dUzrze>uJ5gx-N!lJ0oo%R%|m z%Qv4Wr8Ac2ob*H@Fh$F2P9C0--c`~&D1RZHHMCO_FQdIs_dgI96 zEz6fQ>bk~^Yu&F&qpmk4(ql%p56t7~{88jRnl2kPDV;N-M^LjcT{z;%pgf(PIf9z= z(~Cw-P51e`X?p!Ad#V@CN$(ytG&-dVZ%h}Do|N7_;y8PVXQqov`rDtUrz=WI(__|W zq&JOjzx>~$pJ`F~@!N?O>2>Gs+q&?IR*lz~R@Y~+v{*mkG!|y3cb?lOojSM8zUERU zpS9{j<%#sVoyqj737uNjOdZ!av+>H2%;@!*zo)lPxG*SuAid#`{nG6wwirbPdFz%YGQu-Mq9^q%rvte$uy1lZ`LEnnKq5WL$f8laAK#R@XO_^CT8rNUU0?X zL8J528?I;{)GSNyxT0H^nh7$9bY@||u`{!hYl233*9M&HjoKV04ZJo!y>-3D^GV>CE!5K^kA)dHU)g zoiX#!z#Nb+n0Z=IbG}sWWV)y%Td^h??f2_l((7k(bWTd|n&~>fHoakB+w``px&$UW z-E_vWLCxt=JK1jZ;dF)rsA(CsbA7k;oEaScqtdHp9J0LY)&2KM-#PoxblL2_>8xo@ zm#?2aX0LSFybg)&>HK+}_8mN{O(R*evo_iP|8my!c`K*SOO)K7*jf4Rp+VndRa^CkaZ-6F~V%9b$O_}^uft6vE^cj-I0 zi)k7bG7Sl1s=6eRYzZ?E?>x5hpI3sn&(3_`m>Sn)5SS?+8q>CU(p0gIf*@f|_$caP z%-)fI#BKLan%S9=Z~ZuGdxOnCe3LP|BX;SgjHjWUcW zV~{!Fkb;#rz8c)oICVV3nc6LBxF(0)Ux!N%Oq#VpYW<}4WskYv4qcI(OB+UYL zNru~k;ccb^d&Pu2YcIu zJvfEA8-@)W{gp8bRs0&9Lx=ye@fv(S9mtcCbQpYX%q6&mbcrJE3{3-4;GPp`!# zD^Gqu=#h~!|KrGwW)E$03b!qFODkcT@8ZG3RpOb^aHYi*S~WKaS;M?ffe)!^3Qxlf}%PkTi=Ur_5ps7Lzc*Cj5f8;icAR z(&^Mw;&c2yT&ny9E|?f!&YZmy;Vpct-GgJX+|D;yPs4IcFR%?fi{D+KzVLN$O7LxVW%F&p zS&6|bCvOXm2~t&may7q|rDJc$9XRF2-^5bQh>pz%td!DglV*yI2V6<=h$rnxF2LJn z$NmV*LykLkO`0W4K6c0Ya9kAEPnicP$cPI}a~8)`)xc4>uWH~Yc6IlNc-Nm}Ki5_y z%_KX(DXh9O6|crge2`2HOaBj?T^~;c=E!!;eSJY-W?-Yd3NK;+g?5kow@;WUC0)!u zw!s^K8+YvoPf2Zwbi zrHp%(k>|ygU5x2IFNtJJRDS$@uqIWlmp{W>lt zE(4YP``M9F8r_QJ^xvDSdKT_z{TG%_`&eglbz2bE?_x$!u!{mW!##5o<_tW53ev%a zEBpV*9oV}^+&=@Ut=pFbw@HO#yb8yv zxa1$FEcuss`Io7<VzQCaf$?iJ4v>%Xztmx6e!t=msoD)d(sB!7U4O9#g& zOa3@7e}alj{^Zyxu7tI9w|W)k#tDq8wl1wK`76Er7gb#HS1U{YmtOw1`gnN$*VcVk zUtq!k?bVwXCif)mq$EsBJmucl`-p8+W+Vs4TWwwP0G=tS@19B8sJIO1C|5ta{xmiN zRf6onAZ4j=uB#CC(%4K=amhblS@Li9^6yk}$-m1w>|ZLp;8j@VRd_{N^1t@-zg2PR z;Cp4sZ*p+M8EcN&qWzZ&Euw<3R4VlJD)d%y$v;F{@=x*dPg8NpAE_+)mxuYTe~#gm zDnTmDRF(?&;Qf%yP0Op(9~yzqhI zZz;eoL2mL7y zp*k2N4UCRE9EWv>6C_^0u_(Lp^hkR=_J$8LUtsCaofSR1@g9*hm`x>lIC-iYrwttr zwVtdRlo8*IOCCttE)wQetOqbx<;x*VD@*+qxJ=bw*@ynK)gHa*HMm+eAPr7ofRdkW z2Uw%x(!rN_j_P0=UZwmU-mLsXih?8!?j;R!jB^g*Z3UIk1`l{B-sARoN@@IV&+n^i%_Ls^86#2t3VJ0FeR1y?;5yDOF*h_=9V z$N9=V@c`xCcw+37IfR1sae?WJWk9aMBe1;1<$NTTJ#ao6%N{!yV%cNo!MG61V}i`^ zh1OA=*EknbAXDlpOv5sz&R1Z0?cjWswRQLB@gj^vSQJF7K9^N5YamII zJklTBomYVjI2=%lReuQuGG*a0#Lr=w5$D}l78Oe+Y@qOR-AyG?i>XP+Kl+5W~Ek0*)B#vP>}Z^$Y)!rhe{;|0pi@G|8rJok)L+`$nP z>{1Cw;*L)w!|tTRqj8aPA)cZ<7%x;l9#@^w#k35E%XJ1nh4-~yh-*?5bg~6+Qm_S| zW&I1DyCjKZOPF8r4&~i=08`pCjPl9g;k#f839K+dI4w>^USPq%mi*l*ufks{K`Q*CEEPH&(QrVWaJ<#lFH>_aZRdLDR zpe*@6dHFk4T=M^?9KQa~E@(KVt#G{6*0ola4i5A34_9&Npue)@kMi*CU*4t|4^?&zc_(+QlElnRF=6kka2fxB#cZhfE57 zqhJ{gBy9u32Sj!ajKCX+=h*l%{3Z#SI@HX;Y{13cSc@M67M&1AGDA-B^ zS+;>5M^gbewH}FwmBk&T@NVLPjX#02&WiIt#5tG=4F_Zf@>oxOIsIjTJ@EK4b^kA+ zU?&M~My|oqVYCJ2+OR_G3M>t}_>Fi8E}}p>c*ferS72%1c_lU}_P`aqNP!$9=haw_ zk#h}}DRzDhk5PUDPgi~mZ%|$@_4z2k)&CDp$&|Z-_bJ$c-IV=p?c(N`=#V%!!g2_l z8{?+xcHIpBNqip?WJda0yZj@L;rb`X%oQ9-f*dpFqp`mI7UFp0jl@F|;S7X}j#oBI zuCk`CL~9pga+eKRaH8 zcj9v59i>6`@eAvyfrR-AFC^|x>thQeyZCV_3NotW^ZH?Hm+&ZFNZk2xobzJrrFgya z(|A8MgU{kJ<>&Ae{xKw!plJOO)TnGGi|OE>?#$ zWj0U{Z@k6Qi;oDIGC78FjGo7G2*L{w{!YvQ!s`Ub^q}6nT4o0L=rYW&z%pagtzW^i zgYvyhh@sE?SS^{!=p2MEIqL zGw8e-%M7_UwK}s%>vu549(_F1 z-HC^?>S?dc&WITlN5j|uohT?%4d&u0FDGplpK0Tb?18(spNz{@{8U^x#?A=m!3?}@ zOAi3VIu`IDRA$E)```k36AAkP0E>A1{7_9X^MB?Qz?)O&7syV z-Ve(FoeOYBK85A_Cq;azkAmSO1V|c~U@cLJPsTFhXyc20SoX;IA}l-LdJhC5OE5XOn zi>&hLszX^*_hLPu`)xeje|cnj(5vtop0+k=k~An+w!H>NhHQKyg69!;&jZI;yZEtq zJu~8t`4qejHxFwErV=k+o3#DY;5`&ns3}||4bXvW@NvAGc(}(5X(R6QdK~`*KRq^n zxt+oJSEAz0aGLnuG#K8D@buSHaRdD+s34({O&E_Cz8=RX<3i$Y0Q0bUBaYvV^OWz$ zmy_>a|G$NcRs7$0OiC4eK*2*)XkiEN53W%0MjYHcHGtlDt%@Ip#}Ic@d=}oW;^T0R zs(%|!mAo16L7IYT$_sEQ72G4(Yk0GYufsPI4==?gF#p45UEJPooTvOZE>;eX=lnZQ zHPGw$hHIb?o}wxoCUND%@m%Hpcs1<>b_U1eWpBj;nuyEZj(y(otiN(qZ~+Ogs0J2b zS;f&7n0v9TV(0tu&$t-{vZ&s&cJcN2cjBDYVf=S%7ymOwfvjp*@HcMC09=FJheUSq zo>-2db8jqb!ub%~7w<)Z45-Z7#m~mFh@DgCP%xZ=Cbq(@)-GW#mNnp<#;DfZ7;{d%%KyO&)tYEj+|Z5jS~_%Bwm!J~JN5yDNx#K9>Xh#pc~0YE^21H; ze+wu`uD1pFK3u5$ko8h($fbC|(1!6ro{Mmqsy`G@Q$885ux9-y%m@m0sDx6S@o~II z3%vM!o~v-jcjFy+1ea}bt3K0whbJ+^?w!wlPcY^x%#|^^{~t}k+W*829E(df#2(^# znCDaQT$Nvf?^7M7@NB#vGbm@p6L@WyAKrfw=4lEt-ite2forHBcQ>i<1)jGtj&H-u zh`W2i-Y0Szt9Xv}FzU-8o9o5za*pnQtN{v&K8!oK&vO+nQSnD`wek~qo$}LogYpX8 z=cBm&7p$ZH8R5%b!WvwpD!hR!l;6P%lsDiizM>#URrn5< zDeu5jlxy)c<=?PTha}0|cia>YpetT8)-6iD_8U4CUpP*qK+fxE3(QEo8Rt?UYanIq z;@4s6(D{0tjXP2x`A=KB__H{lcy}BBT%1x3Y^9(CXW4|kPKxXrXo<(D{C%*TRxX}{ z<+O5cgXJ`gwoKC=%UR&!`{R_HCaxe!fvjrh18|LUH@s2#AiP^SA2%Hr*FPAyRX!9K zDfc^x^M9BsC?KIi`6xWa4oBX29EjtMZ^_{G^IeCH%;3Si_Io>N=8z<>9oHYv7iu{R zc35W(;iVYuho@~2n3IR_ePrpdDGBn}JeLF+q4WD#PMeLkfqjd4t;im`21>BZ$N{$g zd@Ot1!+H~z9W1aeQad1zf0z-tP1Y14MYiUc>b260pPtSFpgOhoNRQXMC@#k^AAU&I|8?YR*5QSswE z7vo_nei9z9d>SrS9*tK;rhf)dM!{y4FxK+~&y(?Pm46{F*&6S_rFf_EbkA4UTl!}J zh}o}_#;&iE>h-|l&y=SrMZ`3vz(`vW{4wshEgsNjyjl56Jp7wD{w=On z*O~9}hH+hN|J*KjP_SJk{1+R}Q+GRUcS>abmn|?IaYy1=NN%^sTZdsh6w7(;JPh|y zJ_QdQukZg9RH=lKc(HOR)>pzaalG-N6V_M4KaOBwbK%JeqATC=1^n^`*NN>^lABW+ zm!>$+xkrQrTPcw9S}vWE(6c}9R5Bys3ymN!7hpM$UA$VX;(uZ}ja~e>Bl%S!6~7V7 zX}r|7KY(9lP01d+yIqO`*<*WcHm_niE%^nTa6r4ToL0`=2Jq`CtZL^{EUS8v?ch5s zi?XlvX6C3 zMhH{*rMx8oJc^E}_}c_Ch}@*hl5(DvIT`zssQ0o+GeFy83a1ilcLsQBGjcW}Sw z2k{~`fJgEA?~>u}vcoB}gn}vC>kG^>&(C?T#`9GEYR@&e+N~)D{G)Z$V_<&9vP03v z{lAuiZ4?|xiCjoJ@-DJC+5*!V%M3Yp!7@Y6U2z`nO@Y)OZtdbDu*{hAC_EmA7q%1? zuC)a&p#qna;I3>>Tf6wPSdO9db68)Ps&TyW`vh2DnA#8JyC(l^_k& z;RR|B`Nd|lSveEyJ#LEQjo*5~dXM|?IzZ}YlO)%f;3Qsg)L}e8}DI+?oFnf@f0c)5tlaIdUWR4<*%IbwTj2aZ&%favZVDMf?g&f+)8txC{cEjV{Tn>r zgtLE0Mq%=A!vlUy+Wsj>Q!wVoIAMYHBC1FSzj^V$JpY5sRsBXKTnCh!;*1?}`z=DJ z;(~p>g#B=ys?Z)U{3*`wjJGT2c|OQ0^YSsyOF3=0B8L~EpRk-JeXP$tne&!CjvB}` z+p+9%OWR=2Q+Q%xipy<&(Quxq)USo!h-C-!ZT{QCdHt^|v^ce)&sKXV=k*M%4^g@2 zS-3(S!r3_Eze&22jbB*6`O0^uyn;&4_uwK`;Q^erGZ{7~4KBjNl^^%~l;>ygc$J@e zo`Pys@DiTH6h&KLUdAhw*Wk6vYw>pFH?dwLZ{v8Yt$P=%HIg!OHia*c2BNkES#*hvCI4UVwMA$lQz7bF68OEimWe9O_3~U?$;w zadiI+%=r{#gx^SrDqM(Vgs#HHSO(xc4VU6(6v%)duy*l>@L1w4ZTwwp7vF#{BF^(~ z)WBc1z$N^HFD4z^f4{-d^X;wj`?^zj}9A2hs@CJc+77}BpYv9;n!=|?f5P#E;Bq3>j4ceW&P`d<4G8>J89cYm=ispjK{0^2+yPN z3XXAGTHrghW+JX4pZ{a`66UniBS#%1%;?iO{*vGd&LCl#^4Yjrc|2aHJQ;6Oz7X$L zzSO#i4rBl|Ui|fxSFjE@{UaXGyST0L`*?uz$JX;~2PdAdXDVKLtx&0Un5VDG#m$Jx|1?G_b=8|}Xw z^K}$dsf2euzwh}&yg}uE>iKiLO~t>$73@%3BfSNt#aLd>PvZT5_e@tn!RCy350Azs zGxo8bhj=~#XRG{E@H*uZ&!>x1Dxr*mP0C|&Y2#c*AsdhBp3nDuA)c!8FU3pQW4D9% z<3%d|Fix#k1&b-re$w+YY?|bT!;t|!=eZiURq@q$6$8i$htC5C&S;ujU;n4EtiO(` z;1?3KfA{<+9xypRhF#C0!}H=rIvj6P$9M*=Am1(GNAdLL@c@>b!}`+&%e;i;cs&ic zDcpj0(}0|&a@`m>E^@R>{6c}}wNuEz^`^S=BB+3olf@0m~Y2@td$566e$$3f583juIKbN^6(!BL0$iVB_CdyZCne zHSvUvw;CVW#am-JB+l*d9&Fb{$`siGmoNl3Wy%kuKn8S)wToYdWeqq_$0fLz&41Y1 z#UI782Am(qb8x>fKgAb`ZGlVp7_T8=uP}i(i_eYh;+a_1gmY888TYsOhgrM$;aC=_ zbAK!kso|F5QagZxY6_xNnrRkc{h0k2jyL{764sB|>-g4-JQWWhNnRQ4;axC!iVhbk zF5#7wJiZE1aDG;t{}~>myw&qJ zvE};D`!^JWQ{D?Ow|BUsF)Z%!nt=lE_)eDb+HyULJ3R#shBc0CVODPP<&A{*V z_32;sxYY!{BtpV4T9xy9mUYxg!p!!33tpi1a4ue^d>7uRe2;aWZU222kM4iGpYIC7 z9{IW)-mMz=!t+YP|4*i1m1^KZ&zE|>9GiV|qYsnqgnN)_j7vm!~M$r4p9oA{F0)rzkg@%(Xo`9$-uB?hH^C@$FuGp65!OnyDImm4b~l zm~R_6{=CSLjhEw|PsVZxqK)qndme@7(0<3THXn52#mY<1WBn~s4Ln1F_Vb=!z?)V6 z%ednd`_~rP=kIX_cF%Y@=W}yYJ9rGH4??3ZgYf@sPIbCnXi87cOBlIP*__ZLf5g^{?B4x8Ez%W+nlxWVgjU*(%U-|qQN zJY3~h;wj3hg%l*!-RS{*wDLoEn(`xfrt)IEQC+H+VEs#`Phq(ZL>s>qi{(0CoiZyZ zkkig3ti*DfMO&tM5&uIxd|!`4@Qt<0-;P^x2;DoKtuBb{;;nHWap!ipFK$5r-+u{A zku7iuL$I87&L`j!>=w;s)-FCB%W3I61ItNHtfe5JL>Af8 z)~>>{SXQy~b68ffb2Z+H8&M$jzqWSqZ?P z%UR(3E1q;>?A`ci;_fUt;KIl*zZ;fC?R*g48XaP}|74nc3OI~*Yith2@m5=RDAxD) zSH6zUf&!A{{(dV@KyvM$WBptarh{-me24TBKL3~N${eOh@_*zT5Hf(Kvj6fe)sOfP zN^ZBswt)eod7FjXqYO$aOy>bY&Vul?jHdL8E;netJN;P3d>owKlSC! z>A$g@RYzF&b2}*eFApH4G6S5KeHpS`yYI0k%$6_@czy_1sPp(SJhN?lomh&il%MhZ zytVWncJKlP`Vg$b@x~vG!1@rps^YQ(+i{KR@F&kZ@g5cbHL~rWJ={$}R=ao){>FLA z!A0DTm793Z^1L@LyfFS1jtRI#`4wEvhamynHTtN4DnxI^4wdt9pA*>j%f1MzMK=q_ZZ;nZx^z-S7z z&%jkGezr8AJRWCvj0ZH?IxmP8@nc?mspqGsa{d*o23C-;Z2!2y7jTW5(yt}1+~Q&e zsC)$O+bOO;!1Ex_MHjRFYC6XihLWH?4DV6#Q$3g9f@EC(bew%byap=p)C1!9O}J@Z z?AuaaLE7_tT&ODCi<5NFn6)R@`Zw@w)nP53dtltbZ+L-<=U&1gRPj_dub`*r-Z-m! z+~8rjNVx!)Dj)6nSkK4dDRF+voIpW!TwqS|T;h2&UZ?WQ@DAm%IOm{vz!N;5-@v^8 ze<20=s=}psF;nJFllyTE&aqSe7B1=$ckpk#jd*x%=aBq?H>xSmyOg^t7oKce{}f!| z>dX88CAJ{Eo8cF90)E-^8k|pq``QL~V7c%_8@F#z{8p zQXr>Qv<0RMmebC;E7pIxv^(BFJd*_J;52KOKN5dPJj=#Y)-HY>{*w4!(!VsY)E2me zr}2&`A&h@&?c$%~O+(@VZpCtCbMddSoQBTdVmWJ^zsKG1IpO`E0pwg36}W^pSWYYF z_E=6M=l!vM%1vTfGcJArmNnzt4a=HvJ_yU2k^b2NlTU#xl4uLe!B~#5^PyPoX3qVv z+|8T|u)cjCh2xEnUa`J?zcQBhiMX((vUoWwPdHbd!p7&RQyX^(_7vDzYPoG3O{=O8Sm*G$Nz_?(qLfs zu+tS>DW}Fy!9($n#1l3?4gaA00RBFu3f`t*yYjF2JLTkbW4={B5r3n6Io_uHAg<~k z5BO2shqyZg@8MJ*M%>ema1RAZ>=F*Vl25&qPs4?(fvfRw<;8f6@&~v=`5&BAKIkge z|2$Ptauw&jatbd}egaQZ{t#!Y0h$>cA{Fn6S16CdYn88^!TGmQ6)YuT>QV8OJ%eS{ zMjQWP9+p+@yb|wH7or!jEK(O=jb~$dzfsPD@2p+?hZF^}ie14^SXQa?PAse1`F~iZ z(D^qk$JF@`T&TPU%OP^{Iy^=>70irQu}jFrGR4kKu^dC^z3@EcmRJsvi|>PF%AIqt zOu2I#EHiGMGVLkY78jWPv8-xWA&F(xJ0F1MtZ?pz<*ac&2!F4fkL9#;@q@9PmeI!R z|3fK|MduRwVOd1Z1z65&=cBMJI_H5{&Kl=ISk5ZvA}nW-^AKErsZN>3<^&4jjqmSa zeXTy|EWX*qm2jzj^*UVT%cc2pEQ_{C;w-a&tfMyh$KkGSxTqWBa=XY`|NLzi3U(eH zulj7f>eBc+a1^e<-Dy!)@dUh7#qYrD3K;-#89;CiPsP)^n550`g-fx!u9V^x1H=C0 z{+BTSvIPaUfyHq`7=P09GCbzu_|p3+-a&(l643zmr&)2d@!c`cU2*qgBrg3k0Qq-7 z^4WuE<8L(MqD$ft%lCxls`y#fZotoY@#j6ifRCX)_r&xymKn46e?9?m1>p#IhXQX> z9qz>2lz+upgW>`I>AB8xP|hB!{3f`B0j1pS^biU<9ve4!I4)Mlcr4ycg`-Wh2Ik=H zYKB(g0+s(2UZ>(Mu4RXm3vl%%92mDK#!;|wa6EuXo-gn`6=xU4`Iq5I44|1EU=_X? zC#>JWi-zPP+4w{ZUvep*|GR|0C@58X(Cs=_eQ{i&r!{Zogsc1#FMfsRtMCF$G{sDN(WnIE=TFYrX8K*X? zf@dknKOr8_N<2V$mGwG1fWN%Bsc4wr2oF>Bo8krPI&fG8>wlL@C?Fx@#CQNlTe~Tr z;l;~6&%$k0{n3QiL#sJ45w(M$Nm^JY9vHSi_gp!_Xvds5utkJfI+ zx?bNf-XrA|^um2r1Bc?Z%17X>$^)#6gJ?}m^Ws-}o{4v=`l)Lv*m!b0;v4Wfb&Q_D ziU><0-m@;W*MXKd zH;lLP+!|L?KkA<*J5Z2wM%-W$7b$nenGBHj!vPG(=FB*MB%Xe0uG!isnt^9=9~EDT z$0)DDbIw$+|JP8^NOiCSuTvFj@p|RotlgW|BB;x;+@Ks);pLOxjldC#lP_U70yYW6*u@D1y#yB@Mh&&>y5U9 zzH=JJ`+FXM_o(`V@Z7WG{*K3~Wvbvr3dCD&2e(;6Hhx9Z^L)Hf)xQ^)jEOs_!gG}$ zv0j{rW@!5y)}K!J$*ZsvSE~ko#pay2gFkVBa-DU)J!Hq;+Au!E^9i@I{->x0P9b5m zT7)xjAJ#y$@pnS7tO@7qJ>Ts4R$Qg>@5F7@X}&r|!B7e~Yr@lNJ8q*ATHR*Mfhs-_ zmtK);HrOe=1FxD84`@DaIx+UWo~t~k9;P5)RalIh(V;ufKfq1Yfc}vNln=U{SGQB* z4twJY<-_n^Y6s53Eiv~d+2NGAiGtRu!4-Hv2dufSRT>p@BhnOLD&Odt@d1vi=~2%ug1e?#(ovAQj2gs z-lp>3!+BT5`5)o@a_;|Y6VbJ}Lz-2u5|VhQa#x%&BW|Dv?yG#Tc4tKG&A_KJ zgEY^7fq4|KRryQs^qK1Zzl?&mSH~SZhc_v|i1V(Aq& zdNLw8hWp&blwmjEqwrGYbMf{Y;`--dd7CcU_yb1x96Z#vS9urfUkY5pJ+?vT`>=HA zT!m#o&JW|?aWMrlz;~@(d;^xZ-JCzb^0uDyM|W}l%iCbC;1d!?D={yvyaBjpbc3=T>;Pa_bZY^0t{vXoux(H|LI6-js6gjOAS}=Pp>@ z<#O(dFH!D}AyZSzxRJ_QGou#ZhxW9=GTiwlT5zllqg-^P=$yVn0|?ecfy^N9x( z$N&zgj2y*z|Gygr7pMkKwRR1Z;HfH}vUc(7@TDsLq_vAL! z|605FFZebU-~aB&E}q195KmAbhu}nODED9f4krcj>NeW=m&$NjH8|7S#Z!2J%D)cF zn^Z1-J+4-sjn^sPf;WW@@Be|hje=tJjmA5$yl3MYoQLH-A?HdgFV~&#!SdqO`93VK zmYu7xJViS{jO8iX-v7BhQXr4rF5z)3kIl|Yu{<_AKaJ%n+4)&4PtnfLVR;?lT#e<0 zhx1EVo;kz)mqYL}1@cVi64qdO=yYC-<)PF0O)O8f&TnIRsC0f8%QL0(1}x8%&L3c2 z*x3FVz(*9wGoDNM1j{p?^JZK)GWHi(9?@Li+*T z1@gq=5^AwLP&n_x@<8GIJC@gq&VORL-#h<}%aqMMJOwK^!W-rO?Z$4*Giy zjPe>dUB#t-nOFa86_)|b#QOQ*+I#3<7gUfi;PUvZS5M)#H^v_<{$(A_3YU|6qquV; z+?{;qrno@41uj$G_g?m23KmgA-m{tNC0yotI-aQ-xEilez7Ct&@c?eLp2k?E{qMZ^ zj+9sMU!12J*oBAR6gT(>o~HZ{mKlpSx>(q74Q1eX zhj=b_52bZ@XWW6wxWA#B;Ov{-jPm+7i-Iz>=nls_>Jt*?D7=jLCmXs)Si3dW`2iJ|*Z+CC03V2_ss{4$V&y~dF6G0m-6EUs#qafeKW;lG z8emHH>0t_rZjDF07*A4u63diFTVR%9nK9?(cpC0Nfy~h7)-Jvk%OP_98p{l_rT8x} z-%=n`9Bup_4{pqqwxvKC%&Cg(;%%@@xpRB0ublhic&n{TV!i4Qz|ltkvdRl7(0hEG z=VDw$hfPg1piA&lHA7c;z6!5X@f6O#EuP^DJVi|ZYzcFdE3m%J^BuTCH839!yFG63 zUOZR1%JUT|Td6nl^@JyAz7WZMs+++RE)+XHetDBe^ zwf%F9cTrF{G(M)k<6-I;|B3Z6{u{?zZJl|r;W0jl3!6-FULv}%RbZK+wN#P|U2rac zC+yagy|Pg-k^<>4ypZq>$Vw~&N>V|7hocc4xJ}kf66-zg>bX1C1MaEn%iXd!UZ0xp z_PCKbL?uWEC*vwLr6W9#!pl_rOx*pBTsua7;}sVupX>QNoYDywP*AKYT!L$qufQ9W zXL`QYa|Pb2@^8YWcjnd)@U{n8f0I-}ngs0yp6|ueRelxTsr(2w>D>Abp78v%=Vu>e z{bj2PD@mB6yb3Q=UW3cjqFjs5QhpQbWBxXdH~#t^))%5rQY#Yq$gY~eAC1O= z^#;{|tcjnn9?&nIf5p{mz<=WI)8nsh^?!)7Y+kM%Q^KSMQc$J}2IJvWa96tPaVgG{ z0WqvM@pznL-RxlwiRxe&uEN7?{C2#jGVX959%UaR~H?mHu%;vaCH@_vtT2vmL{&QbC6 z@wO-)egA(x1sN(~4c@34*dg&1@gCHA{>}3rxTDJd$8%yaI}pah`%l6&t}oyiFeAunD&86wu>({M&yqoS@D6-11#%rpJ{~&Se|ZKxfC4#BU4?E~&Qs@uu$-pO`B+X<=Yz4Frp||AIZd7W zVL8j33-HD()$9MGD3H_4B@D!JA#omr0JWqKzUX)S= zBPdv*JPONc=NdR2%UR)EhUGMJJ{#{+J_pNL<>KdJISrjB;gp=WuHbwM`VP!_IJ+kHMYwp4bBf>Vwhg#rbfxEOJYS2Gbm;PL zz>}13!Aq6rdcI3r?tcp?*rqDnhbOI#J9r3JDL;nSDKEtXUXSyi@%+5!7w~kO&-&*V z3@O;C8h8!oyb(9J4zGPP_Pcn%y4de~{@C-Uc)H5}0#CWRiz$@XzjB^8?tn{Fe$w*+c!i30uXlL=;h$QeV3SJdgJ-`J51=1js(hs9V>};=x2pUh zc-8v2y#~z2LDNpizf#<1s5&2R79E8g# z*r*z~3g>NzJ4ku1@O&elt@7u1z8$Yn@p+ML{|um#g0(7PA>OR~AkKa-9?+wnmw0{( z4^#Qe@zRZP{c61VYVQB;jl-`fSkJ0-&U%t}Fg}bc?Blt$=XQ9!%J1Yk7gwlwH=LdN zDDI#q1$~tJc<$%902izLqj8Dyv3REP5ZwLaxW8dIRiFw^r9gX>=hJbC%0CO|Y>FEk zhx;f`@_d2ksZX;03RQ*6NSLC06)sm!;o?u?4l8h}@=cy^^Lz)cQ2FzpWc}%ayGf8M zQ?&7fgO_6W&gL7|F8&sNQ{}J6rZ}$uA1rIi<-db!*_n9=H z-XrQTk-zOGmuh(c;Z3Vscwmto=t~`O+w+NYsojx?y!VCtz<@G{%liw%u?#rVI&}vH za?HBh3U^<`ze+`e`L@9=YC!S?^p`i_e^gxF)k-|oaKIVZZBjoMSJQr(v@ieu&qP}g zCGnn}=ZkR8r}Y&~wYAG%?YRa|CEvwg_q+}_y~e%4!R!D3QLsW)*zNf*yjI1{(_Fii zGjZN$afi+E4yL#rBaoY0KkH~ffhoW;fN+!7|3^`v*T6s=Z~QBlSg(O16_+U;i}e5| zc%F>2>98k_%7D^%m>n?dp9c_CAiftbReMzB`C+_W#TVngTjCjb5>Hir*7M5Pa{W)3 z7b%#lD!hU>D6hqNU&I}}<@w*9-@_#;|06t2`7=D=OKC5>|M16v>I-Dz6XqMw+wqvN zLKOcAPgVW}*C_vvH!JV)oLFY#VgH6-K%gMwt9TEa;bC9LZi%NUxANT9a|b+IEjf+RdF2Dm+{3zT}T?q%`5)~hWM_;4f|1YB8 zbd@j!pQ(HTK1=x|JVtpq9;-Y8k5e9n$19(XCtRam|CdoPQ6-#>Cn=wUCo7+e&r_a+ z^=W)Qj5u*Jp7c5`fISv zkZUjFf<(AOuKo}_LA7@?PH_zCE3BtL_Rv-Ml6!&dq4Nb7^T$ds_nvUTPh&Ym&b3$$ zp&P(qm+%pbs((3_Mc0S=aCm9!7q5WitoRi+o_5d<4ww! z;_b@!<9W65jHDj+3Kn}_f;XrN%doj2{y^a~$=?+>xD_u@{swm^-_1bw3SJ5A&NbUu zB!S%j&!b@5?{Nbc;iYOu?vV;O&(6r}c&m!<#Iv!qAa}P8&vAQJ@#ArU8okCs(7>Kxvn_N{l6~-Re!}5`s1mb zHqjQC0l1t+*_#5{!wJ?dJ{ikd<2(h+DtEpJ%OZEa1j{0qjrAXx%P5dl9&Le{j%AfQ z&%g!B*I-$sE`BYRMe1CEWsy4Hh-HyF-;CEqmitd&Zlyq0txK4TWz{;T@owe$Sk4+3 zzZ=VG=e!WhY3KX^mNnx15SBG&@Be{$gaTP)E@3g2MdrK&%c63A3d>pG{0x>=?z{ra zqH|t}Wzjjmh-FRK>tA42Qy`1NCDdS9RL-wqeRFvO#~XjL8S9(NdKH%|>-Si%v7fE$ z@Bg(FEK`f{H#~k%yeR*|)0EB1hR*cd6faWwEj(xAO?z@}|E%l%C>Z}w++lmXK)JK$ zJkJN>O)5X%^TBw#iuc7Cb*Z?+{uC6|#UAK+u;=4(xynBg=O^4D<0Bnhp*#}nLs*K{ z{jav}ObYZd{DhZgGN8gBx?L79K?IH5|=8k!V8qw;3X_tnM1iy{fO6NckSP=nhO!`Y~#mNv;TWk!ekQq zFaTE}jdL2s16bhsKF?LSNaa6*cV@=*pTMP!V?SNZ`qKp~yo8l_j;gQJDik&j= zP*4&Vn1AC6<@fMB<&F3*<&W`v^Yj1;^m(5*mA7CTcQHHddpu*YoCV?E z_u;X58RxxBX+SITy5WCV4vBOr?sr)toFOg~p{HY+A@`X65|$a2cuFe#LxD`0OBi%{ zBAhbUKn0d#7M_;mzlr6Lg%7E?`4zkgrQ%OuS#$^30d!M)EElH1cvG~9<@(Q`&W#H~ zpNO}sRX!ZA+RIHTU)92Ul+W;dw&!zjc2-<}A}$Uc-hX)0iGnhfa52tr8CSR*7b?&2 zT<&=mE>`)oaf$M+c)B?3pBcE5g1IW8((^*k58%Zrf05_M@YyWF@O?g3%KLa4PKNW# zA0)eZVpiFi6Bc7%z?DYJr=iRtM<^PT6DhI1L@0FY2rLF2;|8ojauu3KDgLf*o#u+*B z9(2G3%1QBlalEVN9-e#Q?3B7t^r4`y@?p3Lcd&=#ENjRXn6X%nakK?yJRXnTz2bIj z7rztl84~B;g;U+tZ@ny_;1U`L&wDy}&Du5a29`zS{1%>v_o6_qguAR={CE5S@oqNW zWp!j1@4A}xKU}?u)SZOasnFO~7-8)yjKZ==olnQRaBG`iVeR5KVp-+RH)C1U&bO}S z{Oe1ByI)t6Aa)5aVOf;UFJo41z1QHG%4_jPrHOD2xl8qp)45c08YVfW@|MeoSOzehM�YI7xjse*zo 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 delta 76817 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 Result, Error> { + self.http_client.get_lib_stream(self.node_url.clone()).await + } + + pub async fn get_block_by_id( + &self, + header_id: HeaderId, + backoff: &BackoffConfig, + ) -> Result>, Error> { + let strategy = + tokio_retry::strategy::FibonacciBackoff::from_millis(backoff.start_delay_millis) + .take(backoff.max_retries); + + Retry::spawn(strategy, || { + self.http_client + .get_block_by_id(self.node_url.clone(), header_id) + .inspect_err(|err| warn!("Block fetching failed with err: {err:#?}")) + }) + .await + } } diff --git a/common/Cargo.toml b/common/Cargo.toml index a6e26fad..09cb10fa 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -2,6 +2,7 @@ name = "common" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa.workspace = true @@ -17,3 +18,5 @@ log.workspace = true hex.workspace = true borsh.workspace = true base64.workspace = true +url.workspace = true +logos-blockchain-common-http-client.workspace = true diff --git a/common/src/block.rs b/common/src/block.rs index 84b7a419..391bc57d 100644 --- a/common/src/block.rs +++ b/common/src/block.rs @@ -4,6 +4,7 @@ use sha2::{Digest, Sha256, digest::FixedOutput}; use crate::transaction::EncodedTransaction; pub type HashType = [u8; 32]; +pub type MantleMsgId = [u8; 32]; #[derive(Debug, Clone)] /// Our own hasher. @@ -49,6 +50,7 @@ pub struct Block { pub header: BlockHeader, pub body: BlockBody, pub bedrock_status: BedrockStatus, + pub bedrock_parent_id: MantleMsgId, } #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] @@ -60,7 +62,11 @@ pub struct HashableBlockData { } impl HashableBlockData { - pub fn into_pending_block(self, signing_key: &nssa::PrivateKey) -> Block { + pub fn into_pending_block( + self, + signing_key: &nssa::PrivateKey, + bedrock_parent_id: MantleMsgId, + ) -> Block { let data_bytes = borsh::to_vec(&self).unwrap(); let signature = nssa::Signature::new(signing_key, &data_bytes); let hash = OwnHasher::hash(&data_bytes); @@ -76,8 +82,13 @@ impl HashableBlockData { transactions: self.transactions, }, bedrock_status: BedrockStatus::Pending, + bedrock_parent_id, } } + + pub fn block_hash(&self) -> BlockHash { + OwnHasher::hash(&borsh::to_vec(&self).unwrap()) + } } impl From for HashableBlockData { diff --git a/common/src/communication/indexer.rs b/common/src/communication/indexer.rs new file mode 100644 index 00000000..a0edc176 --- /dev/null +++ b/common/src/communication/indexer.rs @@ -0,0 +1,6 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum Message { + L2BlockFinalized { l2_block_height: u64 }, +} diff --git a/common/src/communication/mod.rs b/common/src/communication/mod.rs new file mode 100644 index 00000000..d99eb481 --- /dev/null +++ b/common/src/communication/mod.rs @@ -0,0 +1 @@ +pub mod indexer; diff --git a/common/src/lib.rs b/common/src/lib.rs index b64e6ef9..68902811 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -1,4 +1,5 @@ pub mod block; +pub mod communication; pub mod error; pub mod rpc_primitives; pub mod sequencer_client; diff --git a/common/src/rpc_primitives/requests.rs b/common/src/rpc_primitives/requests.rs index 71641936..6191df44 100644 --- a/common/src/rpc_primitives/requests.rs +++ b/common/src/rpc_primitives/requests.rs @@ -73,6 +73,11 @@ pub struct GetProofForCommitmentRequest { #[derive(Serialize, Deserialize, Debug)] pub struct GetProgramIdsRequest {} +#[derive(Serialize, Deserialize, Debug)] +pub struct PostIndexerMessageRequest { + pub message: crate::communication::indexer::Message, +} + parse_request!(HelloRequest); parse_request!(RegisterAccountRequest); parse_request!(SendTxRequest); @@ -87,6 +92,7 @@ parse_request!(GetAccountsNoncesRequest); parse_request!(GetProofForCommitmentRequest); parse_request!(GetAccountRequest); parse_request!(GetProgramIdsRequest); +parse_request!(PostIndexerMessageRequest); #[derive(Serialize, Deserialize, Debug)] pub struct HelloResponse { @@ -216,3 +222,8 @@ pub struct GetInitialTestnetAccountsResponse { pub account_id: String, pub balance: u64, } + +#[derive(Serialize, Deserialize, Debug)] +pub struct PostIndexerMessageResponse { + pub status: String, +} diff --git a/common/src/sequencer_client.rs b/common/src/sequencer_client.rs index 0cb03f6f..7a14d425 100644 --- a/common/src/sequencer_client.rs +++ b/common/src/sequencer_client.rs @@ -1,10 +1,12 @@ -use std::{collections::HashMap, ops::RangeInclusive}; +use std::{collections::HashMap, ops::RangeInclusive, str::FromStr}; use anyhow::Result; +use logos_blockchain_common_http_client::BasicAuthCredentials; use nssa_core::program::ProgramId; use reqwest::Client; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use serde_json::Value; +use url::Url; use super::rpc_primitives::requests::{ GetAccountBalanceRequest, GetAccountBalanceResponse, GetBlockDataRequest, GetBlockDataResponse, @@ -20,28 +22,75 @@ use crate::{ GetInitialTestnetAccountsResponse, GetLastBlockRequest, GetLastBlockResponse, GetProgramIdsRequest, GetProgramIdsResponse, GetProofForCommitmentRequest, GetProofForCommitmentResponse, GetTransactionByHashRequest, - GetTransactionByHashResponse, SendTxRequest, SendTxResponse, + GetTransactionByHashResponse, PostIndexerMessageRequest, PostIndexerMessageResponse, + SendTxRequest, SendTxResponse, }, }, transaction::{EncodedTransaction, NSSATransaction}, }; +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BasicAuth { + pub username: String, + pub password: Option, +} + +impl std::fmt::Display for BasicAuth { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.username)?; + if let Some(password) = &self.password { + write!(f, ":{password}")?; + } + + Ok(()) + } +} + +impl FromStr for BasicAuth { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result { + let parse = || { + let mut parts = s.splitn(2, ':'); + let username = parts.next()?; + let password = parts.next().filter(|p| !p.is_empty()); + if parts.next().is_some() { + return None; + } + + Some((username, password)) + }; + + let (username, password) = parse().ok_or_else(|| { + anyhow::anyhow!("Invalid auth format. Expected 'user' or 'user:password'") + })?; + + Ok(Self { + username: username.to_string(), + password: password.map(|p| p.to_string()), + }) + } +} + +impl From for BasicAuthCredentials { + fn from(value: BasicAuth) -> Self { + BasicAuthCredentials::new(value.username, value.password) + } +} + #[derive(Clone)] pub struct SequencerClient { pub client: reqwest::Client, - pub sequencer_addr: String, - pub basic_auth: Option<(String, Option)>, + pub sequencer_addr: Url, + pub basic_auth: Option, } impl SequencerClient { - pub fn new(sequencer_addr: String) -> Result { + pub fn new(sequencer_addr: Url) -> Result { Self::new_with_auth(sequencer_addr, None) } - pub fn new_with_auth( - sequencer_addr: String, - basic_auth: Option<(String, Option)>, - ) -> Result { + pub fn new_with_auth(sequencer_addr: Url, basic_auth: Option) -> Result { Ok(Self { client: Client::builder() // Add more fields if needed @@ -66,9 +115,9 @@ impl SequencerClient { "Calling method {method} with payload {request:?} to sequencer at {}", self.sequencer_addr ); - let mut call_builder = self.client.post(&self.sequencer_addr); + let mut call_builder = self.client.post(self.sequencer_addr.clone()); - if let Some((username, password)) = &self.basic_auth { + if let Some(BasicAuth { username, password }) = &self.basic_auth { call_builder = call_builder.basic_auth(username, password.as_deref()); } @@ -347,4 +396,23 @@ impl SequencerClient { Ok(resp_deser) } + + /// Post indexer into sequencer + pub async fn post_indexer_message( + &self, + message: crate::communication::indexer::Message, + ) -> Result { + let last_req = PostIndexerMessageRequest { message }; + + let req = serde_json::to_value(last_req).unwrap(); + + let resp = self + .call_method_with_payload("post_indexer_message", req) + .await + .unwrap(); + + let resp_deser = serde_json::from_value(resp).unwrap(); + + Ok(resp_deser) + } } diff --git a/common/src/test_utils.rs b/common/src/test_utils.rs index 1125b86e..80703342 100644 --- a/common/src/test_utils.rs +++ b/common/src/test_utils.rs @@ -30,7 +30,7 @@ pub fn produce_dummy_block( transactions, }; - block_data.into_pending_block(&sequencer_sign_key_for_testing()) + block_data.into_pending_block(&sequencer_sign_key_for_testing(), [0; 32]) } pub fn produce_dummy_empty_transaction() -> EncodedTransaction { diff --git a/completions/zsh/_wallet b/completions/zsh/_wallet index d2831ef0..c90dadc4 100644 --- a/completions/zsh/_wallet +++ b/completions/zsh/_wallet @@ -150,10 +150,11 @@ _wallet_account() { subcommand) subcommands=( 'get:Get account data' - 'list:List all accounts' + 'list:List all accounts owned by the wallet' 'ls:List all accounts (alias for list)' 'new:Produce new public or private account' 'sync-private:Sync private accounts' + 'label:Set a label for an account' 'help:Print this message or the help of the given subcommand(s)' ) _describe -t subcommands 'account subcommands' subcommands @@ -184,6 +185,11 @@ _wallet_account() { ;; esac ;; + label) + _arguments \ + '(-a --account-id)'{-a,--account-id}'[Account ID to label]:account_id:_wallet_account_ids' \ + '(-l --label)'{-l,--label}'[The label to assign to the account]:label:' + ;; esac ;; esac diff --git a/examples/program_deployment/Cargo.toml b/examples/program_deployment/Cargo.toml index 6aff2d0f..2199fe21 100644 --- a/examples/program_deployment/Cargo.toml +++ b/examples/program_deployment/Cargo.toml @@ -2,6 +2,7 @@ name = "program_deployment" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa.workspace = true diff --git a/examples/program_deployment/methods/Cargo.toml b/examples/program_deployment/methods/Cargo.toml index a25aecf2..95b10ea8 100644 --- a/examples/program_deployment/methods/Cargo.toml +++ b/examples/program_deployment/methods/Cargo.toml @@ -2,6 +2,7 @@ name = "example_program_deployment_methods" version = "0.1.0" edition = "2024" +license = { workspace = true } [build-dependencies] risc0-build.workspace = true diff --git a/examples/program_deployment/methods/guest/Cargo.toml b/examples/program_deployment/methods/guest/Cargo.toml index 245bc5db..1f4db355 100644 --- a/examples/program_deployment/methods/guest/Cargo.toml +++ b/examples/program_deployment/methods/guest/Cargo.toml @@ -2,6 +2,7 @@ name = "example_program_deployment_programs" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true diff --git a/explorer_service/.gitignore b/explorer_service/.gitignore new file mode 100644 index 00000000..49015de2 --- /dev/null +++ b/explorer_service/.gitignore @@ -0,0 +1,11 @@ +# Leptos build outputs +/target +/pkg +/site + +# WASM artifacts +*.wasm + +# Environment +.env +.env.local diff --git a/explorer_service/Cargo.toml b/explorer_service/Cargo.toml new file mode 100644 index 00000000..49d1ddce --- /dev/null +++ b/explorer_service/Cargo.toml @@ -0,0 +1,73 @@ +[package] +name = "explorer_service" +version = "0.1.0" +edition = "2024" +license.workspace = true + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +indexer_service_protocol.workspace = true + +# Leptos framework +leptos = "0.8.15" +leptos_meta = "0.8.5" +leptos_router = "0.8.11" + +# Serialization +serde.workspace = true + +# Logging +log.workspace = true +console_error_panic_hook = "0.1" +console_log = "1.0" + +# Date/Time +chrono.workspace = true + +# Hex encoding/decoding +hex.workspace = true + +# URL encoding +urlencoding = "2.1" + +# WASM-specific +wasm-bindgen = "0.2" +web-sys = { version = "0.3", features = [ + "Window", + "Document", + "Location", + "HtmlInputElement", +] } + +# Server-side dependencies (optional, enabled by features) +indexer_service_rpc = { workspace = true, features = [ + "client", +], optional = true } +jsonrpsee = { workspace = true, features = ["http-client"], optional = true } +tokio = { workspace = true, optional = true } +axum = { version = "0.8.8", optional = true } +leptos_axum = { version = "0.8.7", optional = true } +clap = { workspace = true, features = ["derive"], optional = true } +url = { workspace = true, optional = true } +env_logger = { workspace = true, optional = true } + +[features] +hydrate = ["leptos/hydrate"] +ssr = [ + "leptos/ssr", + "dep:indexer_service_rpc", + "dep:jsonrpsee", + "dep:tokio", + "dep:axum", + "dep:leptos_axum", + "dep:clap", + "dep:url", + "dep:env_logger", +] + +[package.metadata.leptos] +bin-features = ["ssr"] +lib-features = ["hydrate"] +assets-dir = "public" diff --git a/explorer_service/Dockerfile b/explorer_service/Dockerfile new file mode 100644 index 00000000..e10c5ebe --- /dev/null +++ b/explorer_service/Dockerfile @@ -0,0 +1,52 @@ +FROM rust:1.91.1-trixie AS builder + +# Install cargo-binstall, which makes it easier to install other +# cargo extensions like cargo-leptos +RUN wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz +RUN tar -xvf cargo-binstall-x86_64-unknown-linux-musl.tgz +RUN cp cargo-binstall /usr/local/cargo/bin + +# Install required tools +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends clang + +# Install cargo-leptos +RUN cargo binstall cargo-leptos -y + +# Add the WASM target +RUN rustup target add wasm32-unknown-unknown + +# Make an /explorer_service dir, which everything will eventually live in +RUN mkdir -p /explorer_service +WORKDIR /explorer_service +COPY . . + +# Build the app +RUN cargo leptos build --release -vv + +FROM debian:trixie-slim AS runtime +WORKDIR /explorer_service +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends openssl ca-certificates \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# Copy the server binary to the /explorer_service directory +COPY --from=builder /explorer_service/target/release/explorer_service /explorer_service/ + +# /target/site contains our JS/WASM/CSS, etc. +COPY --from=builder /explorer_service/target/site /explorer_service/site + +# Copy Cargo.toml as it’s needed at runtime +COPY --from=builder /explorer_service/Cargo.toml /explorer_service/ + +# Set any required env variables +ENV RUST_LOG="info" +ENV LEPTOS_SITE_ADDR="0.0.0.0:8080" +ENV LEPTOS_SITE_ROOT="site" +ENV INDEXER_RPC_URL="http://localhost:8779" +EXPOSE 8080 + +# Run the server +CMD ["/explorer_service/explorer_service"] diff --git a/explorer_service/README.md b/explorer_service/README.md new file mode 100644 index 00000000..6f118dbb --- /dev/null +++ b/explorer_service/README.md @@ -0,0 +1,71 @@ +# LEE Blockchain Explorer + +A web-based UI for exploring the blockchain state, built with Rust and Leptos framework. + +## Features + +- **Main Page**: Search for blocks, transactions, or accounts by hash/ID. View recent blocks. +- **Block Page**: View detailed block information and all transactions within a block. +- **Transaction Page**: View transaction details including type, accounts involved, and proofs. +- **Account Page**: View account state and transaction history. + +## Architecture + +- **Framework**: Leptos 0.8 with SSR (Server-Side Rendering) and hydration +- **Data Source**: Indexer Service JSON-RPC API +- **Components**: Reusable BlockPreview, TransactionPreview, and AccountPreview components +- **Styling**: Custom CSS with responsive design + +## Development + +### Prerequisites + +- Rust (stable or nightly) +- `cargo-leptos` tool: `cargo install cargo-leptos` +- Running indexer service at `http://localhost:8080/rpc` (or configure via `INDEXER_RPC_URL`) + +### Build and Run + +```bash +# Development mode (with hot-reload) +cargo leptos watch + +# Production build +cargo leptos build --release + +# Run production build +cargo leptos serve --release +``` + +The explorer will be available at `http://localhost:3000` by default. + +### Configuration + +Set the `INDEXER_RPC_URL` environment variable to point to your indexer service: + +```bash +export INDEXER_RPC_URL=http://localhost:8080/rpc +cargo leptos watch +``` + +## Features + +### Search + +The search bar supports: +- Block IDs (numeric) +- Block hashes (64-character hex) +- Transaction hashes (64-character hex) +- Account IDs (64-character hex) + +### Real-time Updates + +The main page loads recent blocks and can be extended to subscribe to new blocks via WebSocket. + +### Responsive Design + +The UI is mobile-friendly and adapts to different screen sizes. + +## License + +See LICENSE file in the repository root. diff --git a/explorer_service/docker-compose.yml b/explorer_service/docker-compose.yml new file mode 100644 index 00000000..28c4c9c7 --- /dev/null +++ b/explorer_service/docker-compose.yml @@ -0,0 +1,11 @@ +services: + explorer_service: + image: lssa/explorer_service + build: + context: .. + dockerfile: explorer_service/Dockerfile + container_name: explorer_service + environment: + INDEXER_RPC_URL: ${INDEXER_RPC_URL:-http://localhost:8779} + ports: + - "8080:8080" diff --git a/explorer_service/public/explorer.css b/explorer_service/public/explorer.css new file mode 100644 index 00000000..a6415ed5 --- /dev/null +++ b/explorer_service/public/explorer.css @@ -0,0 +1,516 @@ +/* Reset and base styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + background-color: #f5f7fa; + color: #2c3e50; + line-height: 1.6; +} + +/* App layout */ +.app { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.app-header { + background-color: #2c3e50; + color: white; + padding: 1rem 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.app-nav { + max-width: 1200px; + margin: 0 auto; +} + +.nav-logo { + color: white; + text-decoration: none; + font-size: 1.5rem; + font-weight: bold; +} + +.nav-logo:hover { + color: #3498db; +} + +.app-main { + flex: 1; + max-width: 1200px; + width: 100%; + margin: 0 auto; + padding: 2rem; +} + +.app-footer { + background-color: #34495e; + color: white; + text-align: center; + padding: 1.5rem; + margin-top: 2rem; +} + +/* Page headers */ +.page-header h1 { + font-size: 2rem; + margin-bottom: 1.5rem; + color: #2c3e50; +} + +/* Search section */ +.search-section { + margin-bottom: 3rem; +} + +.search-form { + display: flex; + gap: 0.5rem; + margin-bottom: 1.5rem; +} + +.search-input { + flex: 1; + padding: 0.75rem 1rem; + border: 2px solid #dde4ed; + border-radius: 8px; + font-size: 1rem; + transition: border-color 0.3s; +} + +.search-input:focus { + outline: none; + border-color: #3498db; +} + +.search-button { + padding: 0.75rem 2rem; + background-color: #3498db; + color: white; + border: none; + border-radius: 8px; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: background-color 0.3s; +} + +.search-button:hover { + background-color: #2980b9; +} + +/* Block preview */ +.block-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.block-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.block-preview-link { + text-decoration: none; + color: inherit; +} + +.block-preview-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.block-id .label { + color: #7f8c8d; + font-size: 0.9rem; +} + +.block-id .value { + font-size: 1.5rem; + font-weight: bold; + color: #2c3e50; +} + +.block-status { + padding: 0.5rem 1rem; + border-radius: 20px; + font-size: 0.85rem; + font-weight: 600; +} + +.status-pending { + background-color: #fff3cd; + color: #856404; +} + +.status-safe { + background-color: #d1ecf1; + color: #0c5460; +} + +.status-finalized { + background-color: #d4edda; + color: #155724; +} + +.block-preview-body { + display: grid; + gap: 0.5rem; +} + +.block-field { + display: flex; + gap: 0.5rem; +} + +.field-label { + color: #7f8c8d; + font-weight: 500; +} + +.field-value { + color: #2c3e50; +} + +.hash { + font-family: "Courier New", monospace; + font-size: 0.9rem; + word-break: break-all; +} + +/* Transaction preview */ +.transaction-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.transaction-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.transaction-preview-link { + text-decoration: none; + color: inherit; +} + +.transaction-preview-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.75rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid #eee; +} + +.tx-type { + padding: 0.4rem 0.8rem; + border-radius: 16px; + font-size: 0.85rem; + font-weight: 600; + border: 2px solid; +} + +.tx-type-public { + background-color: #e3f2fd; + color: #0d47a1; + border-color: #1976d2; + border-style: solid; +} + +.tx-type-private { + background-color: #ffe0f0; + color: #880e4f; + border-color: #c2185b; + border-style: dashed; + font-style: italic; +} + +.tx-type-deployment { + background-color: #fff3e0; + color: #e65100; + border-color: #ff9800; + border-style: dotted; +} + +.tx-hash { + display: flex; + gap: 0.5rem; + align-items: center; +} + +.transaction-preview-body { + color: #7f8c8d; + font-size: 0.9rem; +} + +/* Account preview */ +.account-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.account-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.account-preview-link { + text-decoration: none; + color: inherit; +} + +.account-preview-header { + margin-bottom: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.account-id .label { + color: #7f8c8d; + font-size: 0.9rem; +} + +.account-id .value { + font-size: 1.2rem; + font-weight: 600; + color: #2c3e50; +} + +.account-preview-body { + display: grid; + gap: 0.5rem; +} + +.account-field { + display: flex; + gap: 0.5rem; +} + +.account-not-found { + color: #e74c3c; + font-style: italic; +} + +/* Detail pages */ +.block-detail, +.transaction-detail, +.account-detail { + background-color: white; + border-radius: 8px; + padding: 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.block-info, +.transaction-info, +.account-info, +.transaction-details { + margin-bottom: 2rem; +} + +.block-info h2, +.transaction-info h2, +.account-info h2, +.transaction-details h2 { + font-size: 1.5rem; + margin-bottom: 1rem; + color: #2c3e50; +} + +.info-grid { + display: grid; + gap: 1rem; +} + +.info-row { + display: flex; + gap: 1rem; + padding: 0.75rem; + background-color: #f8f9fa; + border-radius: 4px; +} + +.info-label { + color: #7f8c8d; + font-weight: 600; + min-width: 150px; +} + +.info-value { + color: #2c3e50; + word-break: break-all; +} + +.signature { + font-size: 0.75rem; +} + +/* Transactions list */ +.block-transactions, +.account-transactions { + margin-top: 2rem; +} + +.block-transactions h2, +.account-transactions h2 { + font-size: 1.5rem; + margin-bottom: 1rem; + color: #2c3e50; +} + +.transactions-list { + display: grid; + gap: 1rem; +} + +.no-transactions { + padding: 2rem; + text-align: center; + color: #7f8c8d; + background-color: #f8f9fa; + border-radius: 8px; +} + +/* Accounts list */ +.accounts-list { + display: grid; + gap: 0.5rem; + margin-top: 1rem; +} + +.account-item { + padding: 0.75rem; + background-color: #f8f9fa; + border-radius: 4px; +} + +.account-item a { + color: #3498db; + text-decoration: none; +} + +.account-item a:hover { + text-decoration: underline; +} + +.nonce { + color: #7f8c8d; + font-size: 0.9rem; + margin-left: 0.5rem; +} + +/* Loading and error states */ +.loading, +.loading-more { + text-align: center; + padding: 2rem; + color: #7f8c8d; + font-style: italic; +} + +.error, +.error-page { + background-color: #f8d7da; + color: #721c24; + padding: 1rem; + border-radius: 8px; + margin: 1rem 0; +} + +.not-found, +.not-found-page { + text-align: center; + padding: 3rem; + color: #7f8c8d; +} + +.not-found-page h1 { + font-size: 4rem; + color: #e74c3c; + margin-bottom: 1rem; +} + +.not-found-page a { + color: #3498db; + text-decoration: none; + font-weight: 600; +} + +.not-found-page a:hover { + text-decoration: underline; +} + +/* Load more button */ +.load-more-button { + display: block; + width: 100%; + padding: 1rem; + margin-top: 1rem; + background-color: #3498db; + color: white; + border: none; + border-radius: 8px; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: background-color 0.3s; +} + +.load-more-button:hover { + background-color: #2980b9; +} + +/* Responsive design */ +@media (max-width: 768px) { + .app-main { + padding: 1rem; + } + + .search-form { + flex-direction: column; + } + + .search-button { + width: 100%; + } + + .block-preview-header, + .transaction-preview-header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .info-row { + flex-direction: column; + gap: 0.25rem; + } + + .info-label { + min-width: auto; + } +} diff --git a/explorer_service/src/api.rs b/explorer_service/src/api.rs new file mode 100644 index 00000000..fe84033f --- /dev/null +++ b/explorer_service/src/api.rs @@ -0,0 +1,158 @@ +use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; +use leptos::prelude::*; +use serde::{Deserialize, Serialize}; + +/// Search results structure +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct SearchResults { + pub blocks: Vec, + pub transactions: Vec, + pub accounts: Vec<(AccountId, Option)>, +} + +/// RPC client type +#[cfg(feature = "ssr")] +pub type IndexerRpcClient = jsonrpsee::http_client::HttpClient; + +/// Get account information by ID +#[server] +pub async fn get_account(account_id: AccountId) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_account(account_id) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Parse hex string to bytes +#[cfg(feature = "ssr")] +fn parse_hex(s: &str) -> Option> { + let s = s.trim().trim_start_matches("0x"); + hex::decode(s).ok() +} + +/// Search for a block, transaction, or account by query string +#[server] +pub async fn search(query: String) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + + let mut blocks = Vec::new(); + let mut transactions = Vec::new(); + let mut accounts = Vec::new(); + + // Try to parse as hash (32 bytes) + if let Some(bytes) = parse_hex(&query) + && let Ok(hash_array) = <[u8; 32]>::try_from(bytes) + { + let hash = Hash(hash_array); + + // Try as block hash + if let Ok(block) = client.get_block_by_hash(hash).await { + blocks.push(block); + } + + // Try as transaction hash + if let Ok(tx) = client.get_transaction(hash).await { + transactions.push(tx); + } + + // Try as account ID + let account_id = AccountId { value: hash_array }; + match client.get_account(account_id).await { + Ok(account) => { + accounts.push((account_id, Some(account))); + } + Err(_) => { + // Account might not exist yet, still add it to results + accounts.push((account_id, None)); + } + } + } + + // Try as block ID + if let Ok(block_id) = query.parse::() + && let Ok(block) = client.get_block_by_id(block_id).await + { + blocks.push(block); + } + + Ok(SearchResults { + blocks, + transactions, + accounts, + }) +} + +/// Get block by ID +#[server] +pub async fn get_block_by_id(block_id: BlockId) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_block_by_id(block_id) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get block by hash +#[server] +pub async fn get_block_by_hash(block_hash: Hash) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_block_by_hash(block_hash) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get transaction by hash +#[server] +pub async fn get_transaction(tx_hash: Hash) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_transaction(tx_hash) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get blocks with pagination +#[server] +pub async fn get_blocks(offset: u32, limit: u32) -> Result, ServerFnError> { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_blocks(offset, limit) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get transactions by account +#[server] +pub async fn get_transactions_by_account( + account_id: AccountId, + limit: u32, + offset: u32, +) -> Result, ServerFnError> { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_transactions_by_account(account_id, limit, offset) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Create the RPC client for the indexer service (server-side only) +#[cfg(feature = "ssr")] +pub fn create_indexer_rpc_client(url: &url::Url) -> Result { + use jsonrpsee::http_client::HttpClientBuilder; + use log::info; + + info!("Connecting to Indexer RPC on URL: {url}"); + + HttpClientBuilder::default() + .build(url.as_str()) + .map_err(|e| format!("Failed to create RPC client: {e}")) +} diff --git a/explorer_service/src/components/account_preview.rs b/explorer_service/src/components/account_preview.rs new file mode 100644 index 00000000..30bbae5b --- /dev/null +++ b/explorer_service/src/components/account_preview.rs @@ -0,0 +1,63 @@ +use indexer_service_protocol::{Account, AccountId}; +use leptos::prelude::*; +use leptos_router::components::A; + +use crate::format_utils; + +/// Account preview component +#[component] +pub fn AccountPreview(account_id: AccountId, account: Option) -> impl IntoView { + let account_id_str = format_utils::format_account_id(&account_id); + + view! { +

+ } +} diff --git a/explorer_service/src/components/block_preview.rs b/explorer_service/src/components/block_preview.rs new file mode 100644 index 00000000..b577cceb --- /dev/null +++ b/explorer_service/src/components/block_preview.rs @@ -0,0 +1,77 @@ +use indexer_service_protocol::{BedrockStatus, Block, BlockBody, BlockHeader}; +use leptos::prelude::*; +use leptos_router::components::A; + +use crate::format_utils; + +/// Get CSS class for bedrock status +fn status_class(status: &BedrockStatus) -> &'static str { + match status { + BedrockStatus::Pending => "status-pending", + BedrockStatus::Safe => "status-safe", + BedrockStatus::Finalized => "status-finalized", + } +} + +/// Block preview component +#[component] +pub fn BlockPreview(block: Block) -> impl IntoView { + let Block { + header: + BlockHeader { + block_id, + prev_block_hash, + hash, + timestamp, + signature: _, + }, + body: BlockBody { transactions }, + bedrock_status, + bedrock_parent_id: _, + } = block; + + let tx_count = transactions.len(); + + let hash_str = hex::encode(hash.0); + let prev_hash_str = hex::encode(prev_block_hash.0); + let time_str = format_utils::format_timestamp(timestamp); + let status_str = match &bedrock_status { + BedrockStatus::Pending => "Pending", + BedrockStatus::Safe => "Safe", + BedrockStatus::Finalized => "Finalized", + }; + + view! { + + } +} diff --git a/explorer_service/src/components/mod.rs b/explorer_service/src/components/mod.rs new file mode 100644 index 00000000..a0032b10 --- /dev/null +++ b/explorer_service/src/components/mod.rs @@ -0,0 +1,7 @@ +pub mod account_preview; +pub mod block_preview; +pub mod transaction_preview; + +pub use account_preview::AccountPreview; +pub use block_preview::BlockPreview; +pub use transaction_preview::TransactionPreview; diff --git a/explorer_service/src/components/transaction_preview.rs b/explorer_service/src/components/transaction_preview.rs new file mode 100644 index 00000000..a08abb30 --- /dev/null +++ b/explorer_service/src/components/transaction_preview.rs @@ -0,0 +1,72 @@ +use indexer_service_protocol::Transaction; +use leptos::prelude::*; +use leptos_router::components::A; + +/// Get transaction type name and CSS class +fn transaction_type_info(tx: &Transaction) -> (&'static str, &'static str) { + match tx { + Transaction::Public(_) => ("Public", "tx-type-public"), + Transaction::PrivacyPreserving(_) => ("Privacy-Preserving", "tx-type-private"), + Transaction::ProgramDeployment(_) => ("Program Deployment", "tx-type-deployment"), + } +} + +/// Transaction preview component +#[component] +pub fn TransactionPreview(transaction: Transaction) -> impl IntoView { + let hash = transaction.hash(); + let hash_str = hex::encode(hash.0); + let (type_name, type_class) = transaction_type_info(&transaction); + + // Get additional metadata based on transaction type + let metadata = match &transaction { + Transaction::Public(tx) => { + let indexer_service_protocol::PublicTransaction { + hash: _, + message, + witness_set: _, + } = tx; + format!("{} accounts involved", message.account_ids.len()) + } + Transaction::PrivacyPreserving(tx) => { + let indexer_service_protocol::PrivacyPreservingTransaction { + hash: _, + message, + witness_set: _, + } = tx; + format!( + "{} public accounts, {} commitments", + message.public_account_ids.len(), + message.new_commitments.len() + ) + } + Transaction::ProgramDeployment(tx) => { + let indexer_service_protocol::ProgramDeploymentTransaction { hash: _, message } = tx; + format!("{} bytes", message.bytecode.len()) + } + }; + + view! { + + } +} diff --git a/explorer_service/src/format_utils.rs b/explorer_service/src/format_utils.rs new file mode 100644 index 00000000..6f5378de --- /dev/null +++ b/explorer_service/src/format_utils.rs @@ -0,0 +1,33 @@ +//! Formatting utilities for the explorer + +use indexer_service_protocol::{AccountId, ProgramId}; + +/// Format timestamp to human-readable string +pub fn format_timestamp(timestamp: u64) -> String { + let seconds = timestamp / 1000; + let datetime = chrono::DateTime::from_timestamp(seconds as i64, 0) + .unwrap_or_else(|| chrono::DateTime::from_timestamp(0, 0).unwrap()); + datetime.format("%Y-%m-%d %H:%M:%S UTC").to_string() +} + +/// Format hash (32 bytes) to hex string +pub fn format_hash(hash: &[u8; 32]) -> String { + hex::encode(hash) +} + +/// Format account ID to hex string +pub fn format_account_id(account_id: &AccountId) -> String { + hex::encode(account_id.value) +} + +/// Format program ID to hex string +pub fn format_program_id(program_id: &ProgramId) -> String { + let bytes: Vec = program_id.iter().flat_map(|n| n.to_be_bytes()).collect(); + hex::encode(bytes) +} + +/// Parse hex string to bytes +pub fn parse_hex(s: &str) -> Option> { + let s = s.trim().trim_start_matches("0x"); + hex::decode(s).ok() +} diff --git a/explorer_service/src/lib.rs b/explorer_service/src/lib.rs new file mode 100644 index 00000000..489636fd --- /dev/null +++ b/explorer_service/src/lib.rs @@ -0,0 +1,102 @@ +use leptos::prelude::*; +use leptos_meta::{Meta, Stylesheet, Title, provide_meta_context}; +use leptos_router::{ + ParamSegment, StaticSegment, + components::{Route, Router, Routes}, +}; +use pages::{AccountPage, BlockPage, MainPage, TransactionPage}; + +pub mod api; +mod components; +mod format_utils; +mod pages; + +/// Main application component with routing setup. +/// +/// # Routes +/// +/// - `/` - Main page with search and recent blocks +/// - `/block/:id` - Block detail page (`:id` is the numeric block ID) +/// - `/transaction/:hash` - Transaction detail page (`:hash` is the hex-encoded transaction hash) +/// - `/account/:id` - Account detail page (`:id` is the hex-encoded account ID) +/// +/// All other routes will show a 404 Not Found page. +#[component] +pub fn App() -> impl IntoView { + // Provides context that manages stylesheets, titles, meta tags, etc. + provide_meta_context(); + + view! { + + + <Meta name="description" content="Explore the blockchain - view blocks, transactions, and accounts" /> + + <Router> + <div class="app"> + <header class="app-header"> + <nav class="app-nav"> + <a href="/" class="nav-logo"> + "LEE Blockchain Explorer" + </a> + </nav> + </header> + + <main class="app-main"> + // Route definitions: + // - MainPage: Home with search and recent blocks + // - BlockPage: Detailed block view with all transactions + // - TransactionPage: Detailed transaction view + // - AccountPage: Account state and transaction history + <Routes fallback=|| view! { <NotFound /> }> + // Main page - search and recent blocks + <Route path=StaticSegment("") view=MainPage /> + + // Block detail page - /block/123 + <Route path=(StaticSegment("block"), ParamSegment("id")) view=BlockPage /> + + // Transaction detail page - /transaction/0abc123... + <Route + path=(StaticSegment("transaction"), ParamSegment("hash")) + view=TransactionPage + /> + + // Account detail page - /account/0def456... + <Route + path=(StaticSegment("account"), ParamSegment("id")) + view=AccountPage + /> + </Routes> + </main> + + <footer class="app-footer"> + <p>"LEE Blockchain Explorer © 2026"</p> + </footer> + </div> + </Router> + } +} + +/// 404 Not Found page component. +/// +/// Displayed when a user navigates to a route that doesn't exist. +#[component] +fn NotFound() -> impl IntoView { + view! { + <div class="not-found-page"> + <h1>"404"</h1> + <p>"Page not found"</p> + <a href="/">"Go back to home"</a> + </div> + } +} + +#[cfg(feature = "hydrate")] +#[wasm_bindgen::prelude::wasm_bindgen] +pub fn hydrate() { + use leptos::mount::hydrate_body; + + console_error_panic_hook::set_once(); + console_log::init_with_level(log::Level::Debug).expect("error initializing logger"); + + hydrate_body(App); +} diff --git a/explorer_service/src/main.rs b/explorer_service/src/main.rs new file mode 100644 index 00000000..63d54d70 --- /dev/null +++ b/explorer_service/src/main.rs @@ -0,0 +1,79 @@ +#[cfg(feature = "ssr")] +#[tokio::main] +async fn main() { + use axum::Router; + use clap::Parser; + use explorer_service::App; + use leptos::prelude::*; + use leptos_axum::{LeptosRoutes, generate_route_list}; + use leptos_meta::MetaTags; + + env_logger::init(); + + /// LEE Blockchain Explorer Server CLI arguments. + #[derive(Parser, Debug)] + #[command(version, about, long_about = None)] + struct Args { + /// Indexer RPC URL + #[arg(long, env = "INDEXER_RPC_URL", default_value = "http://localhost:8779")] + indexer_rpc_url: url::Url, + } + + let args = Args::parse(); + + let conf = get_configuration(None).unwrap(); + let leptos_options = conf.leptos_options; + let addr = leptos_options.site_addr; + let routes = generate_route_list(App); + + // Create RPC client once + let rpc_client = explorer_service::api::create_indexer_rpc_client(&args.indexer_rpc_url) + .expect("Failed to create RPC client"); + + // Build our application with routes + let app = Router::new() + .leptos_routes_with_context( + &leptos_options, + routes, + { + let rpc_client = rpc_client.clone(); + move || provide_context(rpc_client.clone()) + }, + { + let leptos_options = leptos_options.clone(); + move || { + view! { + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <AutoReload options=leptos_options.clone() /> + <HydrationScripts options=leptos_options.clone() /> + <MetaTags /> + </head> + <body> + <App /> + </body> + </html> + } + } + }, + ) + .fallback(leptos_axum::file_and_error_handler(|_| { + view! { "Page not found" } + })) + .with_state(leptos_options); + + // Run the server + let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); + println!("Listening on http://{}", &addr); + axum::serve(listener, app.into_make_service()) + .await + .unwrap(); +} + +#[cfg(not(feature = "ssr"))] +fn main() { + // Client-only main - no-op since hydration is done via wasm_bindgen +} diff --git a/explorer_service/src/pages/account_page.rs b/explorer_service/src/pages/account_page.rs new file mode 100644 index 00000000..efd9ae81 --- /dev/null +++ b/explorer_service/src/pages/account_page.rs @@ -0,0 +1,229 @@ +use indexer_service_protocol::{Account, AccountId}; +use leptos::prelude::*; +use leptos_router::hooks::use_params_map; + +use crate::{api, components::TransactionPreview, format_utils}; + +/// Account page component +#[component] +pub fn AccountPage() -> impl IntoView { + let params = use_params_map(); + let (tx_offset, set_tx_offset) = signal(0u32); + let (all_transactions, set_all_transactions) = signal(Vec::new()); + let (is_loading, set_is_loading) = signal(false); + let (has_more, set_has_more) = signal(true); + let tx_limit = 10u32; + + // Parse account ID from URL params + let account_id = move || { + let account_id_str = params.read().get("id").unwrap_or_default(); + format_utils::parse_hex(&account_id_str).and_then(|bytes| { + if bytes.len() == 32 { + let account_id_array: [u8; 32] = bytes.try_into().ok()?; + Some(AccountId { + value: account_id_array, + }) + } else { + None + } + }) + }; + + // Load account data + let account_resource = Resource::new(account_id, |acc_id_opt| async move { + match acc_id_opt { + Some(acc_id) => api::get_account(acc_id).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid account ID".to_string(), + )), + } + }); + + // Load initial transactions + let transactions_resource = Resource::new(account_id, move |acc_id_opt| async move { + match acc_id_opt { + Some(acc_id) => api::get_transactions_by_account(acc_id, tx_limit, 0).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid account ID".to_string(), + )), + } + }); + + // Update all_transactions when initial load completes + Effect::new(move || { + if let Some(Ok(txs)) = transactions_resource.get() { + set_all_transactions.set(txs.clone()); + set_has_more.set(txs.len() as u32 == tx_limit); + } + }); + + // Load more transactions handler + let load_more = move |_| { + let Some(acc_id) = account_id() else { + return; + }; + + set_is_loading.set(true); + let current_offset = tx_offset.get() + tx_limit; + set_tx_offset.set(current_offset); + + leptos::task::spawn_local(async move { + match api::get_transactions_by_account(acc_id, tx_limit, current_offset).await { + Ok(new_txs) => { + let txs_count = new_txs.len() as u32; + set_all_transactions.update(|txs| txs.extend(new_txs)); + set_has_more.set(txs_count == tx_limit); + } + Err(e) => { + log::error!("Failed to load more transactions: {}", e); + } + } + set_is_loading.set(false); + }); + }; + + view! { + <div class="account-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading account..."</div> }> + {move || { + account_resource + .get() + .map(|result| match result { + Ok(acc) => { + let Account { + program_owner, + balance, + data, + nonce, + } = acc; + + let acc_id = account_id().expect("Account ID should be set"); + let account_id_str = format_utils::format_account_id(&acc_id); + let program_id = format_utils::format_program_id(&program_owner); + let balance_str = balance.to_string(); + let nonce_str = nonce.to_string(); + let data_len = data.0.len(); + view! { + <div class="account-detail"> + <div class="page-header"> + <h1>"Account"</h1> + </div> + + <div class="account-info"> + <h2>"Account Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Account ID:"</span> + <span class="info-value hash">{account_id_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Balance:"</span> + <span class="info-value">{balance_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Program Owner:"</span> + <span class="info-value hash">{program_id}</span> + </div> + <div class="info-row"> + <span class="info-label">"Nonce:"</span> + <span class="info-value">{nonce_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Data:"</span> + <span class="info-value">{format!("{} bytes", data_len)}</span> + </div> + </div> + </div> + + <div class="account-transactions"> + <h2>"Transactions"</h2> + <Suspense fallback=move || { + view! { <div class="loading">"Loading transactions..."</div> } + }> + + {move || { + transactions_resource + .get() + .map(|result| match result { + Ok(_) => { + let txs = all_transactions.get(); + if txs.is_empty() { + view! { + <div class="no-transactions"> + "No transactions found" + </div> + } + .into_any() + } else { + view! { + <div> + <div class="transactions-list"> + {txs + .into_iter() + .map(|tx| { + view! { <TransactionPreview transaction=tx /> } + }) + .collect::<Vec<_>>()} + </div> + {move || { + if has_more.get() { + view! { + <button + class="load-more-button" + on:click=load_more + disabled=move || is_loading.get() + > + {move || { + if is_loading.get() { + "Loading..." + } else { + "Load More" + } + }} + + </button> + } + .into_any() + } else { + ().into_any() + } + }} + + </div> + } + .into_any() + } + } + Err(e) => { + view! { + <div class="error"> + {format!("Failed to load transactions: {}", e)} + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load account: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/explorer_service/src/pages/block_page.rs b/explorer_service/src/pages/block_page.rs new file mode 100644 index 00000000..988bc5e3 --- /dev/null +++ b/explorer_service/src/pages/block_page.rs @@ -0,0 +1,159 @@ +use indexer_service_protocol::{BedrockStatus, Block, BlockBody, BlockHeader, BlockId, Hash}; +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::{api, components::TransactionPreview, format_utils}; + +#[derive(Clone, PartialEq, Eq)] +enum BlockIdOrHash { + BlockId(BlockId), + Hash(Hash), +} + +/// Block page component +#[component] +pub fn BlockPage() -> impl IntoView { + let params = use_params_map(); + + let block_resource = Resource::new( + move || { + let id_str = params.read().get("id").unwrap_or_default(); + + // Try to parse as block ID (number) + if let Ok(block_id) = id_str.parse::<BlockId>() { + return Some(BlockIdOrHash::BlockId(block_id)); + } + + // Try to parse as block hash (hex string) + let id_str = id_str.trim().trim_start_matches("0x"); + if let Some(bytes) = format_utils::parse_hex(id_str) + && let Ok(hash_array) = <[u8; 32]>::try_from(bytes) + { + return Some(BlockIdOrHash::Hash(Hash(hash_array))); + } + + None + }, + |block_id_or_hash| async move { + match block_id_or_hash { + Some(BlockIdOrHash::BlockId(id)) => api::get_block_by_id(id).await, + Some(BlockIdOrHash::Hash(hash)) => api::get_block_by_hash(hash).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid block ID or hash".to_string(), + )), + } + }, + ); + + view! { + <div class="block-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading block..."</div> }> + {move || { + block_resource + .get() + .map(|result| match result { + Ok(blk) => { + let Block { + header: BlockHeader { + block_id, + prev_block_hash, + hash, + timestamp, + signature, + }, + body: BlockBody { + transactions, + }, + bedrock_status, + bedrock_parent_id: _, + } = blk; + + let hash_str = format_utils::format_hash(&hash.0); + let prev_hash = format_utils::format_hash(&prev_block_hash.0); + let timestamp_str = format_utils::format_timestamp(timestamp); + let signature_str = hex::encode(signature.0); + let status = match &bedrock_status { + BedrockStatus::Pending => "Pending", + BedrockStatus::Safe => "Safe", + BedrockStatus::Finalized => "Finalized", + }; + view! { + <div class="block-detail"> + <div class="page-header"> + <h1>"Block " {block_id.to_string()}</h1> + </div> + + <div class="block-info"> + <h2>"Block Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Block ID: "</span> + <span class="info-value">{block_id.to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Hash: "</span> + <span class="info-value hash">{hash_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Previous Block Hash: "</span> + <A href=format!("/block/{}", prev_hash) attr:class="info-value hash"> + {prev_hash} + </A> + </div> + <div class="info-row"> + <span class="info-label">"Timestamp: "</span> + <span class="info-value">{timestamp_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Status: "</span> + <span class="info-value">{status}</span> + </div> + <div class="info-row"> + <span class="info-label">"Signature: "</span> + <span class="info-value hash signature">{signature_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Transaction Count: "</span> + <span class="info-value">{transactions.len().to_string()}</span> + </div> + </div> + </div> + + <div class="block-transactions"> + <h2>"Transactions"</h2> + {if transactions.is_empty() { + view! { <div class="no-transactions">"No transactions"</div> } + .into_any() + } else { + view! { + <div class="transactions-list"> + {transactions + .into_iter() + .map(|tx| view! { <TransactionPreview transaction=tx /> }) + .collect::<Vec<_>>()} + </div> + } + .into_any() + }} + + </div> + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load block: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/explorer_service/src/pages/main_page.rs b/explorer_service/src/pages/main_page.rs new file mode 100644 index 00000000..ffd625c8 --- /dev/null +++ b/explorer_service/src/pages/main_page.rs @@ -0,0 +1,208 @@ +use leptos::prelude::*; +use leptos_router::hooks::{use_navigate, use_query_map}; +use web_sys::SubmitEvent; + +use crate::{ + api::{self, SearchResults}, + components::{AccountPreview, BlockPreview, TransactionPreview}, +}; + +/// Main page component +#[component] +pub fn MainPage() -> impl IntoView { + let query_map = use_query_map(); + let navigate = use_navigate(); + + // Read search query from URL parameter + let url_query = move || query_map.read().get("q").unwrap_or_default(); + + let (search_query, set_search_query) = signal(url_query()); + + // Sync search input with URL parameter + Effect::new(move || { + set_search_query.set(url_query()); + }); + + // Search results resource based on URL query parameter + let search_resource = Resource::new(url_query, |query| async move { + if query.is_empty() { + return None; + } + match api::search(query).await { + Ok(result) => Some(result), + Err(e) => { + log::error!("Search error: {}", e); + None + } + } + }); + + // Load recent blocks on mount + let recent_blocks_resource = Resource::new(|| (), |_| async { api::get_blocks(0, 10).await }); + + // Handle search - update URL parameter + let on_search = move |ev: SubmitEvent| { + ev.prevent_default(); + let query = search_query.get(); + if query.is_empty() { + navigate("?", Default::default()); + return; + } + + navigate( + &format!("?q={}", urlencoding::encode(&query)), + Default::default(), + ); + }; + + view! { + <div class="main-page"> + <div class="page-header"> + <h1>"LEE Blockchain Explorer"</h1> + </div> + + <div class="search-section"> + <form on:submit=on_search class="search-form"> + <input + type="text" + class="search-input" + placeholder="Search by block ID, block hash, transaction hash, or account ID..." + prop:value=move || search_query.get() + on:input=move |ev| set_search_query.set(event_target_value(&ev)) + /> + <button type="submit" class="search-button"> + "Search" + </button> + </form> + + <Suspense fallback=move || view! { <div class="loading">"Searching..."</div> }> + {move || { + search_resource + .get() + .and_then(|opt_results| opt_results) + .map(|results| { + let SearchResults { + blocks, + transactions, + accounts, + } = results; + let has_results = !blocks.is_empty() + || !transactions.is_empty() + || !accounts.is_empty(); + view! { + <div class="search-results"> + <h2>"Search Results"</h2> + {if !has_results { + view! { <div class="not-found">"No results found"</div> } + .into_any() + } else { + view! { + <div class="results-container"> + {if !blocks.is_empty() { + view! { + <div class="results-section"> + <h3>"Blocks"</h3> + <div class="results-list"> + {blocks + .into_iter() + .map(|block| { + view! { <BlockPreview block=block /> } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + {if !transactions.is_empty() { + view! { + <div class="results-section"> + <h3>"Transactions"</h3> + <div class="results-list"> + {transactions + .into_iter() + .map(|tx| { + view! { <TransactionPreview transaction=tx /> } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + {if !accounts.is_empty() { + view! { + <div class="results-section"> + <h3>"Accounts"</h3> + <div class="results-list"> + {accounts + .into_iter() + .map(|(id, account)| { + view! { + <AccountPreview + account_id=id + account=account + /> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + </div> + } + .into_any() + }} + </div> + } + .into_any() + }) + }} + + </Suspense> + </div> + + <div class="blocks-section"> + <h2>"Recent Blocks"</h2> + <Suspense fallback=move || view! { <div class="loading">"Loading blocks..."</div> }> + {move || { + recent_blocks_resource + .get() + .map(|result| match result { + Ok(blocks) if !blocks.is_empty() => { + view! { + <div class="blocks-list"> + {blocks + .into_iter() + .map(|block| view! { <BlockPreview block=block /> }) + .collect::<Vec<_>>()} + </div> + } + .into_any() + } + Ok(_) => { + view! { <div class="no-blocks">"No blocks found"</div> }.into_any() + } + Err(e) => { + view! { <div class="error">{format!("Error: {}", e)}</div> } + .into_any() + } + }) + }} + + </Suspense> + </div> + </div> + } +} diff --git a/explorer_service/src/pages/mod.rs b/explorer_service/src/pages/mod.rs new file mode 100644 index 00000000..f4220145 --- /dev/null +++ b/explorer_service/src/pages/mod.rs @@ -0,0 +1,9 @@ +pub mod account_page; +pub mod block_page; +pub mod main_page; +pub mod transaction_page; + +pub use account_page::AccountPage; +pub use block_page::BlockPage; +pub use main_page::MainPage; +pub use transaction_page::TransactionPage; diff --git a/explorer_service/src/pages/transaction_page.rs b/explorer_service/src/pages/transaction_page.rs new file mode 100644 index 00000000..a8571a7a --- /dev/null +++ b/explorer_service/src/pages/transaction_page.rs @@ -0,0 +1,262 @@ +use indexer_service_protocol::{ + Hash, PrivacyPreservingMessage, PrivacyPreservingTransaction, ProgramDeploymentMessage, + ProgramDeploymentTransaction, PublicMessage, PublicTransaction, Transaction, WitnessSet, +}; +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::{api, format_utils}; + +/// Transaction page component +#[component] +pub fn TransactionPage() -> impl IntoView { + let params = use_params_map(); + + let transaction_resource = Resource::new( + move || { + let tx_hash_str = params.read().get("hash").unwrap_or_default(); + format_utils::parse_hex(&tx_hash_str).and_then(|bytes| { + if bytes.len() == 32 { + let hash_array: [u8; 32] = bytes.try_into().ok()?; + Some(Hash(hash_array)) + } else { + None + } + }) + }, + |hash_opt| async move { + match hash_opt { + Some(hash) => api::get_transaction(hash).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid transaction hash".to_string(), + )), + } + }, + ); + + view! { + <div class="transaction-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading transaction..."</div> }> + {move || { + transaction_resource + .get() + .map(|result| match result { + Ok(tx) => { + let tx_hash = format_utils::format_hash(&tx.hash().0); + let tx_type = match &tx { + Transaction::Public(_) => "Public Transaction", + Transaction::PrivacyPreserving(_) => "Privacy-Preserving Transaction", + Transaction::ProgramDeployment(_) => "Program Deployment Transaction", + }; + view! { + <div class="transaction-detail"> + <div class="page-header"> + <h1>"Transaction"</h1> + </div> + + <div class="transaction-info"> + <h2>"Transaction Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Hash:"</span> + <span class="info-value hash">{tx_hash}</span> + </div> + <div class="info-row"> + <span class="info-label">"Type:"</span> + <span class="info-value">{tx_type}</span> + </div> + </div> + </div> + + {match tx { + Transaction::Public(ptx) => { + let PublicTransaction { + hash: _, + message, + witness_set, + } = ptx; + let PublicMessage { + program_id, + account_ids, + nonces, + instruction_data, + } = message; + let WitnessSet { + signatures_and_public_keys, + proof, + } = witness_set; + + let program_id_str = program_id + .iter() + .map(|n| format!("{:08x}", n)) + .collect::<String>(); + let proof_len = proof.0.len(); + let signatures_count = signatures_and_public_keys.len(); + + view! { + <div class="transaction-details"> + <h2>"Public Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Program ID:"</span> + <span class="info-value hash">{program_id_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Instruction Data:"</span> + <span class="info-value"> + {format!("{} u32 values", instruction_data.len())} + </span> + </div> + <div class="info-row"> + <span class="info-label">"Proof Size:"</span> + <span class="info-value">{format!("{} bytes", proof_len)}</span> + </div> + <div class="info-row"> + <span class="info-label">"Signatures:"</span> + <span class="info-value">{signatures_count.to_string()}</span> + </div> + </div> + + <h3>"Accounts"</h3> + <div class="accounts-list"> + {account_ids + .into_iter() + .zip(nonces.into_iter()) + .map(|(account_id, nonce)| { + let account_id_str = format_utils::format_account_id(&account_id); + view! { + <div class="account-item"> + <A href=format!("/account/{}", account_id_str)> + <span class="hash">{account_id_str}</span> + </A> + <span class="nonce"> + " (nonce: " {nonce.to_string()} ")" + </span> + </div> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } + Transaction::PrivacyPreserving(pptx) => { + let PrivacyPreservingTransaction { + hash: _, + message, + witness_set, + } = pptx; + let PrivacyPreservingMessage { + public_account_ids, + nonces, + public_post_states: _, + encrypted_private_post_states, + new_commitments, + new_nullifiers, + } = message; + let WitnessSet { + signatures_and_public_keys: _, + proof, + } = witness_set; + + let proof_len = proof.0.len(); + view! { + <div class="transaction-details"> + <h2>"Privacy-Preserving Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Public Accounts:"</span> + <span class="info-value"> + {public_account_ids.len().to_string()} + </span> + </div> + <div class="info-row"> + <span class="info-label">"New Commitments:"</span> + <span class="info-value">{new_commitments.len().to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Nullifiers:"</span> + <span class="info-value">{new_nullifiers.len().to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Encrypted States:"</span> + <span class="info-value"> + {encrypted_private_post_states.len().to_string()} + </span> + </div> + <div class="info-row"> + <span class="info-label">"Proof Size:"</span> + <span class="info-value">{format!("{} bytes", proof_len)}</span> + </div> + </div> + + <h3>"Public Accounts"</h3> + <div class="accounts-list"> + {public_account_ids + .into_iter() + .zip(nonces.into_iter()) + .map(|(account_id, nonce)| { + let account_id_str = format_utils::format_account_id(&account_id); + view! { + <div class="account-item"> + <A href=format!("/account/{}", account_id_str)> + <span class="hash">{account_id_str}</span> + </A> + <span class="nonce"> + " (nonce: " {nonce.to_string()} ")" + </span> + </div> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } + Transaction::ProgramDeployment(pdtx) => { + let ProgramDeploymentTransaction { + hash: _, + message, + } = pdtx; + let ProgramDeploymentMessage { bytecode } = message; + + let bytecode_len = bytecode.len(); + view! { + <div class="transaction-details"> + <h2>"Program Deployment Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Bytecode Size:"</span> + <span class="info-value"> + {format!("{} bytes", bytecode_len)} + </span> + </div> + </div> + </div> + } + .into_any() + } + }} + + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load transaction: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..a12fbc85 --- /dev/null +++ b/flake.lock @@ -0,0 +1,64 @@ +{ + "nodes": { + "crane": { + "locked": { + "lastModified": 1769737823, + "narHash": "sha256-DrBaNpZ+sJ4stXm+0nBX7zqZT9t9P22zbk6m5YhQxS4=", + "owner": "ipetkov", + "repo": "crane", + "rev": "b2f45c3830aa96b7456a4c4bc327d04d7a43e1ba", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1770019141, + "narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crane": "crane", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770088046, + "narHash": "sha256-4hfYDnUTvL1qSSZEA4CEThxfz+KlwSFQ30Z9jgDguO0=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "71f9daa4e05e49c434d08627e755495ae222bc34", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..f09d4f77 --- /dev/null +++ b/flake.nix @@ -0,0 +1,96 @@ +{ + description = "Logos Execution Zone"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + crane.url = "github:ipetkov/crane"; + }; + + outputs = + { + self, + nixpkgs, + rust-overlay, + crane, + ... + }: + let + systems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + "x86_64-windows" + ]; + + forAll = nixpkgs.lib.genAttrs systems; + + mkPkgs = + system: + import nixpkgs { + inherit system; + overlays = [ rust-overlay.overlays.default ]; + }; + in + { + packages = forAll ( + system: + let + pkgs = mkPkgs system; + rustToolchain = pkgs.rust-bin.stable.latest.default; + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; + src = ./.; + + commonArgs = { + inherit src; + buildInputs = [ pkgs.openssl ]; + nativeBuildInputs = [ + pkgs.pkg-config + pkgs.clang + pkgs.llvmPackages.libclang.lib + ]; + LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; + }; + + walletFfiPackage = craneLib.buildPackage ( + commonArgs + // { + pname = "logos-execution-zone-wallet-ffi"; + version = "0.1.0"; + cargoExtraArgs = "-p wallet-ffi"; + postInstall = '' + mkdir -p $out/include + cp wallet-ffi/wallet_ffi.h $out/include/ + '' + + pkgs.lib.optionalString pkgs.stdenv.isDarwin '' + install_name_tool -id @rpath/libwallet_ffi.dylib $out/lib/libwallet_ffi.dylib + ''; + } + ); + in + { + wallet = walletFfiPackage; + default = walletFfiPackage; + } + ); + devShells = forAll ( + system: + let + pkgs = mkPkgs system; + walletFfiPackage = self.packages.${system}.wallet; + walletFfiShell = pkgs.mkShell { + inputsFrom = [ walletFfiPackage ]; + }; + in + { + wallet = walletFfiShell; + default = walletFfiShell; + } + ); + }; +} diff --git a/indexer_core/Cargo.toml b/indexer_core/Cargo.toml new file mode 100644 index 00000000..abe1e629 --- /dev/null +++ b/indexer_core/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "indexer_core" +version = "0.1.0" +edition = "2024" +license = { workspace = true } + +[dependencies] +common.workspace = true +bedrock_client.workspace = true + +anyhow.workspace = true +log.workspace = true +serde.workspace = true +tokio.workspace = true +borsh.workspace = true +futures.workspace = true +url.workspace = true +logos-blockchain-core.workspace = true +serde_json.workspace = true diff --git a/indexer_core/src/config.rs b/indexer_core/src/config.rs new file mode 100644 index 00000000..784f5840 --- /dev/null +++ b/indexer_core/src/config.rs @@ -0,0 +1,36 @@ +use std::{fs::File, io::BufReader, path::Path}; + +use anyhow::{Context, Result}; +use bedrock_client::BackoffConfig; +use common::sequencer_client::BasicAuth; +use logos_blockchain_core::mantle::ops::channel::ChannelId; +use serde::{Deserialize, Serialize}; +use url::Url; + +#[derive(Debug, Clone, Serialize, Deserialize)] +/// ToDo: Expand if necessary +pub struct ClientConfig { + pub addr: Url, + pub auth: Option<BasicAuth>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +/// Note: For individual RPC requests we use Fibonacci backoff retry strategy +pub struct IndexerConfig { + pub resubscribe_interval_millis: u64, + pub backoff: BackoffConfig, + pub bedrock_client_config: ClientConfig, + pub sequencer_client_config: ClientConfig, + pub channel_id: ChannelId, +} + +impl IndexerConfig { + pub fn from_path(config_home: &Path) -> Result<IndexerConfig> { + let file = File::open(config_home) + .with_context(|| format!("Failed to open indexer config at {config_home:?}"))?; + let reader = BufReader::new(file); + + serde_json::from_reader(reader) + .with_context(|| format!("Failed to parse indexer config at {config_home:?}")) + } +} diff --git a/indexer_core/src/lib.rs b/indexer_core/src/lib.rs new file mode 100644 index 00000000..ca9ec22f --- /dev/null +++ b/indexer_core/src/lib.rs @@ -0,0 +1,124 @@ +use std::sync::Arc; + +use anyhow::Result; +use bedrock_client::BedrockClient; +use common::{ + block::HashableBlockData, communication::indexer::Message, + rpc_primitives::requests::PostIndexerMessageResponse, sequencer_client::SequencerClient, +}; +use futures::StreamExt; +use log::info; +use logos_blockchain_core::mantle::{ + Op, SignedMantleTx, + ops::channel::{ChannelId, inscribe::InscriptionOp}, +}; +use tokio::sync::RwLock; + +use crate::{config::IndexerConfig, state::IndexerState}; + +pub mod config; +pub mod state; + +pub struct IndexerCore { + pub bedrock_client: BedrockClient, + pub sequencer_client: SequencerClient, + pub config: IndexerConfig, + pub state: IndexerState, +} + +impl IndexerCore { + pub fn new(config: IndexerConfig) -> Result<Self> { + Ok(Self { + bedrock_client: BedrockClient::new( + config.bedrock_client_config.auth.clone().map(Into::into), + config.bedrock_client_config.addr.clone(), + )?, + sequencer_client: SequencerClient::new_with_auth( + config.sequencer_client_config.addr.clone(), + config.sequencer_client_config.auth.clone(), + )?, + config, + // No state setup for now, future task. + state: IndexerState { + latest_seen_block: Arc::new(RwLock::new(0)), + }, + }) + } + + pub async fn subscribe_parse_block_stream(&self) -> Result<()> { + loop { + let mut stream_pinned = Box::pin(self.bedrock_client.get_lib_stream().await?); + + info!("Block stream joined"); + + while let Some(block_info) = stream_pinned.next().await { + let header_id = block_info.header_id; + + info!("Observed L1 block at height {}", block_info.height); + + if let Some(l1_block) = self + .bedrock_client + .get_block_by_id(header_id, &self.config.backoff) + .await? + { + info!("Extracted L1 block at height {}", block_info.height); + + let l2_blocks_parsed = parse_blocks( + l1_block.into_transactions().into_iter(), + &self.config.channel_id, + ); + + for l2_block in l2_blocks_parsed { + // State modification, will be updated in future + { + let mut guard = self.state.latest_seen_block.write().await; + if l2_block.block_id > *guard { + *guard = l2_block.block_id; + } + } + + // Sending data into sequencer, may need to be expanded. + let message = Message::L2BlockFinalized { + l2_block_height: l2_block.block_id, + }; + + let status = self.send_message_to_sequencer(message.clone()).await?; + + info!("Sent message {message:#?} to sequencer; status {status:#?}"); + } + } + } + + // Refetch stream after delay + tokio::time::sleep(std::time::Duration::from_millis( + self.config.resubscribe_interval_millis, + )) + .await; + } + } + + pub async fn send_message_to_sequencer( + &self, + message: Message, + ) -> Result<PostIndexerMessageResponse> { + Ok(self.sequencer_client.post_indexer_message(message).await?) + } +} + +fn parse_blocks( + block_txs: impl Iterator<Item = SignedMantleTx>, + decoded_channel_id: &ChannelId, +) -> impl Iterator<Item = HashableBlockData> { + block_txs.flat_map(|tx| { + tx.mantle_tx.ops.into_iter().filter_map(|op| match op { + Op::ChannelInscribe(InscriptionOp { + channel_id, + inscription, + .. + }) if channel_id == *decoded_channel_id => { + borsh::from_slice::<HashableBlockData>(&inscription).ok() + } + _ => None, + }) + }) +} diff --git a/indexer_core/src/state.rs b/indexer_core/src/state.rs new file mode 100644 index 00000000..bd05971f --- /dev/null +++ b/indexer_core/src/state.rs @@ -0,0 +1,9 @@ +use std::sync::Arc; + +use tokio::sync::RwLock; + +#[derive(Debug, Clone)] +pub struct IndexerState { + // Only one field for now, for testing. + pub latest_seen_block: Arc<RwLock<u64>>, +} diff --git a/indexer_service/Cargo.toml b/indexer_service/Cargo.toml index d3f31de8..6148d544 100644 --- a/indexer_service/Cargo.toml +++ b/indexer_service/Cargo.toml @@ -2,6 +2,7 @@ name = "indexer_service" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] indexer_service_protocol.workspace = true @@ -9,9 +10,13 @@ indexer_service_rpc = { workspace = true, features = ["server"] } clap = { workspace = true, features = ["derive"] } anyhow.workspace = true -tokio.workspace = true +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "signal"] } tokio-util.workspace = true env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true async-trait = "0.1.89" + +[features] +# Return mock responses with generated data for testing purposes +mock-responses = [] diff --git a/indexer_service/protocol/Cargo.toml b/indexer_service/protocol/Cargo.toml index 08add00e..2646086c 100644 --- a/indexer_service/protocol/Cargo.toml +++ b/indexer_service/protocol/Cargo.toml @@ -2,6 +2,7 @@ name = "indexer_service_protocol" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core = { workspace = true, optional = true, features = ["host"] } diff --git a/indexer_service/protocol/src/convert.rs b/indexer_service/protocol/src/convert.rs index 46c8811d..179a25ec 100644 --- a/indexer_service/protocol/src/convert.rs +++ b/indexer_service/protocol/src/convert.rs @@ -381,11 +381,17 @@ impl TryFrom<WitnessSet> for nssa::privacy_preserving_transaction::witness_set:: impl From<nssa::PublicTransaction> for PublicTransaction { fn from(value: nssa::PublicTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::PublicTransaction { + message, + witness_set, + } = value; + Self { - message: value.message().clone().into(), + hash, + message: message.into(), witness_set: WitnessSet { - signatures_and_public_keys: value - .witness_set() + signatures_and_public_keys: witness_set .signatures_and_public_keys() .iter() .map(|(sig, pk)| (sig.clone().into(), pk.clone().into())) @@ -401,6 +407,7 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { fn try_from(value: PublicTransaction) -> Result<Self, Self::Error> { let PublicTransaction { + hash: _, message, witness_set, } = value; @@ -408,6 +415,7 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { signatures_and_public_keys, proof: _, } = witness_set; + Ok(Self::new( message.into(), nssa::public_transaction::WitnessSet::from_raw_parts( @@ -422,9 +430,16 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { impl From<nssa::PrivacyPreservingTransaction> for PrivacyPreservingTransaction { fn from(value: nssa::PrivacyPreservingTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::PrivacyPreservingTransaction { + message, + witness_set, + } = value; + Self { - message: value.message().clone().into(), - witness_set: value.witness_set().clone().into(), + hash, + message: message.into(), + witness_set: witness_set.into(), } } } @@ -434,13 +449,17 @@ impl TryFrom<PrivacyPreservingTransaction> for nssa::PrivacyPreservingTransactio fn try_from(value: PrivacyPreservingTransaction) -> Result<Self, Self::Error> { let PrivacyPreservingTransaction { + hash: _, message, witness_set, } = value; + Ok(Self::new( - message.try_into().map_err(|_| { - nssa::error::NssaError::InvalidInput("Data too big error".to_string()) - })?, + message + .try_into() + .map_err(|err: nssa_core::account::data::DataTooBigError| { + nssa::error::NssaError::InvalidInput(err.to_string()) + })?, witness_set.try_into()?, )) } @@ -448,15 +467,19 @@ impl TryFrom<PrivacyPreservingTransaction> for nssa::PrivacyPreservingTransactio impl From<nssa::ProgramDeploymentTransaction> for ProgramDeploymentTransaction { fn from(value: nssa::ProgramDeploymentTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::ProgramDeploymentTransaction { message } = value; + Self { - message: value.into_message().into(), + hash, + message: message.into(), } } } impl From<ProgramDeploymentTransaction> for nssa::ProgramDeploymentTransaction { fn from(value: ProgramDeploymentTransaction) -> Self { - let ProgramDeploymentTransaction { message } = value; + let ProgramDeploymentTransaction { hash: _, message } = value; Self::new(message.into()) } } @@ -599,12 +622,14 @@ impl TryFrom<common::block::Block> for Block { header, body, bedrock_status, + bedrock_parent_id, } = value; Ok(Self { header: header.into(), body: body.try_into()?, bedrock_status: bedrock_status.into(), + bedrock_parent_id: MantleMsgId(bedrock_parent_id), }) } } @@ -617,12 +642,14 @@ impl TryFrom<Block> for common::block::Block { header, body, bedrock_status, + bedrock_parent_id, } = value; Ok(Self { header: header.try_into()?, body: body.try_into()?, bedrock_status: bedrock_status.into(), + bedrock_parent_id: bedrock_parent_id.0, }) } } diff --git a/indexer_service/protocol/src/lib.rs b/indexer_service/protocol/src/lib.rs index 8189f7d8..c354aa59 100644 --- a/indexer_service/protocol/src/lib.rs +++ b/indexer_service/protocol/src/lib.rs @@ -36,6 +36,7 @@ pub struct Block { pub header: BlockHeader, pub body: BlockBody, pub bedrock_status: BedrockStatus, + pub bedrock_parent_id: MantleMsgId, } #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] @@ -66,14 +67,27 @@ pub enum Transaction { ProgramDeployment(ProgramDeploymentTransaction), } +impl Transaction { + /// Get the hash of the transaction + pub fn hash(&self) -> &self::Hash { + match self { + Transaction::Public(tx) => &tx.hash, + Transaction::PrivacyPreserving(tx) => &tx.hash, + Transaction::ProgramDeployment(tx) => &tx.hash, + } + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PublicTransaction { + pub hash: Hash, pub message: PublicMessage, pub witness_set: WitnessSet, } #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PrivacyPreservingTransaction { + pub hash: Hash, pub message: PrivacyPreservingMessage, pub witness_set: WitnessSet, } @@ -120,6 +134,7 @@ pub struct EncryptedAccountData { #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct ProgramDeploymentTransaction { + pub hash: Hash, pub message: ProgramDeploymentMessage, } @@ -132,7 +147,7 @@ pub struct Ciphertext( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PublicKey( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded public key")] @@ -146,21 +161,21 @@ pub struct EphemeralPublicKey( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Commitment( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded commitment")] pub [u8; 32], ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Nullifier( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded nullifier")] pub [u8; 32], ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct CommitmentSetDigest( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded commitment set digest")] @@ -181,13 +196,20 @@ pub struct Data( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Hash( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded hash")] pub [u8; 32], ); +#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +pub struct MantleMsgId( + #[serde(with = "base64::arr")] + #[schemars(with = "String", description = "base64-encoded Bedrock message id")] + pub [u8; 32], +); + #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub enum BedrockStatus { Pending, diff --git a/indexer_service/rpc/Cargo.toml b/indexer_service/rpc/Cargo.toml index f77c5abf..2bed63ae 100644 --- a/indexer_service/rpc/Cargo.toml +++ b/indexer_service/rpc/Cargo.toml @@ -2,6 +2,7 @@ name = "indexer_service_rpc" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] indexer_service_protocol = { workspace = true } diff --git a/indexer_service/rpc/src/lib.rs b/indexer_service/rpc/src/lib.rs index c1c4a560..def20ad5 100644 --- a/indexer_service/rpc/src/lib.rs +++ b/indexer_service/rpc/src/lib.rs @@ -1,11 +1,14 @@ use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; -use jsonrpsee::{core::SubscriptionResult, proc_macros::rpc, types::ErrorObjectOwned}; +use jsonrpsee::proc_macros::rpc; +#[cfg(feature = "server")] +use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; #[cfg(all(not(feature = "server"), not(feature = "client")))] compile_error!("At least one of `server` or `client` features must be enabled."); -#[cfg_attr(feature = "server", rpc(server))] -#[cfg_attr(feature = "client", rpc(client))] +#[cfg_attr(all(feature = "server", not(feature = "client")), rpc(server))] +#[cfg_attr(all(feature = "client", not(feature = "server")), rpc(client))] +#[cfg_attr(all(feature = "server", feature = "client"), rpc(server, client))] pub trait Rpc { #[method(name = "get_schema")] fn get_schema(&self) -> Result<serde_json::Value, ErrorObjectOwned> { @@ -37,4 +40,15 @@ pub trait Rpc { #[method(name = "getTransaction")] async fn get_transaction(&self, tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned>; + + #[method(name = "getBlocks")] + async fn get_blocks(&self, offset: u32, limit: u32) -> Result<Vec<Block>, ErrorObjectOwned>; + + #[method(name = "getTransactionsByAccount")] + async fn get_transactions_by_account( + &self, + account_id: AccountId, + limit: u32, + offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned>; } diff --git a/indexer_service/src/lib.rs b/indexer_service/src/lib.rs index 1f278a4d..0c18410e 100644 --- a/indexer_service/src/lib.rs +++ b/indexer_service/src/lib.rs @@ -1 +1,4 @@ pub mod service; + +#[cfg(feature = "mock-responses")] +pub mod mock_service; diff --git a/indexer_service/src/main.rs b/indexer_service/src/main.rs index bfdd3259..1c6856ec 100644 --- a/indexer_service/src/main.rs +++ b/indexer_service/src/main.rs @@ -51,7 +51,13 @@ async fn run_server(port: u16) -> Result<jsonrpsee::server::ServerHandle> { info!("Starting Indexer Service RPC server on {addr}"); + #[cfg(not(feature = "mock-responses"))] let handle = server.start(indexer_service::service::IndexerService.into_rpc()); + #[cfg(feature = "mock-responses")] + let handle = server.start( + indexer_service::mock_service::MockIndexerService::new_with_mock_blocks().into_rpc(), + ); + Ok(handle) } diff --git a/indexer_service/src/mock_service.rs b/indexer_service/src/mock_service.rs new file mode 100644 index 00000000..907bdd0e --- /dev/null +++ b/indexer_service/src/mock_service.rs @@ -0,0 +1,271 @@ +use std::collections::HashMap; + +use indexer_service_protocol::{ + Account, AccountId, BedrockStatus, Block, BlockBody, BlockHeader, BlockId, Commitment, + CommitmentSetDigest, Data, EncryptedAccountData, Hash, MantleMsgId, PrivacyPreservingMessage, + PrivacyPreservingTransaction, ProgramDeploymentMessage, ProgramDeploymentTransaction, + PublicMessage, PublicTransaction, Signature, Transaction, WitnessSet, +}; +use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; + +/// A mock implementation of the IndexerService RPC for testing purposes. +pub struct MockIndexerService { + blocks: Vec<Block>, + accounts: HashMap<AccountId, Account>, + transactions: HashMap<Hash, (Transaction, BlockId)>, +} + +impl MockIndexerService { + pub fn new_with_mock_blocks() -> Self { + let mut blocks = Vec::new(); + let mut accounts = HashMap::new(); + let mut transactions = HashMap::new(); + + // Create some mock accounts + let account_ids: Vec<AccountId> = (0..5) + .map(|i| { + let mut value = [0u8; 32]; + value[0] = i; + AccountId { value } + }) + .collect(); + + for (i, account_id) in account_ids.iter().enumerate() { + accounts.insert( + *account_id, + Account { + program_owner: [i as u32; 8], + balance: 1000 * (i as u128 + 1), + data: Data(vec![0xaa, 0xbb, 0xcc]), + nonce: i as u128, + }, + ); + } + + // Create 10 blocks with transactions + let mut prev_hash = Hash([0u8; 32]); + + for block_id in 0..10 { + let block_hash = { + let mut hash = [0u8; 32]; + hash[0] = block_id as u8; + hash[1] = 0xff; + Hash(hash) + }; + + // Create 2-4 transactions per block (mix of Public, PrivacyPreserving, and + // ProgramDeployment) + let num_txs = 2 + (block_id % 3); + let mut block_transactions = Vec::new(); + + for tx_idx in 0..num_txs { + let tx_hash = { + let mut hash = [0u8; 32]; + hash[0] = block_id as u8; + hash[1] = tx_idx as u8; + Hash(hash) + }; + + // Vary transaction types: Public, PrivacyPreserving, or ProgramDeployment + let tx = match (block_id + tx_idx) % 5 { + // Public transactions (most common) + 0 | 1 => Transaction::Public(PublicTransaction { + hash: tx_hash, + message: PublicMessage { + program_id: [1u32; 8], + account_ids: vec![ + account_ids[tx_idx as usize % account_ids.len()], + account_ids[(tx_idx as usize + 1) % account_ids.len()], + ], + nonces: vec![block_id as u128, (block_id + 1) as u128], + instruction_data: vec![1, 2, 3, 4], + }, + witness_set: WitnessSet { + signatures_and_public_keys: vec![], + proof: indexer_service_protocol::Proof(vec![0; 32]), + }, + }), + // PrivacyPreserving transactions + 2 | 3 => Transaction::PrivacyPreserving(PrivacyPreservingTransaction { + hash: tx_hash, + message: PrivacyPreservingMessage { + public_account_ids: vec![ + account_ids[tx_idx as usize % account_ids.len()], + ], + nonces: vec![block_id as u128], + public_post_states: vec![Account { + program_owner: [1u32; 8], + balance: 500, + data: Data(vec![0xdd, 0xee]), + nonce: block_id as u128, + }], + encrypted_private_post_states: vec![EncryptedAccountData { + ciphertext: indexer_service_protocol::Ciphertext(vec![ + 0x01, 0x02, 0x03, 0x04, + ]), + epk: indexer_service_protocol::EphemeralPublicKey(vec![0xaa; 32]), + view_tag: 42, + }], + new_commitments: vec![Commitment([block_id as u8; 32])], + new_nullifiers: vec![( + indexer_service_protocol::Nullifier([tx_idx as u8; 32]), + CommitmentSetDigest([0xff; 32]), + )], + }, + witness_set: WitnessSet { + signatures_and_public_keys: vec![], + proof: indexer_service_protocol::Proof(vec![0; 32]), + }, + }), + // ProgramDeployment transactions (rare) + _ => Transaction::ProgramDeployment(ProgramDeploymentTransaction { + hash: tx_hash, + message: ProgramDeploymentMessage { + bytecode: vec![0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00], /* WASM magic number */ + }, + }), + }; + + transactions.insert(tx_hash, (tx.clone(), block_id)); + block_transactions.push(tx); + } + + let block = Block { + header: BlockHeader { + block_id, + prev_block_hash: prev_hash, + hash: block_hash, + timestamp: 1704067200000 + (block_id * 12000), // ~12 seconds per block + signature: Signature([0u8; 64]), + }, + body: BlockBody { + transactions: block_transactions, + }, + bedrock_status: match block_id { + 0..=5 => BedrockStatus::Finalized, + 6..=8 => BedrockStatus::Safe, + _ => BedrockStatus::Pending, + }, + bedrock_parent_id: MantleMsgId([0; 32]), + }; + + prev_hash = block_hash; + blocks.push(block); + } + + Self { + blocks, + accounts, + transactions, + } + } +} + +// `async_trait` is required by `jsonrpsee` +#[async_trait::async_trait] +impl indexer_service_rpc::RpcServer for MockIndexerService { + async fn subscribe_to_blocks( + &self, + _subscription_sink: jsonrpsee::PendingSubscriptionSink, + _from: BlockId, + ) -> SubscriptionResult { + // Subscription not implemented for mock service + Err("Subscriptions not supported in mock service".into()) + } + + async fn get_block_by_id(&self, block_id: BlockId) -> Result<Block, ErrorObjectOwned> { + self.blocks + .iter() + .find(|b| b.header.block_id == block_id) + .cloned() + .ok_or_else(|| { + ErrorObjectOwned::owned( + -32001, + format!("Block with ID {} not found", block_id), + None::<()>, + ) + }) + } + + async fn get_block_by_hash(&self, block_hash: Hash) -> Result<Block, ErrorObjectOwned> { + self.blocks + .iter() + .find(|b| b.header.hash == block_hash) + .cloned() + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Block with hash not found", None::<()>)) + } + + async fn get_last_block_id(&self) -> Result<BlockId, ErrorObjectOwned> { + self.blocks + .last() + .map(|b| b.header.block_id) + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "No blocks available", None::<()>)) + } + + async fn get_account(&self, account_id: AccountId) -> Result<Account, ErrorObjectOwned> { + self.accounts + .get(&account_id) + .cloned() + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Account not found", None::<()>)) + } + + async fn get_transaction(&self, tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned> { + self.transactions + .get(&tx_hash) + .map(|(tx, _)| tx.clone()) + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Transaction not found", None::<()>)) + } + + async fn get_blocks(&self, offset: u32, limit: u32) -> Result<Vec<Block>, ErrorObjectOwned> { + let offset = offset as usize; + let limit = limit as usize; + let total = self.blocks.len(); + + // Return blocks in reverse order (newest first), with pagination + let start = offset.min(total); + let end = (offset + limit).min(total); + + Ok(self + .blocks + .iter() + .rev() + .skip(start) + .take(end - start) + .cloned() + .collect()) + } + + async fn get_transactions_by_account( + &self, + account_id: AccountId, + limit: u32, + offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned> { + let mut account_txs: Vec<_> = self + .transactions + .values() + .filter(|(tx, _)| match tx { + Transaction::Public(pub_tx) => pub_tx.message.account_ids.contains(&account_id), + Transaction::PrivacyPreserving(priv_tx) => { + priv_tx.message.public_account_ids.contains(&account_id) + } + Transaction::ProgramDeployment(_) => false, + }) + .collect(); + + // Sort by block ID descending (most recent first) + account_txs.sort_by(|a, b| b.1.cmp(&a.1)); + + let start = offset as usize; + if start >= account_txs.len() { + return Ok(Vec::new()); + } + + let end = (start + limit as usize).min(account_txs.len()); + + Ok(account_txs[start..end] + .iter() + .map(|(tx, _)| tx.clone()) + .collect()) + } +} diff --git a/indexer_service/src/service.rs b/indexer_service/src/service.rs index 46c5fb2d..432dcc24 100644 --- a/indexer_service/src/service.rs +++ b/indexer_service/src/service.rs @@ -33,4 +33,17 @@ impl indexer_service_rpc::RpcServer for IndexerService { async fn get_transaction(&self, _tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned> { todo!() } + + async fn get_blocks(&self, _offset: u32, _limit: u32) -> Result<Vec<Block>, ErrorObjectOwned> { + todo!() + } + + async fn get_transactions_by_account( + &self, + _account_id: AccountId, + _limit: u32, + _offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned> { + todo!() + } } diff --git a/integration_tests/Cargo.toml b/integration_tests/Cargo.toml index 9ea8319b..142ad78d 100644 --- a/integration_tests/Cargo.toml +++ b/integration_tests/Cargo.toml @@ -2,6 +2,7 @@ name = "integration_tests" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core = { workspace = true, features = ["host"] } @@ -11,8 +12,12 @@ sequencer_runner.workspace = true wallet.workspace = true common.workspace = true key_protocol.workspace = true +indexer_core.workspace = true +wallet-ffi.workspace = true +serde_json.workspace = true token_core.workspace = true +url.workspace = true anyhow.workspace = true env_logger.workspace = true log.workspace = true diff --git a/integration_tests/configs/indexer/indexer_config.json b/integration_tests/configs/indexer/indexer_config.json new file mode 100644 index 00000000..fd5309b2 --- /dev/null +++ b/integration_tests/configs/indexer/indexer_config.json @@ -0,0 +1,17 @@ +{ + "bedrock_client_config": { + "addr": "http://127.0.0.1:8080", + "auth": { + "username": "user" + } + }, + "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", + "backoff": { + "max_retries": 10, + "start_delay_millis": 100 + }, + "resubscribe_interval_millis": 1000, + "sequencer_client_config": { + "addr": "will_be_replaced_in_runtime" + } +} \ No newline at end of file diff --git a/integration_tests/configs/sequencer/bedrock_local_attached/sequencer_config.json b/integration_tests/configs/sequencer/bedrock_local_attached/sequencer_config.json new file mode 100644 index 00000000..3253115b --- /dev/null +++ b/integration_tests/configs/sequencer/bedrock_local_attached/sequencer_config.json @@ -0,0 +1,165 @@ +{ + "home": "", + "override_rust_log": null, + "genesis_id": 1, + "is_genesis_random": true, + "max_num_tx_in_block": 20, + "mempool_max_size": 10000, + "block_create_timeout_millis": 10000, + "port": 0, + "initial_accounts": [ + { + "account_id": "BLgCRDXYdQPMMWVHYRFGQZbgeHx9frkipa8GtpG2Syqy", + "balance": 10000 + }, + { + "account_id": "Gj1mJy5W7J5pfmLRujmQaLfLMWidNxQ6uwnhb666ZwHw", + "balance": 20000 + } + ], + "initial_commitments": [ + { + "npk": [ + 63, + 202, + 178, + 231, + 183, + 82, + 237, + 212, + 216, + 221, + 215, + 255, + 153, + 101, + 177, + 161, + 254, + 210, + 128, + 122, + 54, + 190, + 230, + 151, + 183, + 64, + 225, + 229, + 113, + 1, + 228, + 97 + ], + "account": { + "program_owner": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "balance": 10000, + "data": [], + "nonce": 0 + } + }, + { + "npk": [ + 192, + 251, + 166, + 243, + 167, + 236, + 84, + 249, + 35, + 136, + 130, + 172, + 219, + 225, + 161, + 139, + 229, + 89, + 243, + 125, + 194, + 213, + 209, + 30, + 23, + 174, + 100, + 244, + 124, + 74, + 140, + 47 + ], + "account": { + "program_owner": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "balance": 20000, + "data": [], + "nonce": 0 + } + } + ], + "signing_key": [ + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37, + 37 + ], + "bedrock_config": { + "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", + "node_url": "http://127.0.0.1:8080", + "auth": { + "username": "user" + } + } +} diff --git a/integration_tests/configs/sequencer/sequencer_config.json b/integration_tests/configs/sequencer/detached/sequencer_config.json similarity index 98% rename from integration_tests/configs/sequencer/sequencer_config.json rename to integration_tests/configs/sequencer/detached/sequencer_config.json index 575d3de3..5c642d37 100644 --- a/integration_tests/configs/sequencer/sequencer_config.json +++ b/integration_tests/configs/sequencer/detached/sequencer_config.json @@ -6,6 +6,7 @@ "max_num_tx_in_block": 20, "mempool_max_size": 10000, "block_create_timeout_millis": 10000, + "retry_pending_blocks_timeout_millis": 240000, "port": 0, "initial_accounts": [ { diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 12d718ec..fbdd233f 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -3,19 +3,21 @@ use std::{net::SocketAddr, path::PathBuf, sync::LazyLock}; use actix_web::dev::ServerHandle; -use anyhow::{Context as _, Result}; +use anyhow::{Context, Result}; use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; use common::{ sequencer_client::SequencerClient, transaction::{EncodedTransaction, NSSATransaction}, }; use futures::FutureExt as _; +use indexer_core::{IndexerCore, config::IndexerConfig}; use log::debug; use nssa::PrivacyPreservingTransaction; use nssa_core::Commitment; use sequencer_core::config::SequencerConfig; use tempfile::TempDir; use tokio::task::JoinHandle; +use url::Url; use wallet::{WalletCore, config::WalletConfigOverrides}; // TODO: Remove this and control time from tests @@ -38,40 +40,71 @@ static LOGGER: LazyLock<()> = LazyLock::new(env_logger::init); pub struct TestContext { sequencer_server_handle: ServerHandle, sequencer_loop_handle: JoinHandle<Result<()>>, + sequencer_retry_pending_blocks_handle: JoinHandle<Result<()>>, + indexer_loop_handle: Option<JoinHandle<Result<()>>>, sequencer_client: SequencerClient, wallet: WalletCore, + wallet_password: String, _temp_sequencer_dir: TempDir, _temp_wallet_dir: TempDir, } impl TestContext { - /// Create new test context. + /// Create new test context in detached mode. Default. pub async fn new() -> Result<Self> { let manifest_dir = env!("CARGO_MANIFEST_DIR"); let sequencer_config_path = - PathBuf::from(manifest_dir).join("configs/sequencer/sequencer_config.json"); + PathBuf::from(manifest_dir).join("configs/sequencer/detached/sequencer_config.json"); let sequencer_config = SequencerConfig::from_path(&sequencer_config_path) .context("Failed to create sequencer config from file")?; - Self::new_with_sequencer_config(sequencer_config).await + Self::new_with_sequencer_and_maybe_indexer_configs(sequencer_config, None).await } - /// Create new test context with custom sequencer config. + /// Create new test context in local bedrock node attached mode. + pub async fn new_bedrock_local_attached() -> Result<Self> { + let manifest_dir = env!("CARGO_MANIFEST_DIR"); + + let sequencer_config_path = PathBuf::from(manifest_dir) + .join("configs/sequencer/bedrock_local_attached/sequencer_config.json"); + + let sequencer_config = SequencerConfig::from_path(&sequencer_config_path) + .context("Failed to create sequencer config from file")?; + + let indexer_config_path = + PathBuf::from(manifest_dir).join("configs/indexer/indexer_config.json"); + + let indexer_config = IndexerConfig::from_path(&indexer_config_path) + .context("Failed to create indexer config from file")?; + + Self::new_with_sequencer_and_maybe_indexer_configs(sequencer_config, Some(indexer_config)) + .await + } + + /// Create new test context with custom sequencer config and maybe indexer config. /// /// `home` and `port` fields of the provided config will be overridden to meet tests parallelism /// requirements. - pub async fn new_with_sequencer_config(sequencer_config: SequencerConfig) -> Result<Self> { + pub async fn new_with_sequencer_and_maybe_indexer_configs( + sequencer_config: SequencerConfig, + indexer_config: Option<IndexerConfig>, + ) -> Result<Self> { // Ensure logger is initialized only once *LOGGER; debug!("Test context setup"); - let (sequencer_server_handle, sequencer_addr, sequencer_loop_handle, temp_sequencer_dir) = - Self::setup_sequencer(sequencer_config) - .await - .context("Failed to setup sequencer")?; + let ( + sequencer_server_handle, + sequencer_addr, + sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, + temp_sequencer_dir, + ) = Self::setup_sequencer(sequencer_config) + .await + .context("Failed to setup sequencer")?; // Convert 0.0.0.0 to 127.0.0.1 for client connections // When binding to port 0, the server binds to 0.0.0.0:<random_port> @@ -82,26 +115,60 @@ impl TestContext { format!("http://{sequencer_addr}") }; - let (wallet, temp_wallet_dir) = Self::setup_wallet(sequencer_addr.clone()) + let (wallet, temp_wallet_dir, wallet_password) = Self::setup_wallet(sequencer_addr.clone()) .await .context("Failed to setup wallet")?; - let sequencer_client = - SequencerClient::new(sequencer_addr).context("Failed to create sequencer client")?; + let sequencer_client = SequencerClient::new( + Url::parse(&sequencer_addr).context("Failed to parse sequencer addr")?, + ) + .context("Failed to create sequencer client")?; - Ok(Self { - sequencer_server_handle, - sequencer_loop_handle, - sequencer_client, - wallet, - _temp_sequencer_dir: temp_sequencer_dir, - _temp_wallet_dir: temp_wallet_dir, - }) + if let Some(mut indexer_config) = indexer_config { + indexer_config.sequencer_client_config.addr = + Url::parse(&sequencer_addr).context("Failed to parse sequencer addr")?; + + let indexer_core = IndexerCore::new(indexer_config)?; + + let indexer_loop_handle = Some(tokio::spawn(async move { + indexer_core.subscribe_parse_block_stream().await + })); + + Ok(Self { + sequencer_server_handle, + sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, + indexer_loop_handle, + sequencer_client, + wallet, + _temp_sequencer_dir: temp_sequencer_dir, + _temp_wallet_dir: temp_wallet_dir, + wallet_password, + }) + } else { + Ok(Self { + sequencer_server_handle, + sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, + indexer_loop_handle: None, + sequencer_client, + wallet, + _temp_sequencer_dir: temp_sequencer_dir, + _temp_wallet_dir: temp_wallet_dir, + wallet_password, + }) + } } async fn setup_sequencer( mut config: SequencerConfig, - ) -> Result<(ServerHandle, SocketAddr, JoinHandle<Result<()>>, TempDir)> { + ) -> Result<( + ServerHandle, + SocketAddr, + JoinHandle<Result<()>>, + JoinHandle<Result<()>>, + TempDir, + )> { let temp_sequencer_dir = tempfile::tempdir().context("Failed to create temp dir for sequencer home")?; @@ -113,18 +180,23 @@ impl TestContext { // Setting port to 0 lets the OS choose a free port for us config.port = 0; - let (sequencer_server_handle, sequencer_addr, sequencer_loop_handle) = - sequencer_runner::startup_sequencer(config).await?; + let ( + sequencer_server_handle, + sequencer_addr, + sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, + ) = sequencer_runner::startup_sequencer(config).await?; Ok(( sequencer_server_handle, sequencer_addr, sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, temp_sequencer_dir, )) } - async fn setup_wallet(sequencer_addr: String) -> Result<(WalletCore, TempDir)> { + async fn setup_wallet(sequencer_addr: String) -> Result<(WalletCore, TempDir, String)> { let manifest_dir = env!("CARGO_MANIFEST_DIR"); let wallet_config_source_path = PathBuf::from(manifest_dir).join("configs/wallet/wallet_config.json"); @@ -142,11 +214,12 @@ impl TestContext { ..Default::default() }; + let wallet_password = "test_pass".to_owned(); let wallet = WalletCore::new_init_storage( config_path, storage_path, Some(config_overrides), - "test_pass".to_owned(), + wallet_password.clone(), ) .context("Failed to init wallet")?; wallet @@ -154,7 +227,7 @@ impl TestContext { .await .context("Failed to store wallet persistent data")?; - Ok((wallet, temp_wallet_dir)) + Ok((wallet, temp_wallet_dir, wallet_password)) } /// Get reference to the wallet. @@ -162,6 +235,10 @@ impl TestContext { &self.wallet } + pub fn wallet_password(&self) -> &str { + &self.wallet_password + } + /// Get mutable reference to the wallet. pub fn wallet_mut(&mut self) -> &mut WalletCore { &mut self.wallet @@ -180,19 +257,40 @@ impl Drop for TestContext { let Self { sequencer_server_handle, sequencer_loop_handle, + sequencer_retry_pending_blocks_handle, + indexer_loop_handle, sequencer_client: _, wallet: _, _temp_sequencer_dir, _temp_wallet_dir, + wallet_password: _, } = self; sequencer_loop_handle.abort(); + sequencer_retry_pending_blocks_handle.abort(); + if let Some(indexer_loop_handle) = indexer_loop_handle { + indexer_loop_handle.abort(); + } // Can't wait here as Drop can't be async, but anyway stop signal should be sent sequencer_server_handle.stop(true).now_or_never(); } } +/// A test context to be used in normal #[test] tests +pub struct BlockingTestContext { + pub ctx: TestContext, + pub runtime: tokio::runtime::Runtime, +} + +impl BlockingTestContext { + pub fn new() -> Result<Self> { + let runtime = tokio::runtime::Runtime::new().unwrap(); + let ctx = runtime.block_on(TestContext::new())?; + Ok(Self { ctx, runtime }) + } +} + pub fn format_public_account_id(account_id: &str) -> String { format!("Public/{account_id}") } diff --git a/integration_tests/tests/indexer.rs b/integration_tests/tests/indexer.rs new file mode 100644 index 00000000..b25c887b --- /dev/null +++ b/integration_tests/tests/indexer.rs @@ -0,0 +1,23 @@ +use anyhow::Result; +use integration_tests::TestContext; +use log::info; +use tokio::test; + +#[ignore = "needs complicated setup"] +#[test] +// To run this test properly, you need nomos node running in the background. +// For instructions in building nomos node, refer to [this](https://github.com/logos-blockchain/logos-blockchain?tab=readme-ov-file#running-a-logos-blockchain-node). +// +// Recommended to run node locally from build binary. +async fn indexer_run_local_node() -> Result<()> { + let _ctx = TestContext::new_bedrock_local_attached().await?; + + info!("Let's observe behaviour"); + + tokio::time::sleep(std::time::Duration::from_secs(180)).await; + + // No way to check state of indexer now + // When it will be a service, then it will become possible. + + Ok(()) +} diff --git a/integration_tests/tests/tps.rs b/integration_tests/tests/tps.rs index 3fdc8ac8..5fc09c4c 100644 --- a/integration_tests/tests/tps.rs +++ b/integration_tests/tests/tps.rs @@ -25,7 +25,11 @@ pub async fn tps_test() -> Result<()> { let target_tps = 12; let tps_test = TpsTestManager::new(target_tps, num_transactions); - let ctx = TestContext::new_with_sequencer_config(tps_test.generate_sequencer_config()).await?; + let ctx = TestContext::new_with_sequencer_and_maybe_indexer_configs( + tps_test.generate_sequencer_config(), + None, + ) + .await?; let target_time = tps_test.target_time(); info!( @@ -186,6 +190,7 @@ impl TpsTestManager { initial_commitments: vec![initial_commitment], signing_key: [37; 32], bedrock_config: None, + retry_pending_blocks_timeout_millis: 1000 * 60 * 4, } } } diff --git a/integration_tests/tests/wallet_ffi.rs b/integration_tests/tests/wallet_ffi.rs new file mode 100644 index 00000000..bb6b9805 --- /dev/null +++ b/integration_tests/tests/wallet_ffi.rs @@ -0,0 +1,618 @@ +use std::{ + collections::HashSet, + ffi::{CStr, CString, c_char}, + io::Write, + time::Duration, +}; + +use anyhow::Result; +use integration_tests::{ + ACC_RECEIVER, ACC_SENDER, ACC_SENDER_PRIVATE, BlockingTestContext, + TIME_TO_WAIT_FOR_BLOCK_SECONDS, +}; +use log::info; +use nssa::{Account, AccountId, PublicKey, program::Program}; +use nssa_core::program::DEFAULT_PROGRAM_ID; +use tempfile::tempdir; +use wallet::WalletCore; +use wallet_ffi::{ + FfiAccount, FfiAccountList, FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, + FfiTransferResult, WalletHandle, error, +}; + +unsafe extern "C" { + fn wallet_ffi_create_new( + config_path: *const c_char, + storage_path: *const c_char, + password: *const c_char, + ) -> *mut WalletHandle; + + fn wallet_ffi_destroy(handle: *mut WalletHandle); + + fn wallet_ffi_create_account_public( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, + ) -> error::WalletFfiError; + + fn wallet_ffi_create_account_private( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, + ) -> error::WalletFfiError; + + fn wallet_ffi_list_accounts( + handle: *mut WalletHandle, + out_list: *mut FfiAccountList, + ) -> error::WalletFfiError; + + fn wallet_ffi_free_account_list(list: *mut FfiAccountList); + + fn wallet_ffi_get_balance( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + is_public: bool, + out_balance: *mut [u8; 16], + ) -> error::WalletFfiError; + + fn wallet_ffi_get_account_public( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_account: *mut FfiAccount, + ) -> error::WalletFfiError; + + fn wallet_ffi_free_account_data(account: *mut FfiAccount); + + fn wallet_ffi_get_public_account_key( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_public_key: *mut FfiPublicAccountKey, + ) -> error::WalletFfiError; + + fn wallet_ffi_get_private_account_keys( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_keys: *mut FfiPrivateAccountKeys, + ) -> error::WalletFfiError; + + fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAccountKeys); + + fn wallet_ffi_account_id_to_base58(account_id: *const FfiBytes32) -> *mut std::ffi::c_char; + + fn wallet_ffi_free_string(ptr: *mut c_char); + + fn wallet_ffi_account_id_from_base58( + base58_str: *const std::ffi::c_char, + out_account_id: *mut FfiBytes32, + ) -> error::WalletFfiError; + + fn wallet_ffi_transfer_public( + handle: *mut WalletHandle, + from: *const FfiBytes32, + to: *const FfiBytes32, + amount: *const [u8; 16], + out_result: *mut FfiTransferResult, + ) -> error::WalletFfiError; + + fn wallet_ffi_free_transfer_result(result: *mut FfiTransferResult); + + fn wallet_ffi_register_public_account( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_result: *mut FfiTransferResult, + ) -> error::WalletFfiError; +} + +fn new_wallet_ffi_with_test_context_config(ctx: &BlockingTestContext) -> *mut WalletHandle { + let tempdir = tempfile::tempdir().unwrap(); + let config_path = tempdir.path().join("wallet_config.json"); + let storage_path = tempdir.path().join("storage.json"); + let mut config = ctx.ctx.wallet().config().to_owned(); + if let Some(config_overrides) = ctx.ctx.wallet().config_overrides().clone() { + config.apply_overrides(config_overrides); + } + let mut file = std::fs::OpenOptions::new() + .write(true) + .create(true) + .truncate(true) + .open(&config_path) + .unwrap(); + + let config_with_overrides_serialized = serde_json::to_vec_pretty(&config).unwrap(); + + file.write_all(&config_with_overrides_serialized).unwrap(); + + let config_path = CString::new(config_path.to_str().unwrap()).unwrap(); + let storage_path = CString::new(storage_path.to_str().unwrap()).unwrap(); + let password = CString::new(ctx.ctx.wallet_password()).unwrap(); + + unsafe { + wallet_ffi_create_new( + config_path.as_ptr(), + storage_path.as_ptr(), + password.as_ptr(), + ) + } +} + +fn new_wallet_ffi_with_default_config(password: &str) -> *mut WalletHandle { + let tempdir = tempdir().unwrap(); + let config_path = tempdir.path().join("wallet_config.json"); + let storage_path = tempdir.path().join("storage.json"); + let config_path_c = CString::new(config_path.to_str().unwrap()).unwrap(); + let storage_path_c = CString::new(storage_path.to_str().unwrap()).unwrap(); + let password = CString::new(password).unwrap(); + + unsafe { + wallet_ffi_create_new( + config_path_c.as_ptr(), + storage_path_c.as_ptr(), + password.as_ptr(), + ) + } +} + +fn new_wallet_rust_with_default_config(password: &str) -> WalletCore { + let tempdir = tempdir().unwrap(); + let config_path = tempdir.path().join("wallet_config.json"); + let storage_path = tempdir.path().join("storage.json"); + + WalletCore::new_init_storage( + config_path.to_path_buf(), + storage_path.to_path_buf(), + None, + password.to_string(), + ) + .unwrap() +} + +#[test] +fn test_wallet_ffi_create_public_accounts() { + let password = "password_for_tests"; + let n_accounts = 10; + // First `n_accounts` public accounts created with Rust wallet + let new_public_account_ids_rust = { + let mut account_ids = Vec::new(); + + let mut wallet_rust = new_wallet_rust_with_default_config(password); + for _ in 0..n_accounts { + let account_id = wallet_rust.create_new_account_public(None).0; + account_ids.push(*account_id.value()); + } + account_ids + }; + + // First `n_accounts` public accounts created with wallet FFI + let new_public_account_ids_ffi = unsafe { + let mut account_ids = Vec::new(); + + let wallet_ffi_handle = new_wallet_ffi_with_default_config(password); + for _ in 0..n_accounts { + let mut out_account_id = FfiBytes32::from_bytes([0; 32]); + wallet_ffi_create_account_public( + wallet_ffi_handle, + (&mut out_account_id) as *mut FfiBytes32, + ); + account_ids.push(out_account_id.data); + } + wallet_ffi_destroy(wallet_ffi_handle); + account_ids + }; + + assert_eq!(new_public_account_ids_ffi, new_public_account_ids_rust); +} + +#[test] +fn test_wallet_ffi_create_private_accounts() { + let password = "password_for_tests"; + let n_accounts = 10; + // First `n_accounts` private accounts created with Rust wallet + let new_private_account_ids_rust = { + let mut account_ids = Vec::new(); + + let mut wallet_rust = new_wallet_rust_with_default_config(password); + for _ in 0..n_accounts { + let account_id = wallet_rust.create_new_account_private(None).0; + account_ids.push(*account_id.value()); + } + account_ids + }; + + // First `n_accounts` private accounts created with wallet FFI + let new_private_account_ids_ffi = unsafe { + let mut account_ids = Vec::new(); + + let wallet_ffi_handle = new_wallet_ffi_with_default_config(password); + for _ in 0..n_accounts { + let mut out_account_id = FfiBytes32::from_bytes([0; 32]); + wallet_ffi_create_account_private( + wallet_ffi_handle, + (&mut out_account_id) as *mut FfiBytes32, + ); + account_ids.push(out_account_id.data); + } + wallet_ffi_destroy(wallet_ffi_handle); + account_ids + }; + + assert_eq!(new_private_account_ids_ffi, new_private_account_ids_rust) +} + +#[test] +fn test_wallet_ffi_list_accounts() { + let password = "password_for_tests"; + + // Create the wallet FFI + let wallet_ffi_handle = unsafe { + let handle = new_wallet_ffi_with_default_config(password); + // Create 5 public accounts and 5 private accounts + for _ in 0..5 { + let mut out_account_id = FfiBytes32::from_bytes([0; 32]); + wallet_ffi_create_account_public(handle, (&mut out_account_id) as *mut FfiBytes32); + wallet_ffi_create_account_private(handle, (&mut out_account_id) as *mut FfiBytes32); + } + + handle + }; + + // Create the wallet Rust + let wallet_rust = { + let mut wallet = new_wallet_rust_with_default_config(password); + // Create 5 public accounts and 5 private accounts + for _ in 0..5 { + wallet.create_new_account_public(None); + wallet.create_new_account_private(None); + } + wallet + }; + + // Get the account list with FFI method + let mut wallet_ffi_account_list = unsafe { + let mut out_list = FfiAccountList::default(); + wallet_ffi_list_accounts(wallet_ffi_handle, (&mut out_list) as *mut FfiAccountList); + out_list + }; + + let wallet_rust_account_ids = wallet_rust + .storage() + .user_data + .account_ids() + .collect::<Vec<_>>(); + + // Assert same number of elements between Rust and FFI result + assert_eq!(wallet_rust_account_ids.len(), wallet_ffi_account_list.count); + + let wallet_ffi_account_list_slice = unsafe { + core::slice::from_raw_parts( + wallet_ffi_account_list.entries, + wallet_ffi_account_list.count, + ) + }; + + // Assert same account ids between Rust and FFI result + assert_eq!( + wallet_rust_account_ids + .iter() + .map(|id| id.value()) + .collect::<HashSet<_>>(), + wallet_ffi_account_list_slice + .iter() + .map(|entry| &entry.account_id.data) + .collect::<HashSet<_>>() + ); + + // Assert `is_pub` flag is correct in the FFI result + for entry in wallet_ffi_account_list_slice.iter() { + let account_id = AccountId::new(entry.account_id.data); + let is_pub_default_in_rust_wallet = wallet_rust + .storage() + .user_data + .default_pub_account_signing_keys + .contains_key(&account_id); + let is_pub_key_tree_wallet_rust = wallet_rust + .storage() + .user_data + .public_key_tree + .account_id_map + .contains_key(&account_id); + + let is_public_in_rust_wallet = is_pub_default_in_rust_wallet || is_pub_key_tree_wallet_rust; + + assert_eq!(entry.is_public, is_public_in_rust_wallet); + } + + unsafe { + wallet_ffi_free_account_list((&mut wallet_ffi_account_list) as *mut FfiAccountList); + wallet_ffi_destroy(wallet_ffi_handle); + } +} + +#[test] +fn test_wallet_ffi_get_balance_public() -> Result<()> { + let ctx = BlockingTestContext::new()?; + let account_id: AccountId = ACC_SENDER.parse().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + + let balance = unsafe { + let mut out_balance: [u8; 16] = [0; 16]; + let ffi_account_id = FfiBytes32::from(&account_id); + let _result = wallet_ffi_get_balance( + wallet_ffi_handle, + (&ffi_account_id) as *const FfiBytes32, + true, + (&mut out_balance) as *mut [u8; 16], + ); + u128::from_le_bytes(out_balance) + }; + assert_eq!(balance, 10000); + + info!("Successfully retrieved account balance"); + + unsafe { + wallet_ffi_destroy(wallet_ffi_handle); + } + + Ok(()) +} + +#[test] +fn test_wallet_ffi_get_account_public() -> Result<()> { + let ctx = BlockingTestContext::new()?; + let account_id: AccountId = ACC_SENDER.parse().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + let mut out_account = FfiAccount::default(); + + let account: Account = unsafe { + let ffi_account_id = FfiBytes32::from(&account_id); + let _result = wallet_ffi_get_account_public( + wallet_ffi_handle, + (&ffi_account_id) as *const FfiBytes32, + (&mut out_account) as *mut FfiAccount, + ); + (&out_account).try_into().unwrap() + }; + + assert_eq!( + account.program_owner, + Program::authenticated_transfer_program().id() + ); + assert_eq!(account.balance, 10000); + assert!(account.data.is_empty()); + assert_eq!(account.nonce, 0); + + unsafe { + wallet_ffi_free_account_data((&mut out_account) as *mut FfiAccount); + wallet_ffi_destroy(wallet_ffi_handle); + } + + info!("Successfully retrieved account with correct details"); + + Ok(()) +} + +#[test] +fn test_wallet_ffi_get_public_account_keys() -> Result<()> { + let ctx = BlockingTestContext::new()?; + let account_id: AccountId = ACC_SENDER.parse().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + let mut out_key = FfiPublicAccountKey::default(); + + let key: PublicKey = unsafe { + let ffi_account_id = FfiBytes32::from(&account_id); + let _result = wallet_ffi_get_public_account_key( + wallet_ffi_handle, + (&ffi_account_id) as *const FfiBytes32, + (&mut out_key) as *mut FfiPublicAccountKey, + ); + (&out_key).try_into().unwrap() + }; + + let expected_key = { + let private_key = ctx + .ctx + .wallet() + .get_account_public_signing_key(&account_id) + .unwrap(); + PublicKey::new_from_private_key(private_key) + }; + + assert_eq!(key, expected_key); + + info!("Successfully retrieved account key"); + + unsafe { + wallet_ffi_destroy(wallet_ffi_handle); + } + + Ok(()) +} + +#[test] +fn test_wallet_ffi_get_private_account_keys() -> Result<()> { + let ctx = BlockingTestContext::new()?; + let account_id: AccountId = ACC_SENDER_PRIVATE.parse().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + let mut keys = FfiPrivateAccountKeys::default(); + + unsafe { + let ffi_account_id = FfiBytes32::from(&account_id); + let _result = wallet_ffi_get_private_account_keys( + wallet_ffi_handle, + (&ffi_account_id) as *const FfiBytes32, + (&mut keys) as *mut FfiPrivateAccountKeys, + ); + }; + + let key_chain = &ctx + .ctx + .wallet() + .storage() + .user_data + .get_private_account(&account_id) + .unwrap() + .0; + + let expected_npk = &key_chain.nullifer_public_key; + let expected_ivk = &key_chain.incoming_viewing_public_key; + + assert_eq!(&keys.npk(), expected_npk); + assert_eq!(&keys.ivk().unwrap(), expected_ivk); + + unsafe { + wallet_ffi_free_private_account_keys((&mut keys) as *mut FfiPrivateAccountKeys); + wallet_ffi_destroy(wallet_ffi_handle); + } + + info!("Successfully retrieved account keys"); + + Ok(()) +} + +#[test] +fn test_wallet_ffi_account_id_to_base58() { + let account_id_str = ACC_SENDER; + let account_id: AccountId = account_id_str.parse().unwrap(); + let ffi_bytes: FfiBytes32 = (&account_id).into(); + let ptr = unsafe { wallet_ffi_account_id_to_base58((&ffi_bytes) as *const FfiBytes32) }; + + let ffi_result = unsafe { CStr::from_ptr(ptr).to_str().unwrap() }; + + assert_eq!(account_id_str, ffi_result); + + unsafe { + wallet_ffi_free_string(ptr); + } +} + +#[test] +fn test_wallet_ffi_base58_to_account_id() { + let account_id_str = ACC_SENDER; + let account_id_c_str = CString::new(account_id_str).unwrap(); + let account_id: AccountId = unsafe { + let mut out_account_id_bytes = FfiBytes32::default(); + wallet_ffi_account_id_from_base58( + account_id_c_str.as_ptr(), + (&mut out_account_id_bytes) as *mut FfiBytes32, + ); + out_account_id_bytes.into() + }; + + let expected_account_id = account_id_str.parse().unwrap(); + + assert_eq!(account_id, expected_account_id); +} + +#[test] +fn test_wallet_ffi_init_public_account_auth_transfer() -> Result<()> { + let ctx = BlockingTestContext::new().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + + // Create a new uninitialized public account + let mut out_account_id = FfiBytes32::from_bytes([0; 32]); + unsafe { + wallet_ffi_create_account_public( + wallet_ffi_handle, + (&mut out_account_id) as *mut FfiBytes32, + ); + } + + // Check its program owner is the default program id + let account: Account = unsafe { + let mut out_account = FfiAccount::default(); + let _result = wallet_ffi_get_account_public( + wallet_ffi_handle, + (&out_account_id) as *const FfiBytes32, + (&mut out_account) as *mut FfiAccount, + ); + (&out_account).try_into().unwrap() + }; + assert_eq!(account.program_owner, DEFAULT_PROGRAM_ID); + + // Call the init funciton + let mut transfer_result = FfiTransferResult::default(); + unsafe { + wallet_ffi_register_public_account( + wallet_ffi_handle, + (&out_account_id) as *const FfiBytes32, + (&mut transfer_result) as *mut FfiTransferResult, + ); + } + + info!("Waiting for next block creation"); + std::thread::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)); + + // Check that the program owner is now the authenticated transfer program + let account: Account = unsafe { + let mut out_account = FfiAccount::default(); + let _result = wallet_ffi_get_account_public( + wallet_ffi_handle, + (&out_account_id) as *const FfiBytes32, + (&mut out_account) as *mut FfiAccount, + ); + (&out_account).try_into().unwrap() + }; + assert_eq!( + account.program_owner, + Program::authenticated_transfer_program().id() + ); + + unsafe { + wallet_ffi_free_transfer_result((&mut transfer_result) as *mut FfiTransferResult); + wallet_ffi_destroy(wallet_ffi_handle); + } + + Ok(()) +} + +#[test] +fn test_wallet_ffi_transfer_public() -> Result<()> { + let ctx = BlockingTestContext::new().unwrap(); + let wallet_ffi_handle = new_wallet_ffi_with_test_context_config(&ctx); + let from: FfiBytes32 = (&ACC_SENDER.parse::<AccountId>().unwrap()).into(); + let to: FfiBytes32 = (&ACC_RECEIVER.parse::<AccountId>().unwrap()).into(); + let amount: [u8; 16] = 100u128.to_le_bytes(); + + let mut transfer_result = FfiTransferResult::default(); + unsafe { + wallet_ffi_transfer_public( + wallet_ffi_handle, + (&from) as *const FfiBytes32, + (&to) as *const FfiBytes32, + (&amount) as *const [u8; 16], + (&mut transfer_result) as *mut FfiTransferResult, + ); + } + + info!("Waiting for next block creation"); + std::thread::sleep(Duration::from_secs(TIME_TO_WAIT_FOR_BLOCK_SECONDS)); + + let from_balance = unsafe { + let mut out_balance: [u8; 16] = [0; 16]; + let _result = wallet_ffi_get_balance( + wallet_ffi_handle, + (&from) as *const FfiBytes32, + true, + (&mut out_balance) as *mut [u8; 16], + ); + u128::from_le_bytes(out_balance) + }; + + let to_balance = unsafe { + let mut out_balance: [u8; 16] = [0; 16]; + let _result = wallet_ffi_get_balance( + wallet_ffi_handle, + (&to) as *const FfiBytes32, + true, + (&mut out_balance) as *mut [u8; 16], + ); + u128::from_le_bytes(out_balance) + }; + + assert_eq!(from_balance, 9900); + assert_eq!(to_balance, 20100); + + unsafe { + wallet_ffi_free_transfer_result((&mut transfer_result) as *mut FfiTransferResult); + wallet_ffi_destroy(wallet_ffi_handle); + } + + Ok(()) +} diff --git a/key_protocol/Cargo.toml b/key_protocol/Cargo.toml index 39c1028a..08e29bd4 100644 --- a/key_protocol/Cargo.toml +++ b/key_protocol/Cargo.toml @@ -2,6 +2,7 @@ name = "key_protocol" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa.workspace = true diff --git a/mempool/Cargo.toml b/mempool/Cargo.toml index 46014389..ee7e884c 100644 --- a/mempool/Cargo.toml +++ b/mempool/Cargo.toml @@ -2,6 +2,7 @@ name = "mempool" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] tokio = { workspace = true, features = ["sync"] } diff --git a/nssa/Cargo.toml b/nssa/Cargo.toml index a1b30e7f..2f7a97d4 100644 --- a/nssa/Cargo.toml +++ b/nssa/Cargo.toml @@ -2,6 +2,7 @@ name = "nssa" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core = { workspace = true, features = ["host"] } diff --git a/nssa/core/Cargo.toml b/nssa/core/Cargo.toml index 473cde90..f00f2857 100644 --- a/nssa/core/Cargo.toml +++ b/nssa/core/Cargo.toml @@ -2,6 +2,7 @@ name = "nssa_core" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] risc0-zkvm.workspace = true diff --git a/nssa/core/src/commitment.rs b/nssa/core/src/commitment.rs index 52344177..b08e3005 100644 --- a/nssa/core/src/commitment.rs +++ b/nssa/core/src/commitment.rs @@ -5,7 +5,10 @@ use serde::{Deserialize, Serialize}; use crate::{NullifierPublicKey, account::Account}; #[derive(Serialize, Deserialize, BorshSerialize, BorshDeserialize)] -#[cfg_attr(any(feature = "host", test), derive(Debug, Clone, PartialEq, Eq, Hash))] +#[cfg_attr( + any(feature = "host", test), + derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord) +)] pub struct Commitment(pub(super) [u8; 32]); /// A commitment to all zero data. diff --git a/nssa/core/src/nullifier.rs b/nssa/core/src/nullifier.rs index 8d9d59fa..5c420cb1 100644 --- a/nssa/core/src/nullifier.rs +++ b/nssa/core/src/nullifier.rs @@ -42,7 +42,10 @@ impl From<&NullifierSecretKey> for NullifierPublicKey { pub type NullifierSecretKey = [u8; 32]; #[derive(Serialize, Deserialize, BorshSerialize, BorshDeserialize)] -#[cfg_attr(any(feature = "host", test), derive(Debug, Clone, PartialEq, Eq, Hash))] +#[cfg_attr( + any(feature = "host", test), + derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash) +)] pub struct Nullifier(pub(super) [u8; 32]); impl Nullifier { diff --git a/nssa/src/lib.rs b/nssa/src/lib.rs index de4b65b2..47a0eadb 100644 --- a/nssa/src/lib.rs +++ b/nssa/src/lib.rs @@ -14,7 +14,7 @@ mod state; pub use nssa_core::{ SharedSecretKey, - account::{Account, AccountId}, + account::{Account, AccountId, Data}, encryption::EphemeralPublicKey, program::ProgramId, }; diff --git a/nssa/src/merkle_tree/mod.rs b/nssa/src/merkle_tree/mod.rs index c4501cf8..b3637b13 100644 --- a/nssa/src/merkle_tree/mod.rs +++ b/nssa/src/merkle_tree/mod.rs @@ -1,3 +1,4 @@ +use borsh::{BorshDeserialize, BorshSerialize}; use sha2::{Digest, Sha256}; mod default_values; @@ -20,6 +21,7 @@ fn hash_value(value: &Value) -> Node { } #[cfg_attr(test, derive(Debug, PartialEq, Eq))] +#[derive(BorshSerialize, BorshDeserialize)] pub struct MerkleTree { nodes: Vec<Node>, capacity: usize, diff --git a/nssa/src/privacy_preserving_transaction/transaction.rs b/nssa/src/privacy_preserving_transaction/transaction.rs index 34649d2d..8eb4236e 100644 --- a/nssa/src/privacy_preserving_transaction/transaction.rs +++ b/nssa/src/privacy_preserving_transaction/transaction.rs @@ -5,6 +5,7 @@ use nssa_core::{ Commitment, CommitmentSetDigest, Nullifier, PrivacyPreservingCircuitOutput, account::{Account, AccountWithMetadata}, }; +use sha2::{Digest as _, digest::FixedOutput as _}; use super::{message::Message, witness_set::WitnessSet}; use crate::{ @@ -131,6 +132,13 @@ impl PrivacyPreservingTransaction { &self.witness_set } + pub fn hash(&self) -> [u8; 32] { + let bytes = self.to_bytes(); + let mut hasher = sha2::Sha256::new(); + hasher.update(&bytes); + hasher.finalize_fixed().into() + } + pub(crate) fn signer_account_ids(&self) -> Vec<AccountId> { self.witness_set .signatures_and_public_keys() diff --git a/nssa/src/program.rs b/nssa/src/program.rs index 943b16ed..06c7ad29 100644 --- a/nssa/src/program.rs +++ b/nssa/src/program.rs @@ -1,3 +1,4 @@ +use borsh::{BorshDeserialize, BorshSerialize}; use nssa_core::{ account::AccountWithMetadata, program::{InstructionData, ProgramId, ProgramOutput}, @@ -14,7 +15,7 @@ use crate::{ /// TODO: Make this variable when fees are implemented const MAX_NUM_CYCLES_PUBLIC_EXECUTION: u64 = 1024 * 1024 * 32; // 32M cycles -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct Program { id: ProgramId, elf: Vec<u8>, diff --git a/nssa/src/program_deployment_transaction/transaction.rs b/nssa/src/program_deployment_transaction/transaction.rs index 6002aded..188b73ea 100644 --- a/nssa/src/program_deployment_transaction/transaction.rs +++ b/nssa/src/program_deployment_transaction/transaction.rs @@ -1,4 +1,5 @@ use borsh::{BorshDeserialize, BorshSerialize}; +use sha2::{Digest as _, digest::FixedOutput as _}; use crate::{ V02State, error::NssaError, program::Program, program_deployment_transaction::message::Message, @@ -6,7 +7,7 @@ use crate::{ #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct ProgramDeploymentTransaction { - pub(crate) message: Message, + pub message: Message, } impl ProgramDeploymentTransaction { @@ -30,4 +31,11 @@ impl ProgramDeploymentTransaction { Ok(program) } } + + pub fn hash(&self) -> [u8; 32] { + let bytes = self.to_bytes(); + let mut hasher = sha2::Sha256::new(); + hasher.update(&bytes); + hasher.finalize_fixed().into() + } } diff --git a/nssa/src/public_transaction/transaction.rs b/nssa/src/public_transaction/transaction.rs index f5badb6a..7d42dccc 100644 --- a/nssa/src/public_transaction/transaction.rs +++ b/nssa/src/public_transaction/transaction.rs @@ -17,8 +17,8 @@ use crate::{ #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct PublicTransaction { - message: Message, - witness_set: WitnessSet, + pub message: Message, + pub witness_set: WitnessSet, } impl PublicTransaction { diff --git a/nssa/src/state.rs b/nssa/src/state.rs index 6d56bc7f..3fecfc61 100644 --- a/nssa/src/state.rs +++ b/nssa/src/state.rs @@ -1,5 +1,6 @@ -use std::collections::{HashMap, HashSet}; +use std::collections::{BTreeSet, HashMap, HashSet}; +use borsh::{BorshDeserialize, BorshSerialize}; use nssa_core::{ Commitment, CommitmentSetDigest, DUMMY_COMMITMENT, MembershipProof, Nullifier, account::{Account, AccountId}, @@ -15,6 +16,8 @@ use crate::{ pub const MAX_NUMBER_CHAINED_CALLS: usize = 10; +#[derive(BorshSerialize, BorshDeserialize)] +#[cfg_attr(test, derive(Debug, PartialEq, Eq))] pub(crate) struct CommitmentSet { merkle_tree: MerkleTree, commitments: HashMap<Commitment, usize>, @@ -60,8 +63,49 @@ impl CommitmentSet { } } -type NullifierSet = HashSet<Nullifier>; +#[cfg_attr(test, derive(Debug, PartialEq, Eq))] +struct NullifierSet(BTreeSet<Nullifier>); +impl NullifierSet { + fn new() -> Self { + Self(BTreeSet::new()) + } + + fn extend(&mut self, new_nullifiers: Vec<Nullifier>) { + self.0.extend(new_nullifiers); + } + + fn contains(&self, nullifier: &Nullifier) -> bool { + self.0.contains(nullifier) + } +} + +impl BorshSerialize for NullifierSet { + fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> { + self.0.iter().collect::<Vec<_>>().serialize(writer) + } +} + +impl BorshDeserialize for NullifierSet { + fn deserialize_reader<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> { + let vec = Vec::<Nullifier>::deserialize_reader(reader)?; + + let mut set = BTreeSet::new(); + for n in vec { + if !set.insert(n) { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "duplicate nullifier in NullifierSet", + )); + } + } + + Ok(Self(set)) + } +} + +#[derive(BorshSerialize, BorshDeserialize)] +#[cfg_attr(test, derive(Debug, PartialEq, Eq))] pub struct V02State { public_state: HashMap<AccountId, Account>, private_state: (CommitmentSet, NullifierSet), @@ -4309,4 +4353,15 @@ pub mod tests { // Assert - should fail because the malicious program tries to manipulate is_authorized assert!(matches!(result, Err(NssaError::CircuitProvingError(_)))); } + + #[test] + fn test_state_serialization_roundtrip() { + let account_id_1 = AccountId::new([1; 32]); + let account_id_2 = AccountId::new([2; 32]); + let initial_data = [(account_id_1, 100u128), (account_id_2, 151u128)]; + let state = V02State::new_with_genesis_accounts(&initial_data, &[]).with_test_programs(); + let bytes = borsh::to_vec(&state).unwrap(); + let state_from_bytes: V02State = borsh::from_slice(&bytes).unwrap(); + assert_eq!(state, state_from_bytes); + } } diff --git a/program_methods/Cargo.toml b/program_methods/Cargo.toml index 5f0688a4..999c1522 100644 --- a/program_methods/Cargo.toml +++ b/program_methods/Cargo.toml @@ -2,6 +2,7 @@ name = "program_methods" version = "0.1.0" edition = "2024" +license = { workspace = true } [build-dependencies] risc0-build.workspace = true diff --git a/program_methods/guest/Cargo.toml b/program_methods/guest/Cargo.toml index 1d938e9b..a4627b86 100644 --- a/program_methods/guest/Cargo.toml +++ b/program_methods/guest/Cargo.toml @@ -2,6 +2,7 @@ name = "programs" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true diff --git a/programs/token/Cargo.toml b/programs/token/Cargo.toml index 25b061a9..39beb96a 100644 --- a/programs/token/Cargo.toml +++ b/programs/token/Cargo.toml @@ -2,6 +2,7 @@ name = "token_program" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true diff --git a/programs/token/core/Cargo.toml b/programs/token/core/Cargo.toml index 4193bfe6..cf61a35f 100644 --- a/programs/token/core/Cargo.toml +++ b/programs/token/core/Cargo.toml @@ -2,6 +2,7 @@ name = "token_core" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true diff --git a/sequencer_core/Cargo.toml b/sequencer_core/Cargo.toml index 8d2886ce..fb900252 100644 --- a/sequencer_core/Cargo.toml +++ b/sequencer_core/Cargo.toml @@ -2,6 +2,7 @@ name = "sequencer_core" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa.workspace = true @@ -17,6 +18,7 @@ serde_json.workspace = true tempfile.workspace = true chrono.workspace = true log.workspace = true +tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } bedrock_client.workspace = true logos-blockchain-key-management-system-service.workspace = true logos-blockchain-core.workspace = true @@ -29,5 +31,4 @@ default = [] testnet = [] [dev-dependencies] -tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } futures.workspace = true diff --git a/sequencer_core/src/block_settlement_client.rs b/sequencer_core/src/block_settlement_client.rs index 0aa22420..f99a116e 100644 --- a/sequencer_core/src/block_settlement_client.rs +++ b/sequencer_core/src/block_settlement_client.rs @@ -1,8 +1,8 @@ -use std::{fs, path::Path}; +use std::{fs, path::Path, str::FromStr}; use anyhow::{Context, Result, anyhow}; use bedrock_client::BedrockClient; -use common::block::HashableBlockData; +use common::block::Block; use logos_blockchain_core::mantle::{ MantleTx, Op, OpProof, SignedMantleTx, Transaction, TxHash, ledger, ops::channel::{ChannelId, MsgId, inscribe::InscriptionOp}, @@ -10,43 +10,44 @@ use logos_blockchain_core::mantle::{ use logos_blockchain_key_management_system_service::keys::{ ED25519_SECRET_KEY_SIZE, Ed25519Key, Ed25519PublicKey, }; +use reqwest::Url; use crate::config::BedrockConfig; /// A component that posts block data to logos blockchain +#[derive(Clone)] pub struct BlockSettlementClient { bedrock_client: BedrockClient, bedrock_signing_key: Ed25519Key, bedrock_channel_id: ChannelId, - last_message_id: MsgId, } impl BlockSettlementClient { pub fn try_new(home: &Path, config: &BedrockConfig) -> Result<Self> { let bedrock_signing_key = load_or_create_signing_key(&home.join("bedrock_signing_key")) .context("Failed to load or create signing key")?; - let bedrock_channel_id = ChannelId::from(config.channel_id); - let bedrock_client = BedrockClient::new(None, config.node_url.clone()) - .context("Failed to initialize bedrock client")?; - let channel_genesis_msg = MsgId::from([0; 32]); + let bedrock_url = Url::from_str(config.node_url.as_ref()) + .context("Bedrock node address is not a valid url")?; + let bedrock_client = + BedrockClient::new(None, bedrock_url).context("Failed to initialize bedrock client")?; Ok(Self { bedrock_client, bedrock_signing_key, - bedrock_channel_id, - last_message_id: channel_genesis_msg, + bedrock_channel_id: config.channel_id, }) } /// Create and sign a transaction for inscribing data - pub fn create_inscribe_tx(&self, data: Vec<u8>) -> (SignedMantleTx, MsgId) { + pub fn create_inscribe_tx(&self, block: &Block) -> Result<(SignedMantleTx, MsgId)> { + let inscription_data = borsh::to_vec(block)?; let verifying_key_bytes = self.bedrock_signing_key.public_key().to_bytes(); let verifying_key = Ed25519PublicKey::from_bytes(&verifying_key_bytes).expect("valid ed25519 public key"); let inscribe_op = InscriptionOp { channel_id: self.bedrock_channel_id, - inscription: data, - parent: self.last_message_id, + inscription: inscription_data, + parent: block.bedrock_parent_id.into(), signer: verifying_key, }; let inscribe_op_id = inscribe_op.id(); @@ -76,20 +77,17 @@ impl BlockSettlementClient { ledger_tx_proof: empty_ledger_signature(&tx_hash), mantle_tx: inscribe_tx, }; - (signed_mantle_tx, inscribe_op_id) + Ok((signed_mantle_tx, inscribe_op_id)) } - /// Post a transaction to the node and wait for inclusion - pub async fn post_and_wait(&mut self, block_data: &HashableBlockData) -> Result<u64> { - let inscription_data = borsh::to_vec(&block_data)?; - let (tx, new_msg_id) = self.create_inscribe_tx(inscription_data); + /// Post a transaction to the node + pub async fn submit_block_to_bedrock(&self, block: &Block) -> Result<MsgId> { + let (tx, new_msg_id) = self.create_inscribe_tx(block)?; // Post the transaction self.bedrock_client.post_transaction(tx).await?; - self.last_message_id = new_msg_id; - - Ok(block_data.block_id) + Ok(new_msg_id) } } diff --git a/sequencer_core/src/block_store.rs b/sequencer_core/src/block_store.rs index cd9aa194..a0b07445 100644 --- a/sequencer_core/src/block_store.rs +++ b/sequencer_core/src/block_store.rs @@ -2,9 +2,10 @@ use std::{collections::HashMap, path::Path}; use anyhow::Result; use common::{HashType, block::Block, transaction::EncodedTransaction}; +use nssa::V02State; use storage::RocksDBIO; -pub struct SequencerBlockStore { +pub struct SequencerStore { dbio: RocksDBIO, // TODO: Consider adding the hashmap to the database for faster recovery. tx_hash_to_block_map: HashMap<HashType, u64>, @@ -12,7 +13,7 @@ pub struct SequencerBlockStore { signing_key: nssa::PrivateKey, } -impl SequencerBlockStore { +impl SequencerStore { /// Starting database at the start of new chain. /// Creates files if necessary. /// @@ -42,18 +43,15 @@ impl SequencerBlockStore { /// Reopening existing database pub fn open_db_restart(location: &Path, signing_key: nssa::PrivateKey) -> Result<Self> { - SequencerBlockStore::open_db_with_genesis(location, None, signing_key) + SequencerStore::open_db_with_genesis(location, None, signing_key) } pub fn get_block_at_id(&self, id: u64) -> Result<Block> { Ok(self.dbio.get_block(id)?) } - pub fn put_block_at_id(&mut self, block: Block) -> Result<()> { - let new_transactions_map = block_to_transactions_map(&block); - self.dbio.put_block(block, false)?; - self.tx_hash_to_block_map.extend(new_transactions_map); - Ok(()) + pub fn delete_block_at_id(&mut self, block_id: u64) -> Result<()> { + Ok(self.dbio.delete_block(block_id)?) } /// Returns the transaction corresponding to the given hash, if it exists in the blockchain. @@ -81,6 +79,21 @@ impl SequencerBlockStore { pub fn signing_key(&self) -> &nssa::PrivateKey { &self.signing_key } + + pub fn get_all_blocks(&self) -> impl Iterator<Item = Result<Block>> { + self.dbio.get_all_blocks().map(|res| Ok(res?)) + } + + pub(crate) fn update(&mut self, block: Block, state: &V02State) -> Result<()> { + let new_transactions_map = block_to_transactions_map(&block); + self.dbio.atomic_update(block, state)?; + self.tx_hash_to_block_map.extend(new_transactions_map); + Ok(()) + } + + pub fn get_nssa_state(&self) -> Option<V02State> { + self.dbio.get_nssa_state().ok() + } } pub(crate) fn block_to_transactions_map(block: &Block) -> HashMap<HashType, u64> { @@ -113,11 +126,10 @@ mod tests { transactions: vec![], }; - let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key); + let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); // Start an empty node store let mut node_store = - SequencerBlockStore::open_db_with_genesis(path, Some(genesis_block), signing_key) - .unwrap(); + SequencerStore::open_db_with_genesis(path, Some(genesis_block), signing_key).unwrap(); let tx = common::test_utils::produce_dummy_empty_transaction(); let block = common::test_utils::produce_dummy_block(1, None, vec![tx.clone()]); @@ -126,7 +138,8 @@ mod tests { let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); assert_eq!(None, retrieved_tx); // Add the block with the transaction - node_store.put_block_at_id(block).unwrap(); + let dummy_state = V02State::new_with_genesis_accounts(&[], &[]); + node_store.update(block, &dummy_state).unwrap(); // Try again let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); assert_eq!(Some(tx), retrieved_tx); diff --git a/sequencer_core/src/config.rs b/sequencer_core/src/config.rs index 5911cc52..3d69e8af 100644 --- a/sequencer_core/src/config.rs +++ b/sequencer_core/src/config.rs @@ -5,7 +5,8 @@ use std::{ }; use anyhow::Result; -use reqwest::Url; +use common::sequencer_client::BasicAuth; +use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize, Clone)] @@ -40,6 +41,8 @@ pub struct SequencerConfig { pub mempool_max_size: usize, /// Interval in which blocks produced pub block_create_timeout_millis: u64, + /// Interval in which pending blocks are retried + pub retry_pending_blocks_timeout_millis: u64, /// Port to listen pub port: u16, /// List of initial accounts data @@ -55,9 +58,11 @@ pub struct SequencerConfig { #[derive(Clone, Serialize, Deserialize)] pub struct BedrockConfig { /// Bedrock channel ID - pub channel_id: [u8; 32], + pub channel_id: ChannelId, /// Bedrock Url - pub node_url: Url, + pub node_url: String, + /// Bedrock auth + pub auth: Option<BasicAuth>, } impl SequencerConfig { diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index 89cafc4c..efddcd7e 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -5,15 +5,15 @@ use anyhow::Result; use common::PINATA_BASE58; use common::{ HashType, - block::HashableBlockData, + block::{BedrockStatus, Block, HashableBlockData, MantleMsgId}, transaction::{EncodedTransaction, NSSATransaction}, }; use config::SequencerConfig; -use log::warn; +use log::{info, warn}; use mempool::{MemPool, MemPoolHandle}; use serde::{Deserialize, Serialize}; -use crate::{block_settlement_client::BlockSettlementClient, block_store::SequencerBlockStore}; +use crate::{block_settlement_client::BlockSettlementClient, block_store::SequencerStore}; mod block_settlement_client; pub mod block_store; @@ -21,11 +21,12 @@ pub mod config; pub struct SequencerCore { state: nssa::V02State, - block_store: SequencerBlockStore, + store: SequencerStore, mempool: MemPool<EncodedTransaction>, sequencer_config: SequencerConfig, chain_height: u64, block_settlement_client: Option<BlockSettlementClient>, + last_bedrock_msg_id: MantleMsgId, } #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] @@ -43,7 +44,11 @@ impl Display for TransactionMalformationError { impl std::error::Error for TransactionMalformationError {} impl SequencerCore { - /// Start Sequencer from configuration and construct transaction sender + /// Starts the sequencer using the provided configuration. + /// If an existing database is found, the sequencer state is loaded from it and + /// assumed to represent the correct latest state consistent with Bedrock-finalized data. + /// If no database is found, the sequencer performs a fresh start from genesis, + /// initializing its state with the accounts defined in the configuration file. pub fn start_from_config(config: SequencerConfig) -> (Self, MemPoolHandle<EncodedTransaction>) { let hashable_data = HashableBlockData { block_id: config.genesis_id, @@ -53,37 +58,51 @@ impl SequencerCore { }; let signing_key = nssa::PrivateKey::try_new(config.signing_key).unwrap(); - let genesis_block = hashable_data.into_pending_block(&signing_key); + let channel_genesis_msg_id = [0; 32]; + let genesis_block = hashable_data.into_pending_block(&signing_key, channel_genesis_msg_id); // Sequencer should panic if unable to open db, // as fixing this issue may require actions non-native to program scope - let block_store = SequencerBlockStore::open_db_with_genesis( + let store = SequencerStore::open_db_with_genesis( &config.home.join("rocksdb"), Some(genesis_block), signing_key, ) .unwrap(); - let mut initial_commitments = vec![]; - for init_comm_data in config.initial_commitments.clone() { - let npk = init_comm_data.npk; + let mut state = match store.get_nssa_state() { + Some(state) => { + info!("Found local database. Loading state and pending blocks from it."); + state + } + None => { + info!( + "No database found when starting the sequencer. Creating a fresh new with the initial data in config" + ); + let initial_commitments: Vec<nssa_core::Commitment> = config + .initial_commitments + .iter() + .map(|init_comm_data| { + let npk = &init_comm_data.npk; - let mut acc = init_comm_data.account; + let mut acc = init_comm_data.account.clone(); - acc.program_owner = nssa::program::Program::authenticated_transfer_program().id(); + acc.program_owner = + nssa::program::Program::authenticated_transfer_program().id(); - let comm = nssa_core::Commitment::new(&npk, &acc); + nssa_core::Commitment::new(npk, &acc) + }) + .collect(); - initial_commitments.push(comm); - } + let init_accs: Vec<(nssa::AccountId, u128)> = config + .initial_accounts + .iter() + .map(|acc_data| (acc_data.account_id.parse().unwrap(), acc_data.balance)) + .collect(); - let init_accs: Vec<(nssa::AccountId, u128)> = config - .initial_accounts - .iter() - .map(|acc_data| (acc_data.account_id.parse().unwrap(), acc_data.balance)) - .collect(); - - let mut state = nssa::V02State::new_with_genesis_accounts(&init_accs, &initial_commitments); + nssa::V02State::new_with_genesis_accounts(&init_accs, &initial_commitments) + } + }; #[cfg(feature = "testnet")] state.add_pinata_program(PINATA_BASE58.parse().unwrap()); @@ -94,37 +113,17 @@ impl SequencerCore { .expect("Block settlement client should be constructible") }); - let mut this = Self { + let sequencer_core = Self { state, - block_store, + store, mempool, chain_height: config.genesis_id, sequencer_config: config, block_settlement_client, + last_bedrock_msg_id: channel_genesis_msg_id, }; - this.sync_state_with_stored_blocks(); - - (this, mempool_handle) - } - - /// If there are stored blocks ahead of the current height, this method will load and process - /// all transaction in them in the order they are stored. The NSSA state will be updated - /// accordingly. - fn sync_state_with_stored_blocks(&mut self) { - let mut next_block_id = self.sequencer_config.genesis_id + 1; - while let Ok(block) = self.block_store.get_block_at_id(next_block_id) { - for encoded_transaction in block.body.transactions { - let transaction = NSSATransaction::try_from(&encoded_transaction).unwrap(); - // Process transaction and update state - self.execute_check_transaction_on_state(transaction) - .unwrap(); - // Update the tx hash to block id map. - self.block_store.insert(&encoded_transaction, next_block_id); - } - self.chain_height = next_block_id; - next_block_id += 1; - } + (sequencer_core, mempool_handle) } fn execute_check_transaction_on_state( @@ -148,8 +147,11 @@ impl SequencerCore { pub async fn produce_new_block_and_post_to_settlement_layer(&mut self) -> Result<u64> { let block_data = self.produce_new_block_with_mempool_transactions()?; - if let Some(block_settlement) = self.block_settlement_client.as_mut() { - block_settlement.post_and_wait(&block_data).await?; + if let Some(client) = self.block_settlement_client.as_mut() { + let block = + block_data.into_pending_block(self.store.signing_key(), self.last_bedrock_msg_id); + let msg_id = client.submit_block_to_bedrock(&block).await?; + self.last_bedrock_msg_id = msg_id.into(); log::info!("Posted block data to Bedrock"); } @@ -179,11 +181,7 @@ impl SequencerCore { } } - let prev_block_hash = self - .block_store - .get_block_at_id(self.chain_height)? - .header - .hash; + let prev_block_hash = self.store.get_block_at_id(self.chain_height)?.header.hash; let curr_time = chrono::Utc::now().timestamp_millis() as u64; @@ -196,9 +194,9 @@ impl SequencerCore { let block = hashable_data .clone() - .into_pending_block(self.block_store.signing_key()); + .into_pending_block(self.store.signing_key(), self.last_bedrock_msg_id); - self.block_store.put_block_at_id(block)?; + self.store.update(block, &self.state)?; self.chain_height = new_block_height; @@ -224,8 +222,8 @@ impl SequencerCore { &self.state } - pub fn block_store(&self) -> &SequencerBlockStore { - &self.block_store + pub fn block_store(&self) -> &SequencerStore { + &self.store } pub fn chain_height(&self) -> u64 { @@ -235,6 +233,39 @@ impl SequencerCore { pub fn sequencer_config(&self) -> &SequencerConfig { &self.sequencer_config } + + /// Deletes finalized blocks from the sequencer's pending block list. + /// This method must be called when new blocks are finalized on Bedrock. + /// All pending blocks with an ID less than or equal to `last_finalized_block_id` + /// are removed from the database. + pub fn clean_finalized_blocks_from_db(&mut self, last_finalized_block_id: u64) -> Result<()> { + if let Some(first_pending_block_id) = self + .get_pending_blocks()? + .iter() + .map(|block| block.header.block_id) + .min() + { + (first_pending_block_id..=last_finalized_block_id) + .try_for_each(|id| self.store.delete_block_at_id(id)) + } else { + Ok(()) + } + } + + /// Returns the list of stored pending blocks. + pub fn get_pending_blocks(&self) -> Result<Vec<Block>> { + Ok(self + .store + .get_all_blocks() + .collect::<Result<Vec<Block>>>()? + .into_iter() + .filter(|block| matches!(block.bedrock_status, BedrockStatus::Pending)) + .collect()) + } + + pub fn block_settlement_client(&self) -> Option<BlockSettlementClient> { + self.block_settlement_client.clone() + } } // TODO: Introduce type-safe wrapper around checked transaction, e.g. AuthenticatedTransaction @@ -297,6 +328,7 @@ mod tests { initial_commitments: vec![], signing_key: *sequencer_sign_key_for_testing().value(), bedrock_config: None, + retry_pending_blocks_timeout_millis: 1000 * 60 * 4, } } @@ -680,10 +712,7 @@ mod tests { .produce_new_block_with_mempool_transactions() .unwrap() .block_id; - let block = sequencer - .block_store - .get_block_at_id(current_height) - .unwrap(); + let block = sequencer.store.get_block_at_id(current_height).unwrap(); // Only one should be included in the block assert_eq!(block.body.transactions, vec![tx.clone()]); @@ -720,10 +749,7 @@ mod tests { .produce_new_block_with_mempool_transactions() .unwrap() .block_id; - let block = sequencer - .block_store - .get_block_at_id(current_height) - .unwrap(); + let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert_eq!(block.body.transactions, vec![tx.clone()]); // Add same transaction should fail @@ -732,10 +758,7 @@ mod tests { .produce_new_block_with_mempool_transactions() .unwrap() .block_id; - let block = sequencer - .block_store - .get_block_at_id(current_height) - .unwrap(); + let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert!(block.body.transactions.is_empty()); } @@ -768,10 +791,7 @@ mod tests { .produce_new_block_with_mempool_transactions() .unwrap() .block_id; - let block = sequencer - .block_store - .get_block_at_id(current_height) - .unwrap(); + let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert_eq!(block.body.transactions, vec![tx.clone()]); } @@ -791,4 +811,42 @@ mod tests { config.initial_accounts[1].balance + balance_to_move ); } + + #[test] + fn test_get_pending_blocks() { + let config = setup_sequencer_config(); + let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + assert_eq!(sequencer.get_pending_blocks().unwrap().len(), 4); + } + + #[test] + fn test_delete_blocks() { + let config = setup_sequencer_config(); + let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + sequencer + .produce_new_block_with_mempool_transactions() + .unwrap(); + + let last_finalized_block = 3; + sequencer + .clean_finalized_blocks_from_db(last_finalized_block) + .unwrap(); + + assert_eq!(sequencer.get_pending_blocks().unwrap().len(), 1); + } } diff --git a/sequencer_rpc/Cargo.toml b/sequencer_rpc/Cargo.toml index 2abd5400..1a2b2a0a 100644 --- a/sequencer_rpc/Cargo.toml +++ b/sequencer_rpc/Cargo.toml @@ -2,6 +2,7 @@ name = "sequencer_rpc" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa.workspace = true diff --git a/sequencer_rpc/src/process.rs b/sequencer_rpc/src/process.rs index b89993f9..8b4ec7a5 100644 --- a/sequencer_rpc/src/process.rs +++ b/sequencer_rpc/src/process.rs @@ -18,8 +18,8 @@ use common::{ GetInitialTestnetAccountsRequest, GetLastBlockRequest, GetLastBlockResponse, GetProgramIdsRequest, GetProgramIdsResponse, GetProofForCommitmentRequest, GetProofForCommitmentResponse, GetTransactionByHashRequest, - GetTransactionByHashResponse, HelloRequest, HelloResponse, SendTxRequest, - SendTxResponse, + GetTransactionByHashResponse, HelloRequest, HelloResponse, PostIndexerMessageRequest, + PostIndexerMessageResponse, SendTxRequest, SendTxResponse, }, }, transaction::{EncodedTransaction, NSSATransaction}, @@ -44,6 +44,7 @@ pub const GET_ACCOUNTS_NONCES: &str = "get_accounts_nonces"; pub const GET_ACCOUNT: &str = "get_account"; pub const GET_PROOF_FOR_COMMITMENT: &str = "get_proof_for_commitment"; pub const GET_PROGRAM_IDS: &str = "get_program_ids"; +pub const POST_INDEXER_MESSAGE: &str = "post_indexer_message"; pub const HELLO_FROM_SEQUENCER: &str = "HELLO_FROM_SEQUENCER"; @@ -314,6 +315,18 @@ impl JsonHandler { respond(response) } + async fn process_indexer_message(&self, request: Request) -> Result<Value, RpcErr> { + let _indexer_post_req = PostIndexerMessageRequest::parse(Some(request.params))?; + + // ToDo: Add indexer messages handling + + let response = PostIndexerMessageResponse { + status: "Success".to_string(), + }; + + respond(response) + } + pub async fn process_request_internal(&self, request: Request) -> Result<Value, RpcErr> { match request.method.as_ref() { HELLO => self.process_temp_hello(request).await, @@ -329,6 +342,7 @@ impl JsonHandler { GET_TRANSACTION_BY_HASH => self.process_get_transaction_by_hash(request).await, GET_PROOF_FOR_COMMITMENT => self.process_get_proof_by_commitment(request).await, GET_PROGRAM_IDS => self.process_get_program_ids(request).await, + POST_INDEXER_MESSAGE => self.process_indexer_message(request).await, _ => Err(RpcErr(RpcError::method_not_found(request.method))), } } @@ -340,10 +354,13 @@ mod tests { use base58::ToBase58; use base64::{Engine, engine::general_purpose}; - use common::{test_utils::sequencer_sign_key_for_testing, transaction::EncodedTransaction}; + use common::{ + sequencer_client::BasicAuth, test_utils::sequencer_sign_key_for_testing, + transaction::EncodedTransaction, + }; use sequencer_core::{ SequencerCore, - config::{AccountInitialData, SequencerConfig}, + config::{AccountInitialData, BedrockConfig, SequencerConfig}, }; use serde_json::Value; use tempfile::tempdir; @@ -388,12 +405,21 @@ mod tests { initial_accounts, initial_commitments: vec![], signing_key: *sequencer_sign_key_for_testing().value(), - bedrock_config: None, + retry_pending_blocks_timeout_millis: 1000 * 60 * 4, + bedrock_config: Some(BedrockConfig { + channel_id: [42; 32].into(), + node_url: "http://localhost:8080".to_string(), + auth: Some(BasicAuth { + username: "user".to_string(), + password: None, + }), + }), } } async fn components_for_tests() -> (JsonHandler, Vec<AccountInitialData>, EncodedTransaction) { let config = sequencer_config_for_tests(); + let (mut sequencer_core, mempool_handle) = SequencerCore::start_from_config(config); let initial_accounts = sequencer_core.sequencer_config().initial_accounts.clone(); diff --git a/sequencer_runner/Cargo.toml b/sequencer_runner/Cargo.toml index 55f56dec..346c57b2 100644 --- a/sequencer_runner/Cargo.toml +++ b/sequencer_runner/Cargo.toml @@ -2,6 +2,7 @@ name = "sequencer_runner" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] common.workspace = true diff --git a/sequencer_runner/configs/debug/sequencer_config.json b/sequencer_runner/configs/debug/sequencer_config.json index ad43ba65..80bfe0a4 100644 --- a/sequencer_runner/configs/debug/sequencer_config.json +++ b/sequencer_runner/configs/debug/sequencer_config.json @@ -5,7 +5,8 @@ "is_genesis_random": true, "max_num_tx_in_block": 20, "mempool_max_size": 1000, - "block_create_timeout_millis": 10000, + "block_create_timeout_millis": 5000, + "retry_pending_blocks_timeout_millis": 7000, "port": 3040, "initial_accounts": [ { @@ -156,7 +157,10 @@ 37 ], "bedrock_config": { - "channel_id": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1], - "node_url": "http://localhost:8080" + "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", + "node_url": "http://localhost:8080", + "auth": { + "username": "user" + } } } diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index fd4a6c08..8dbea525 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -4,7 +4,7 @@ use actix_web::dev::ServerHandle; use anyhow::Result; use clap::Parser; use common::rpc_primitives::RpcConfig; -use log::info; +use log::{info, warn}; use sequencer_core::{SequencerCore, config::SequencerConfig}; use sequencer_rpc::new_http_server; use tokio::{sync::Mutex, task::JoinHandle}; @@ -20,8 +20,14 @@ struct Args { pub async fn startup_sequencer( app_config: SequencerConfig, -) -> Result<(ServerHandle, SocketAddr, JoinHandle<Result<()>>)> { +) -> Result<( + ServerHandle, + SocketAddr, + JoinHandle<Result<()>>, + JoinHandle<Result<()>>, +)> { let block_timeout = app_config.block_create_timeout_millis; + let retry_pending_blocks_timeout = app_config.retry_pending_blocks_timeout_millis; let port = app_config.port; let (sequencer_core, mempool_handle) = SequencerCore::start_from_config(app_config); @@ -39,8 +45,41 @@ pub async fn startup_sequencer( let http_server_handle = http_server.handle(); tokio::spawn(http_server); - info!("Starting main sequencer loop"); + info!("Starting pending block retry loop"); + let seq_core_wrapped_for_block_retry = seq_core_wrapped.clone(); + let retry_pending_blocks_handle = tokio::spawn(async move { + loop { + tokio::time::sleep(std::time::Duration::from_millis( + retry_pending_blocks_timeout, + )) + .await; + let (pending_blocks, block_settlement_client) = { + let sequencer_core = seq_core_wrapped_for_block_retry.lock().await; + let client = sequencer_core.block_settlement_client(); + let pending_blocks = sequencer_core + .get_pending_blocks() + .expect("Sequencer should be able to retrieve pending blocks"); + (pending_blocks, client) + }; + + let Some(client) = block_settlement_client else { + continue; + }; + + info!("Resubmitting {} pending blocks", pending_blocks.len()); + for block in &pending_blocks { + if let Err(e) = client.submit_block_to_bedrock(block).await { + warn!( + "Failed to resubmit block with id {} with error {}", + block.header.block_id, e + ); + } + } + } + }); + + info!("Starting main sequencer loop"); let main_loop_handle = tokio::spawn(async move { loop { tokio::time::sleep(std::time::Duration::from_millis(block_timeout)).await; @@ -61,7 +100,12 @@ pub async fn startup_sequencer( } }); - Ok((http_server_handle, addr, main_loop_handle)) + Ok(( + http_server_handle, + addr, + main_loop_handle, + retry_pending_blocks_handle, + )) } pub async fn main_runner() -> Result<()> { @@ -81,9 +125,26 @@ pub async fn main_runner() -> Result<()> { } // ToDo: Add restart on failures - let (_, _, main_loop_handle) = startup_sequencer(app_config).await?; + let (_, _, main_loop_handle, retry_loop_handle) = startup_sequencer(app_config).await?; - main_loop_handle.await??; + info!("Sequencer running. Monitoring concurrent tasks..."); + + tokio::select! { + res = main_loop_handle => { + match res { + Ok(inner_res) => warn!("Main loop exited unexpectedly: {:?}", inner_res), + Err(e) => warn!("Main loop task panicked: {:?}", e), + } + } + res = retry_loop_handle => { + match res { + Ok(inner_res) => warn!("Retry loop exited unexpectedly: {:?}", inner_res), + Err(e) => warn!("Retry loop task panicked: {:?}", e), + } + } + } + + info!("Shutting down sequencer..."); Ok(()) } diff --git a/storage/Cargo.toml b/storage/Cargo.toml index 4678560e..8da47de3 100644 --- a/storage/Cargo.toml +++ b/storage/Cargo.toml @@ -2,6 +2,7 @@ name = "storage" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] common.workspace = true @@ -9,3 +10,4 @@ common.workspace = true thiserror.workspace = true borsh.workspace = true rocksdb.workspace = true +nssa.workspace = true diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 883684c2..b96e0d61 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -2,8 +2,9 @@ use std::{path::Path, sync::Arc}; use common::block::Block; use error::DbError; +use nssa::V02State; use rocksdb::{ - BoundColumnFamily, ColumnFamilyDescriptor, DBWithThreadMode, MultiThreaded, Options, + BoundColumnFamily, ColumnFamilyDescriptor, DBWithThreadMode, MultiThreaded, Options, WriteBatch, }; pub mod error; @@ -29,15 +30,15 @@ pub const DB_META_FIRST_BLOCK_SET_KEY: &str = "first_block_set"; /// Key base for storing metainformation about the last finalized block on Bedrock pub const DB_META_LAST_FINALIZED_BLOCK_ID: &str = "last_finalized_block_id"; -/// Key base for storing snapshot which describe block id -pub const DB_SNAPSHOT_BLOCK_ID_KEY: &str = "block_id"; +/// Key base for storing the NSSA state +pub const DB_NSSA_STATE_KEY: &str = "nssa_state"; /// Name of block column family pub const CF_BLOCK_NAME: &str = "cf_block"; /// Name of meta column family pub const CF_META_NAME: &str = "cf_meta"; -/// Name of snapshot column family -pub const CF_SNAPSHOT_NAME: &str = "cf_snapshot"; +/// Name of state column family +pub const CF_NSSA_STATE_NAME: &str = "cf_nssa_state"; pub type DbResult<T> = Result<T, DbError>; @@ -52,7 +53,7 @@ impl RocksDBIO { // ToDo: Add more column families for different data let cfb = ColumnFamilyDescriptor::new(CF_BLOCK_NAME, cf_opts.clone()); let cfmeta = ColumnFamilyDescriptor::new(CF_META_NAME, cf_opts.clone()); - let cfsnapshot = ColumnFamilyDescriptor::new(CF_SNAPSHOT_NAME, cf_opts.clone()); + let cfstate = ColumnFamilyDescriptor::new(CF_NSSA_STATE_NAME, cf_opts.clone()); let mut db_opts = Options::default(); db_opts.create_missing_column_families(true); @@ -60,7 +61,7 @@ impl RocksDBIO { let db = DBWithThreadMode::<MultiThreaded>::open_cf_descriptors( &db_opts, path, - vec![cfb, cfmeta, cfsnapshot], + vec![cfb, cfmeta, cfstate], ); let dbio = Self { @@ -92,7 +93,7 @@ impl RocksDBIO { // ToDo: Add more column families for different data let _cfb = ColumnFamilyDescriptor::new(CF_BLOCK_NAME, cf_opts.clone()); let _cfmeta = ColumnFamilyDescriptor::new(CF_META_NAME, cf_opts.clone()); - let _cfsnapshot = ColumnFamilyDescriptor::new(CF_SNAPSHOT_NAME, cf_opts.clone()); + let _cfstate = ColumnFamilyDescriptor::new(CF_NSSA_STATE_NAME, cf_opts.clone()); let mut db_opts = Options::default(); db_opts.create_missing_column_families(true); @@ -109,8 +110,8 @@ impl RocksDBIO { self.db.cf_handle(CF_BLOCK_NAME).unwrap() } - pub fn snapshot_column(&self) -> Arc<BoundColumnFamily<'_>> { - self.db.cf_handle(CF_SNAPSHOT_NAME).unwrap() + pub fn nssa_state_column(&self) -> Arc<BoundColumnFamily<'_>> { + self.db.cf_handle(CF_NSSA_STATE_NAME).unwrap() } pub fn get_meta_first_block_in_db(&self) -> DbResult<u64> { @@ -189,6 +190,24 @@ impl RocksDBIO { Ok(res.is_some()) } + pub fn put_nssa_state_in_db(&self, state: &V02State, batch: &mut WriteBatch) -> DbResult<()> { + let cf_nssa_state = self.nssa_state_column(); + batch.put_cf( + &cf_nssa_state, + borsh::to_vec(&DB_NSSA_STATE_KEY).map_err(|err| { + DbError::borsh_cast_message( + err, + Some("Failed to serialize DB_NSSA_STATE_KEY".to_string()), + ) + })?, + borsh::to_vec(state).map_err(|err| { + DbError::borsh_cast_message(err, Some("Failed to serialize NSSA state".to_string())) + })?, + ); + + Ok(()) + } + pub fn put_meta_first_block_in_db(&self, block: Block) -> DbResult<()> { let cf_meta = self.meta_column(); self.db @@ -209,7 +228,15 @@ impl RocksDBIO { ) .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))?; - self.put_block(block, true)?; + let mut batch = WriteBatch::default(); + self.put_block(block, true, &mut batch)?; + self.db.write(batch).map_err(|rerr| { + DbError::rocksdb_cast_message( + rerr, + Some("Failed to write first block in db".to_string()), + ) + })?; + Ok(()) } @@ -274,7 +301,7 @@ impl RocksDBIO { Ok(()) } - pub fn put_block(&self, block: Block, first: bool) -> DbResult<()> { + pub fn put_block(&self, block: Block, first: bool, batch: &mut WriteBatch) -> DbResult<()> { let cf_block = self.block_column(); if !first { @@ -285,23 +312,15 @@ impl RocksDBIO { } } - self.db - .put_cf( - &cf_block, - borsh::to_vec(&block.header.block_id).map_err(|err| { - DbError::borsh_cast_message( - err, - Some("Failed to serialize block id".to_string()), - ) - })?, - borsh::to_vec(&block).map_err(|err| { - DbError::borsh_cast_message( - err, - Some("Failed to serialize block data".to_string()), - ) - })?, - ) - .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))?; + batch.put_cf( + &cf_block, + borsh::to_vec(&block.header.block_id).map_err(|err| { + DbError::borsh_cast_message(err, Some("Failed to serialize block id".to_string())) + })?, + borsh::to_vec(&block).map_err(|err| { + DbError::borsh_cast_message(err, Some("Failed to serialize block data".to_string())) + })?, + ); Ok(()) } @@ -334,32 +353,90 @@ impl RocksDBIO { } } - pub fn get_snapshot_block_id(&self) -> DbResult<u64> { - let cf_snapshot = self.snapshot_column(); + pub fn get_nssa_state(&self) -> DbResult<V02State> { + let cf_nssa_state = self.nssa_state_column(); let res = self .db .get_cf( - &cf_snapshot, - borsh::to_vec(&DB_SNAPSHOT_BLOCK_ID_KEY).map_err(|err| { + &cf_nssa_state, + borsh::to_vec(&DB_NSSA_STATE_KEY).map_err(|err| { DbError::borsh_cast_message( err, - Some("Failed to serialize DB_SNAPSHOT_BLOCK_ID_KEY".to_string()), + Some("Failed to serialize block id".to_string()), ) })?, ) .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))?; if let Some(data) = res { - Ok(borsh::from_slice::<u64>(&data).map_err(|err| { + Ok(borsh::from_slice::<V02State>(&data).map_err(|serr| { DbError::borsh_cast_message( - err, - Some("Failed to deserialize last block".to_string()), + serr, + Some("Failed to deserialize block data".to_string()), ) })?) } else { Err(DbError::db_interaction_error( - "Snapshot block ID not found".to_string(), + "Block on this id not found".to_string(), )) } } + + pub fn delete_block(&self, block_id: u64) -> DbResult<()> { + let cf_block = self.block_column(); + let key = borsh::to_vec(&block_id).map_err(|err| { + DbError::borsh_cast_message(err, Some("Failed to serialize block id".to_string())) + })?; + + if self + .db + .get_cf(&cf_block, &key) + .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))? + .is_none() + { + return Err(DbError::db_interaction_error( + "Block on this id not found".to_string(), + )); + } + + self.db + .delete_cf(&cf_block, key) + .map_err(|rerr| DbError::rocksdb_cast_message(rerr, None))?; + + Ok(()) + } + + pub fn get_all_blocks(&self) -> impl Iterator<Item = DbResult<Block>> { + let cf_block = self.block_column(); + self.db + .iterator_cf(&cf_block, rocksdb::IteratorMode::Start) + .map(|res| { + let (_key, value) = res.map_err(|rerr| { + DbError::rocksdb_cast_message( + rerr, + Some("Failed to get key value pair".to_string()), + ) + })?; + + borsh::from_slice::<Block>(&value).map_err(|err| { + DbError::borsh_cast_message( + err, + Some("Failed to deserialize block data".to_string()), + ) + }) + }) + } + + pub fn atomic_update(&self, block: Block, state: &V02State) -> DbResult<()> { + let block_id = block.header.block_id; + let mut batch = WriteBatch::default(); + self.put_block(block, false, &mut batch)?; + self.put_nssa_state_in_db(state, &mut batch)?; + self.db.write(batch).map_err(|rerr| { + DbError::rocksdb_cast_message( + rerr, + Some(format!("Failed to udpate db with block {block_id}")), + ) + }) + } } diff --git a/test_program_methods/Cargo.toml b/test_program_methods/Cargo.toml index 345c479f..1c3368c7 100644 --- a/test_program_methods/Cargo.toml +++ b/test_program_methods/Cargo.toml @@ -2,6 +2,7 @@ name = "test_program_methods" version = "0.1.0" edition = "2024" +license = { workspace = true } [build-dependencies] risc0-build.workspace = true diff --git a/test_program_methods/guest/Cargo.toml b/test_program_methods/guest/Cargo.toml index 17613351..21c4fdc7 100644 --- a/test_program_methods/guest/Cargo.toml +++ b/test_program_methods/guest/Cargo.toml @@ -2,6 +2,7 @@ name = "test_programs" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true diff --git a/wallet-ffi/Cargo.toml b/wallet-ffi/Cargo.toml new file mode 100644 index 00000000..4305226b --- /dev/null +++ b/wallet-ffi/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "wallet-ffi" +version = "0.1.0" +edition = "2021" +license = { workspace = true } + +[lib] +crate-type = ["rlib", "cdylib", "staticlib"] + +[dependencies] +wallet.workspace = true +nssa.workspace = true +common.workspace = true +nssa_core.workspace = true +tokio.workspace = true + +[build-dependencies] +cbindgen = "0.29" + +[dev-dependencies] +tempfile = "3" diff --git a/wallet-ffi/build.rs b/wallet-ffi/build.rs new file mode 100644 index 00000000..63ee0d9e --- /dev/null +++ b/wallet-ffi/build.rs @@ -0,0 +1,13 @@ +fn main() { + let crate_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); + + let config = + cbindgen::Config::from_file("cbindgen.toml").expect("Unable to read cbindgen.toml"); + + cbindgen::Builder::new() + .with_crate(crate_dir) + .with_config(config) + .generate() + .expect("Unable to generate bindings") + .write_to_file("wallet_ffi.h"); +} diff --git a/wallet-ffi/cbindgen.toml b/wallet-ffi/cbindgen.toml new file mode 100644 index 00000000..42c46543 --- /dev/null +++ b/wallet-ffi/cbindgen.toml @@ -0,0 +1,40 @@ +language = "C" +header = """ +/** + * NSSA Wallet FFI Bindings + * + * Thread Safety: All functions are thread-safe. The wallet handle can be + * shared across threads, but operations are serialized internally. + * + * Memory Management: + * - Functions returning pointers allocate memory that must be freed + * - Use the corresponding wallet_ffi_free_* function to free memory + * - Never free memory returned by FFI using standard C free() + * + * Error Handling: + * - Functions return WalletFfiError codes + * - On error, call wallet_ffi_get_last_error() for detailed message + * - The error string must be freed with wallet_ffi_free_error_string() + * + * Initialization: + * 1. Call wallet_ffi_init_runtime() before any other function + * 2. Create wallet with wallet_ffi_create_new() or wallet_ffi_open() + * 3. Destroy wallet with wallet_ffi_destroy() when done + */ +""" + +include_guard = "WALLET_FFI_H" +include_version = true +no_includes = false + +[export] +include = ["Ffi.*", "WalletFfiError", "WalletHandle"] + +[enum] +rename_variants = "ScreamingSnakeCase" + +[fn] +rename_args = "None" + +[struct] +rename_fields = "None" diff --git a/wallet-ffi/src/account.rs b/wallet-ffi/src/account.rs new file mode 100644 index 00000000..cf237276 --- /dev/null +++ b/wallet-ffi/src/account.rs @@ -0,0 +1,375 @@ +//! Account management functions. + +use std::ptr; + +use nssa::AccountId; + +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::{FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, WalletHandle}, + wallet::get_wallet, +}; + +/// Create a new public account. +/// +/// Public accounts use standard transaction signing and are suitable for +/// non-private operations. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_account_id`: Output pointer for the new account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful creation +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_create_account_public( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_account_id.is_null() { + print_error("Null output pointer for account_id"); + return WalletFfiError::NullPointer; + } + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let (account_id, _chain_index) = wallet.create_new_account_public(None); + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} + +/// Create a new private account. +/// +/// Private accounts use privacy-preserving transactions with nullifiers +/// and commitments. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_account_id`: Output pointer for the new account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful creation +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_create_account_private( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_account_id.is_null() { + print_error("Null output pointer for account_id"); + return WalletFfiError::NullPointer; + } + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let (account_id, _chain_index) = wallet.create_new_account_private(None); + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} + +/// List all accounts in the wallet. +/// +/// Returns both public and private accounts managed by this wallet. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_list`: Output pointer for the account list +/// +/// # Returns +/// - `Success` on successful listing +/// - Error code on failure +/// +/// # Memory +/// The returned list must be freed with `wallet_ffi_free_account_list()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_list` must be a valid pointer to a `FfiAccountList` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_list_accounts( + handle: *mut WalletHandle, + out_list: *mut FfiAccountList, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_list.is_null() { + print_error("Null output pointer for account list"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let user_data = &wallet.storage().user_data; + let mut entries = Vec::new(); + + // Public accounts from default signing keys (preconfigured) + for account_id in user_data.default_pub_account_signing_keys.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: true, + }); + } + + // Public accounts from key tree (generated) + for account_id in user_data.public_key_tree.account_id_map.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: true, + }); + } + + // Private accounts from default accounts (preconfigured) + for account_id in user_data.default_user_private_accounts.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: false, + }); + } + + // Private accounts from key tree (generated) + for account_id in user_data.private_key_tree.account_id_map.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: false, + }); + } + + let count = entries.len(); + + if count == 0 { + unsafe { + (*out_list).entries = ptr::null_mut(); + (*out_list).count = 0; + } + } else { + let entries_boxed = entries.into_boxed_slice(); + let entries_ptr = Box::into_raw(entries_boxed) as *mut FfiAccountListEntry; + + unsafe { + (*out_list).entries = entries_ptr; + (*out_list).count = count; + } + } + + WalletFfiError::Success +} + +/// Free an account list returned by `wallet_ffi_list_accounts`. +/// +/// # Safety +/// The list must be either null or a valid list returned by `wallet_ffi_list_accounts`. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { + if list.is_null() { + return; + } + + unsafe { + let list = &*list; + if !list.entries.is_null() && list.count > 0 { + let slice = std::slice::from_raw_parts_mut(list.entries, list.count); + drop(Box::from_raw(slice as *mut [FfiAccountListEntry])); + } + } +} + +/// Get account balance. +/// +/// For public accounts, this fetches the balance from the network. +/// For private accounts, this returns the locally cached balance. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `is_public`: Whether this is a public account +/// - `out_balance`: Output for balance as little-endian [u8; 16] +/// +/// # Returns +/// - `Success` on successful query +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_balance` must be a valid pointer to a `[u8; 16]` array +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_balance( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + is_public: bool, + out_balance: *mut [u8; 16], +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_balance.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let balance = if is_public { + match block_on(wallet.get_account_balance(account_id)) { + Ok(Ok(b)) => b, + Ok(Err(e)) => { + print_error(format!("Failed to get balance: {}", e)); + return WalletFfiError::NetworkError; + } + Err(e) => return e, + } + } else { + match wallet.get_account_private(&account_id) { + Some(account) => account.balance, + None => { + print_error("Private account not found"); + return WalletFfiError::AccountNotFound; + } + } + }; + + unsafe { + *out_balance = balance.to_le_bytes(); + } + + WalletFfiError::Success +} + +/// Get full public account data from the network. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_account`: Output pointer for account data +/// +/// # Returns +/// - `Success` on successful query +/// - Error code on failure +/// +/// # Memory +/// The account data must be freed with `wallet_ffi_free_account_data()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_account` must be a valid pointer to a `FfiAccount` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_account_public( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_account: *mut FfiAccount, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_account.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let account = match block_on(wallet.get_account_public(account_id)) { + Ok(Ok(a)) => a, + Ok(Err(e)) => { + print_error(format!("Failed to get account: {}", e)); + return WalletFfiError::NetworkError; + } + Err(e) => return e, + }; + + unsafe { + *out_account = account.into(); + } + + WalletFfiError::Success +} + +/// Free account data returned by `wallet_ffi_get_account_public`. +/// +/// # Safety +/// The account must be either null or a valid account returned by +/// `wallet_ffi_get_account_public`. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_free_account_data(account: *mut FfiAccount) { + if account.is_null() { + return; + } + + unsafe { + let account = &*account; + if !account.data.is_null() && account.data_len > 0 { + let slice = std::slice::from_raw_parts_mut(account.data as *mut u8, account.data_len); + drop(Box::from_raw(slice as *mut [u8])); + } + } +} diff --git a/wallet-ffi/src/error.rs b/wallet-ffi/src/error.rs new file mode 100644 index 00000000..ab9ce6dd --- /dev/null +++ b/wallet-ffi/src/error.rs @@ -0,0 +1,50 @@ +//! Error handling for the FFI layer. +//! +//! Uses numeric error codes with error messages printed to stderr. + +/// Error codes returned by FFI functions. +#[repr(C)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum WalletFfiError { + /// Operation completed successfully + Success = 0, + /// A null pointer was passed where a valid pointer was expected + NullPointer = 1, + /// Invalid UTF-8 string + InvalidUtf8 = 2, + /// Wallet handle is not initialized + WalletNotInitialized = 3, + /// Configuration error + ConfigError = 4, + /// Storage/persistence error + StorageError = 5, + /// Network/RPC error + NetworkError = 6, + /// Account not found + AccountNotFound = 7, + /// Key not found for account + KeyNotFound = 8, + /// Insufficient funds for operation + InsufficientFunds = 9, + /// Invalid account ID format + InvalidAccountId = 10, + /// Tokio runtime error + RuntimeError = 11, + /// Password required but not provided + PasswordRequired = 12, + /// Block synchronization error + SyncError = 13, + /// Serialization/deserialization error + SerializationError = 14, + /// Invalid conversion from FFI types to NSSA types + InvalidTypeConversion = 15, + /// Invalid Key value + InvalidKeyValue = 16, + /// Internal error (catch-all) + InternalError = 99, +} + +/// Log an error message to stderr. +pub fn print_error(msg: impl Into<String>) { + eprintln!("[wallet-ffi] {}", msg.into()); +} diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs new file mode 100644 index 00000000..08661a50 --- /dev/null +++ b/wallet-ffi/src/keys.rs @@ -0,0 +1,253 @@ +//! Key retrieval functions. + +use std::ptr; + +use nssa::{AccountId, PublicKey}; + +use crate::{ + error::{print_error, WalletFfiError}, + types::{FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, WalletHandle}, + wallet::get_wallet, +}; + +/// Get the public key for a public account. +/// +/// This returns the public key derived from the account's signing key. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_public_key`: Output pointer for the public key +/// +/// # Returns +/// - `Success` on successful retrieval +/// - `KeyNotFound` if the account's key is not in this wallet +/// - Error code on other failures +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_public_key` must be a valid pointer to a `FfiPublicAccountKey` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_public_account_key( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_public_key: *mut FfiPublicAccountKey, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_public_key.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let private_key = match wallet.get_account_public_signing_key(&account_id) { + Some(k) => k, + None => { + print_error("Public account key not found in wallet"); + return WalletFfiError::KeyNotFound; + } + }; + + let public_key = PublicKey::new_from_private_key(private_key); + + unsafe { + *out_public_key = public_key.into(); + } + + WalletFfiError::Success +} + +/// Get keys for a private account. +/// +/// Returns the nullifier public key (NPK) and incoming viewing public key (IPK) +/// for the specified private account. These keys are safe to share publicly. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_keys`: Output pointer for the key data +/// +/// # Returns +/// - `Success` on successful retrieval +/// - `AccountNotFound` if the private account is not in this wallet +/// - Error code on other failures +/// +/// # Memory +/// The keys structure must be freed with `wallet_ffi_free_private_account_keys()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_keys` must be a valid pointer to a `FfiPrivateAccountKeys` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_private_account_keys( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_keys: *mut FfiPrivateAccountKeys, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_keys.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let (key_chain, _account) = match wallet.storage().user_data.get_private_account(&account_id) { + Some(k) => k, + None => { + print_error("Private account not found in wallet"); + return WalletFfiError::AccountNotFound; + } + }; + + // NPK is a 32-byte array + let npk_bytes = key_chain.nullifer_public_key.0; + + // IPK is a compressed secp256k1 point (33 bytes) + let ipk_bytes = key_chain.incoming_viewing_public_key.to_bytes(); + let ipk_len = ipk_bytes.len(); + let ipk_vec = ipk_bytes.to_vec(); + let ipk_boxed = ipk_vec.into_boxed_slice(); + let ipk_ptr = Box::into_raw(ipk_boxed) as *const u8; + + unsafe { + (*out_keys).nullifier_public_key.data = npk_bytes; + (*out_keys).incoming_viewing_public_key = ipk_ptr; + (*out_keys).incoming_viewing_public_key_len = ipk_len; + } + + WalletFfiError::Success +} + +/// Free private account keys returned by `wallet_ffi_get_private_account_keys`. +/// +/// # Safety +/// The keys must be either null or valid keys returned by +/// `wallet_ffi_get_private_account_keys`. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAccountKeys) { + if keys.is_null() { + return; + } + + unsafe { + let keys = &*keys; + if !keys.incoming_viewing_public_key.is_null() && keys.incoming_viewing_public_key_len > 0 { + let slice = std::slice::from_raw_parts_mut( + keys.incoming_viewing_public_key as *mut u8, + keys.incoming_viewing_public_key_len, + ); + drop(Box::from_raw(slice as *mut [u8])); + } + } +} + +/// Convert an account ID to a Base58 string. +/// +/// # Parameters +/// - `account_id`: The account ID (32 bytes) +/// +/// # Returns +/// - Pointer to null-terminated Base58 string on success +/// - Null pointer on error +/// +/// # Memory +/// The returned string must be freed with `wallet_ffi_free_string()`. +/// +/// # Safety +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_account_id_to_base58( + account_id: *const FfiBytes32, +) -> *mut std::ffi::c_char { + if account_id.is_null() { + print_error("Null account_id pointer"); + return ptr::null_mut(); + } + + let account_id = AccountId::new(unsafe { (*account_id).data }); + let base58_str = account_id.to_string(); + + match std::ffi::CString::new(base58_str) { + Ok(s) => s.into_raw(), + Err(e) => { + print_error(format!("Failed to create C string: {}", e)); + ptr::null_mut() + } + } +} + +/// Parse a Base58 string into an account ID. +/// +/// # Parameters +/// - `base58_str`: Null-terminated Base58 string +/// - `out_account_id`: Output pointer for the account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful parsing +/// - `InvalidAccountId` if the string is not valid Base58 +/// - Error code on other failures +/// +/// # Safety +/// - `base58_str` must be a valid pointer to a null-terminated C string +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_account_id_from_base58( + base58_str: *const std::ffi::c_char, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + if base58_str.is_null() || out_account_id.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let c_str = unsafe { std::ffi::CStr::from_ptr(base58_str) }; + let str_slice = match c_str.to_str() { + Ok(s) => s, + Err(e) => { + print_error(format!("Invalid UTF-8: {}", e)); + return WalletFfiError::InvalidUtf8; + } + }; + + let account_id: AccountId = match str_slice.parse() { + Ok(id) => id, + Err(e) => { + print_error(format!("Invalid Base58 account ID: {}", e)); + return WalletFfiError::InvalidAccountId; + } + }; + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs new file mode 100644 index 00000000..e7f2ce98 --- /dev/null +++ b/wallet-ffi/src/lib.rs @@ -0,0 +1,63 @@ +//! NSSA Wallet FFI Library +//! +//! This crate provides C-compatible bindings for the NSSA wallet functionality. +//! +//! # Usage +//! +//! 1. Initialize the runtime with `wallet_ffi_init_runtime()` +//! 2. Create or open a wallet with `wallet_ffi_create_new()` or `wallet_ffi_open()` +//! 3. Use the wallet functions to manage accounts and transfers +//! 4. Destroy the wallet with `wallet_ffi_destroy()` when done +//! +//! # Thread Safety +//! +//! All functions are thread-safe. The wallet handle uses internal locking +//! to ensure safe concurrent access. +//! +//! # Memory Management +//! +//! - Functions returning pointers allocate memory that must be freed +//! - Use the corresponding `wallet_ffi_free_*` function to free memory +//! - Never free memory returned by FFI using standard C `free()` + +pub mod account; +pub mod error; +pub mod keys; +pub mod sync; +pub mod transfer; +pub mod types; +pub mod wallet; + +use std::sync::OnceLock; + +// Re-export public types for cbindgen +pub use error::WalletFfiError as FfiError; +use tokio::runtime::Handle; +pub use types::*; + +use crate::error::{print_error, WalletFfiError}; + +static TOKIO_RUNTIME: OnceLock<tokio::runtime::Runtime> = OnceLock::new(); + +/// Get a reference to the global runtime. +pub(crate) fn get_runtime() -> Result<&'static Handle, WalletFfiError> { + let runtime = TOKIO_RUNTIME.get_or_init(|| { + match tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + { + Ok(runtime) => runtime, + Err(e) => { + print_error(format!("{e}")); + panic!("Error initializing tokio runtime"); + } + } + }); + Ok(runtime.handle()) +} + +/// Run an async future on the global runtime, blocking until completion. +pub(crate) fn block_on<F: std::future::Future>(future: F) -> Result<F::Output, WalletFfiError> { + let runtime = get_runtime()?; + Ok(runtime.block_on(future)) +} diff --git a/wallet-ffi/src/sync.rs b/wallet-ffi/src/sync.rs new file mode 100644 index 00000000..3979f935 --- /dev/null +++ b/wallet-ffi/src/sync.rs @@ -0,0 +1,151 @@ +//! Block synchronization functions. + +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::WalletHandle, + wallet::get_wallet, +}; + +/// Synchronize private accounts to a specific block. +/// +/// This scans the blockchain from the last synced block to the specified block, +/// updating private account balances based on any relevant transactions. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `block_id`: Target block number to sync to +/// +/// # Returns +/// - `Success` if synchronization completed +/// - `SyncError` if synchronization failed +/// - Error code on other failures +/// +/// # Note +/// This operation can take a while for large block ranges. The wallet +/// internally uses a progress bar which may output to stdout. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_sync_to_block( + handle: *mut WalletHandle, + block_id: u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.sync_to_block(block_id)) { + Ok(Ok(())) => WalletFfiError::Success, + Ok(Err(e)) => { + print_error(format!("Sync failed: {}", e)); + WalletFfiError::SyncError + } + Err(e) => e, + } +} + +/// Get the last synced block number. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_block_id`: Output pointer for the block number +/// +/// # Returns +/// - `Success` on success +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_block_id` must be a valid pointer to a `u64` +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_last_synced_block( + handle: *mut WalletHandle, + out_block_id: *mut u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_block_id.is_null() { + print_error("Null output pointer"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + unsafe { + *out_block_id = wallet.last_synced_block; + } + + WalletFfiError::Success +} + +/// Get the current block height from the sequencer. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_block_height`: Output pointer for the current block height +/// +/// # Returns +/// - `Success` on success +/// - `NetworkError` if the sequencer is unreachable +/// - Error code on other failures +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_block_height` must be a valid pointer to a `u64` +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_current_block_height( + handle: *mut WalletHandle, + out_block_height: *mut u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_block_height.is_null() { + print_error("Null output pointer"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.sequencer_client.get_last_block()) { + Ok(Ok(response)) => { + unsafe { + *out_block_height = response.last_block; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + print_error(format!("Failed to get block height: {:?}", e)); + WalletFfiError::NetworkError + } + Err(e) => e, + } +} diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs new file mode 100644 index 00000000..055f0c32 --- /dev/null +++ b/wallet-ffi/src/transfer.rs @@ -0,0 +1,199 @@ +//! Token transfer functions. + +use std::{ffi::CString, ptr}; + +use common::error::ExecutionFailureKind; +use nssa::AccountId; +use wallet::program_facades::native_token_transfer::NativeTokenTransfer; + +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::{FfiBytes32, FfiTransferResult, WalletHandle}, + wallet::get_wallet, +}; + +/// Send a public token transfer. +/// +/// Transfers tokens from one public account to another on the network. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `from`: Source account ID (must be owned by this wallet) +/// - `to`: Destination account ID +/// - `amount`: Amount to transfer as little-endian [u8; 16] +/// - `out_result`: Output pointer for transfer result +/// +/// # Returns +/// - `Success` if the transfer was submitted successfully +/// - `InsufficientFunds` if the source account doesn't have enough balance +/// - `KeyNotFound` if the source account's signing key is not in this wallet +/// - Error code on other failures +/// +/// # Memory +/// The result must be freed with `wallet_ffi_free_transfer_result()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `from` must be a valid pointer to a `FfiBytes32` struct +/// - `to` must be a valid pointer to a `FfiBytes32` struct +/// - `amount` must be a valid pointer to a `[u8; 16]` array +/// - `out_result` must be a valid pointer to a `FfiTransferResult` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_transfer_public( + handle: *mut WalletHandle, + from: *const FfiBytes32, + to: *const FfiBytes32, + amount: *const [u8; 16], + out_result: *mut FfiTransferResult, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if from.is_null() || to.is_null() || amount.is_null() || out_result.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let from_id = AccountId::new(unsafe { (*from).data }); + let to_id = AccountId::new(unsafe { (*to).data }); + let amount = u128::from_le_bytes(unsafe { *amount }); + + let transfer = NativeTokenTransfer(&wallet); + + match block_on(transfer.send_public_transfer(from_id, to_id, amount)) { + Ok(Ok(response)) => { + let tx_hash = CString::new(response.tx_hash) + .map(|s| s.into_raw()) + .unwrap_or(ptr::null_mut()); + + unsafe { + (*out_result).tx_hash = tx_hash; + (*out_result).success = true; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + print_error(format!("Transfer failed: {:?}", e)); + unsafe { + (*out_result).tx_hash = ptr::null_mut(); + (*out_result).success = false; + } + match e { + ExecutionFailureKind::InsufficientFundsError => WalletFfiError::InsufficientFunds, + ExecutionFailureKind::KeyNotFoundError => WalletFfiError::KeyNotFound, + ExecutionFailureKind::SequencerError => WalletFfiError::NetworkError, + ExecutionFailureKind::SequencerClientError(_) => WalletFfiError::NetworkError, + _ => WalletFfiError::InternalError, + } + } + Err(e) => e, + } +} + +/// Register a public account on the network. +/// +/// This initializes a public account on the blockchain. The account must be +/// owned by this wallet. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: Account ID to register +/// - `out_result`: Output pointer for registration result +/// +/// # Returns +/// - `Success` if the registration was submitted successfully +/// - Error code on failure +/// +/// # Memory +/// The result must be freed with `wallet_ffi_free_transfer_result()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_result` must be a valid pointer to a `FfiTransferResult` struct +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_register_public_account( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_result: *mut FfiTransferResult, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_result.is_null() { + print_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let transfer = NativeTokenTransfer(&wallet); + + match block_on(transfer.register_account(account_id)) { + Ok(Ok(response)) => { + let tx_hash = CString::new(response.tx_hash) + .map(|s| s.into_raw()) + .unwrap_or(ptr::null_mut()); + + unsafe { + (*out_result).tx_hash = tx_hash; + (*out_result).success = true; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + print_error(format!("Registration failed: {:?}", e)); + unsafe { + (*out_result).tx_hash = ptr::null_mut(); + (*out_result).success = false; + } + match e { + ExecutionFailureKind::KeyNotFoundError => WalletFfiError::KeyNotFound, + ExecutionFailureKind::SequencerError => WalletFfiError::NetworkError, + ExecutionFailureKind::SequencerClientError(_) => WalletFfiError::NetworkError, + _ => WalletFfiError::InternalError, + } + } + Err(e) => e, + } +} + +/// Free a transfer result returned by `wallet_ffi_transfer_public` or +/// `wallet_ffi_register_public_account`. +/// +/// # Safety +/// The result must be either null or a valid result from a transfer function. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_free_transfer_result(result: *mut FfiTransferResult) { + if result.is_null() { + return; + } + + unsafe { + let result = &*result; + if !result.tx_hash.is_null() { + drop(CString::from_raw(result.tx_hash)); + } + } +} diff --git a/wallet-ffi/src/types.rs b/wallet-ffi/src/types.rs new file mode 100644 index 00000000..a1d70181 --- /dev/null +++ b/wallet-ffi/src/types.rs @@ -0,0 +1,262 @@ +//! C-compatible type definitions for the FFI layer. + +use core::slice; +use std::{ffi::c_char, ptr}; + +use nssa::{Account, Data}; +use nssa_core::encryption::shared_key_derivation::Secp256k1Point; + +use crate::error::WalletFfiError; + +/// Opaque pointer to the Wallet instance. +/// +/// This type is never instantiated directly - it's used as an opaque handle +/// to hide the internal wallet structure from C code. +#[repr(C)] +pub struct WalletHandle { + _private: [u8; 0], +} + +/// 32-byte array type for AccountId, keys, hashes, etc. +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiBytes32 { + pub data: [u8; 32], +} + +/// Program ID - 8 u32 values (32 bytes total). +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiProgramId { + pub data: [u32; 8], +} + +/// U128 - 16 bytes little endian +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiU128 { + pub data: [u8; 16], +} + +/// Account data structure - C-compatible version of nssa Account. +/// +/// Note: `balance` and `nonce` are u128 values represented as little-endian +/// byte arrays since C doesn't have native u128 support. +#[repr(C)] +pub struct FfiAccount { + pub program_owner: FfiProgramId, + /// Balance as little-endian [u8; 16] + pub balance: FfiU128, + /// Pointer to account data bytes + pub data: *const u8, + /// Length of account data + pub data_len: usize, + /// Nonce as little-endian [u8; 16] + pub nonce: FfiU128, +} + +impl Default for FfiAccount { + fn default() -> Self { + Self { + program_owner: FfiProgramId::default(), + balance: FfiU128::default(), + data: std::ptr::null(), + data_len: 0, + nonce: FfiU128::default(), + } + } +} + +/// Public keys for a private account (safe to expose). +#[repr(C)] +pub struct FfiPrivateAccountKeys { + /// Nullifier public key (32 bytes) + pub nullifier_public_key: FfiBytes32, + /// Incoming viewing public key (compressed secp256k1 point) + pub incoming_viewing_public_key: *const u8, + /// Length of incoming viewing public key (typically 33 bytes) + pub incoming_viewing_public_key_len: usize, +} + +impl Default for FfiPrivateAccountKeys { + fn default() -> Self { + Self { + nullifier_public_key: FfiBytes32::default(), + incoming_viewing_public_key: std::ptr::null(), + incoming_viewing_public_key_len: 0, + } + } +} + +/// Public key info for a public account. +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiPublicAccountKey { + pub public_key: FfiBytes32, +} + +/// Single entry in the account list. +#[repr(C)] +#[derive(Clone, Copy)] +pub struct FfiAccountListEntry { + pub account_id: FfiBytes32, + pub is_public: bool, +} + +/// List of accounts returned by wallet_ffi_list_accounts. +#[repr(C)] +pub struct FfiAccountList { + pub entries: *mut FfiAccountListEntry, + pub count: usize, +} + +impl Default for FfiAccountList { + fn default() -> Self { + Self { + entries: std::ptr::null_mut(), + count: 0, + } + } +} + +/// Result of a transfer operation. +#[repr(C)] +pub struct FfiTransferResult { + /// Transaction hash (null-terminated string, or null on failure) + pub tx_hash: *mut c_char, + /// Whether the transfer succeeded + pub success: bool, +} + +impl Default for FfiTransferResult { + fn default() -> Self { + Self { + tx_hash: std::ptr::null_mut(), + success: false, + } + } +} + +// Helper functions to convert between Rust and FFI types + +impl FfiBytes32 { + /// Create from a 32-byte array. + pub fn from_bytes(bytes: [u8; 32]) -> Self { + Self { data: bytes } + } + + /// Create from an AccountId. + pub fn from_account_id(id: &nssa::AccountId) -> Self { + Self { data: *id.value() } + } +} + +impl FfiPrivateAccountKeys { + pub fn npk(&self) -> nssa_core::NullifierPublicKey { + nssa_core::NullifierPublicKey(self.nullifier_public_key.data) + } + + pub fn ivk(&self) -> Result<nssa_core::encryption::IncomingViewingPublicKey, WalletFfiError> { + if self.incoming_viewing_public_key_len == 33 { + let slice = unsafe { + slice::from_raw_parts( + self.incoming_viewing_public_key, + self.incoming_viewing_public_key_len, + ) + }; + Ok(Secp256k1Point(slice.to_vec())) + } else { + Err(WalletFfiError::InvalidKeyValue) + } + } +} + +impl From<u128> for FfiU128 { + fn from(value: u128) -> Self { + Self { + data: value.to_le_bytes(), + } + } +} + +impl From<FfiU128> for u128 { + fn from(value: FfiU128) -> Self { + u128::from_le_bytes(value.data) + } +} + +impl From<&nssa::AccountId> for FfiBytes32 { + fn from(id: &nssa::AccountId) -> Self { + Self::from_account_id(id) + } +} + +impl From<FfiBytes32> for nssa::AccountId { + fn from(bytes: FfiBytes32) -> Self { + nssa::AccountId::new(bytes.data) + } +} + +impl From<nssa::Account> for FfiAccount { + fn from(value: nssa::Account) -> Self { + // Convert account data to FFI type + let data_vec: Vec<u8> = value.data.into(); + let data_len = data_vec.len(); + let data = if data_len > 0 { + let data_boxed = data_vec.into_boxed_slice(); + Box::into_raw(data_boxed) as *const u8 + } else { + ptr::null() + }; + + let program_owner = FfiProgramId { + data: value.program_owner, + }; + FfiAccount { + program_owner, + balance: value.balance.into(), + data, + data_len, + nonce: value.nonce.into(), + } + } +} + +impl TryFrom<&FfiAccount> for nssa::Account { + type Error = WalletFfiError; + + fn try_from(value: &FfiAccount) -> Result<Self, Self::Error> { + let data = if value.data_len > 0 { + unsafe { + let slice = slice::from_raw_parts(value.data, value.data_len); + Data::try_from(slice.to_vec()).map_err(|_| WalletFfiError::InvalidTypeConversion)? + } + } else { + Data::default() + }; + Ok(Account { + program_owner: value.program_owner.data, + balance: value.balance.into(), + data, + nonce: value.nonce.into(), + }) + } +} + +impl From<nssa::PublicKey> for FfiPublicAccountKey { + fn from(value: nssa::PublicKey) -> Self { + Self { + public_key: FfiBytes32::from_bytes(*value.value()), + } + } +} + +impl TryFrom<&FfiPublicAccountKey> for nssa::PublicKey { + type Error = WalletFfiError; + + fn try_from(value: &FfiPublicAccountKey) -> Result<Self, Self::Error> { + let public_key = nssa::PublicKey::try_new(value.public_key.data) + .map_err(|_| WalletFfiError::InvalidTypeConversion)?; + Ok(public_key) + } +} diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs new file mode 100644 index 00000000..6f817f8e --- /dev/null +++ b/wallet-ffi/src/wallet.rs @@ -0,0 +1,279 @@ +//! Wallet lifecycle management functions. + +use std::{ + ffi::{c_char, CStr}, + path::PathBuf, + ptr, + sync::Mutex, +}; + +use wallet::WalletCore; + +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::WalletHandle, +}; + +/// Internal wrapper around WalletCore with mutex for thread safety. +pub(crate) struct WalletWrapper { + pub core: Mutex<WalletCore>, +} + +/// Helper to get the wallet wrapper from an opaque handle. +pub(crate) fn get_wallet( + handle: *mut WalletHandle, +) -> Result<&'static WalletWrapper, WalletFfiError> { + if handle.is_null() { + print_error("Null wallet handle"); + return Err(WalletFfiError::NullPointer); + } + Ok(unsafe { &*(handle as *mut WalletWrapper) }) +} + +/// Helper to get a mutable reference to the wallet wrapper. +#[allow(dead_code)] +pub(crate) fn get_wallet_mut( + handle: *mut WalletHandle, +) -> Result<&'static mut WalletWrapper, WalletFfiError> { + if handle.is_null() { + print_error("Null wallet handle"); + return Err(WalletFfiError::NullPointer); + } + Ok(unsafe { &mut *(handle as *mut WalletWrapper) }) +} + +/// Helper to convert a C string to a Rust PathBuf. +fn c_str_to_path(ptr: *const c_char, name: &str) -> Result<PathBuf, WalletFfiError> { + if ptr.is_null() { + print_error(format!("Null pointer for {}", name)); + return Err(WalletFfiError::NullPointer); + } + + let c_str = unsafe { CStr::from_ptr(ptr) }; + match c_str.to_str() { + Ok(s) => Ok(PathBuf::from(s)), + Err(e) => { + print_error(format!("Invalid UTF-8 in {}: {}", name, e)); + Err(WalletFfiError::InvalidUtf8) + } + } +} + +/// Helper to convert a C string to a Rust String. +fn c_str_to_string(ptr: *const c_char, name: &str) -> Result<String, WalletFfiError> { + if ptr.is_null() { + print_error(format!("Null pointer for {}", name)); + return Err(WalletFfiError::NullPointer); + } + + let c_str = unsafe { CStr::from_ptr(ptr) }; + match c_str.to_str() { + Ok(s) => Ok(s.to_string()), + Err(e) => { + print_error(format!("Invalid UTF-8 in {}: {}", name, e)); + Err(WalletFfiError::InvalidUtf8) + } + } +} + +/// Create a new wallet with fresh storage. +/// +/// This initializes a new wallet with a new seed derived from the password. +/// Use this for first-time wallet creation. +/// +/// # Parameters +/// - `config_path`: Path to the wallet configuration file (JSON) +/// - `storage_path`: Path where wallet data will be stored +/// - `password`: Password for encrypting the wallet seed +/// +/// # Returns +/// - Opaque wallet handle on success +/// - Null pointer on error (call `wallet_ffi_get_last_error()` for details) +/// +/// # Safety +/// All string parameters must be valid null-terminated UTF-8 strings. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_create_new( + config_path: *const c_char, + storage_path: *const c_char, + password: *const c_char, +) -> *mut WalletHandle { + let config_path = match c_str_to_path(config_path, "config_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let storage_path = match c_str_to_path(storage_path, "storage_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let password = match c_str_to_string(password, "password") { + Ok(s) => s, + Err(_) => return ptr::null_mut(), + }; + + match WalletCore::new_init_storage(config_path, storage_path, None, password) { + Ok(core) => { + let wrapper = Box::new(WalletWrapper { + core: Mutex::new(core), + }); + Box::into_raw(wrapper) as *mut WalletHandle + } + Err(e) => { + print_error(format!("Failed to create wallet: {}", e)); + ptr::null_mut() + } + } +} + +/// Open an existing wallet from storage. +/// +/// This loads a wallet that was previously created with `wallet_ffi_create_new()`. +/// +/// # Parameters +/// - `config_path`: Path to the wallet configuration file (JSON) +/// - `storage_path`: Path where wallet data is stored +/// +/// # Returns +/// - Opaque wallet handle on success +/// - Null pointer on error (call `wallet_ffi_get_last_error()` for details) +/// +/// # Safety +/// All string parameters must be valid null-terminated UTF-8 strings. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_open( + config_path: *const c_char, + storage_path: *const c_char, +) -> *mut WalletHandle { + let config_path = match c_str_to_path(config_path, "config_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let storage_path = match c_str_to_path(storage_path, "storage_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + match WalletCore::new_update_chain(config_path, storage_path, None) { + Ok(core) => { + let wrapper = Box::new(WalletWrapper { + core: Mutex::new(core), + }); + Box::into_raw(wrapper) as *mut WalletHandle + } + Err(e) => { + print_error(format!("Failed to open wallet: {}", e)); + ptr::null_mut() + } + } +} + +/// Destroy a wallet handle and free its resources. +/// +/// After calling this function, the handle is invalid and must not be used. +/// +/// # Safety +/// - The handle must be either null or a valid handle from `wallet_ffi_create_new()` or +/// `wallet_ffi_open()`. +/// - The handle must not be used after this call. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { + if !handle.is_null() { + unsafe { + drop(Box::from_raw(handle as *mut WalletWrapper)); + } + } +} + +/// Save wallet state to persistent storage. +/// +/// This should be called periodically or after important operations to ensure +/// wallet data is persisted to disk. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// +/// # Returns +/// - `Success` on successful save +/// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.store_persistent_data()) { + Ok(Ok(())) => WalletFfiError::Success, + Ok(Err(e)) => { + print_error(format!("Failed to save wallet: {}", e)); + WalletFfiError::StorageError + } + Err(e) => e, + } +} + +/// Get the sequencer address from the wallet configuration. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// +/// # Returns +/// - Pointer to null-terminated string on success (caller must free with +/// `wallet_ffi_free_string()`) +/// - Null pointer on error +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *mut c_char { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(_) => return ptr::null_mut(), + }; + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + print_error(format!("Failed to lock wallet: {}", e)); + return ptr::null_mut(); + } + }; + + let addr = wallet.config().sequencer_addr.clone(); + + match std::ffi::CString::new(addr) { + Ok(s) => s.into_raw(), + Err(e) => { + print_error(format!("Invalid sequencer address: {}", e)); + ptr::null_mut() + } + } +} + +/// Free a string returned by wallet FFI functions. +/// +/// # Safety +/// The pointer must be either null or a valid string returned by an FFI function. +#[no_mangle] +pub unsafe extern "C" fn wallet_ffi_free_string(ptr: *mut c_char) { + if !ptr.is_null() { + unsafe { + drop(std::ffi::CString::from_raw(ptr)); + } + } +} diff --git a/wallet/Cargo.toml b/wallet/Cargo.toml index 9158aa3c..527ddfde 100644 --- a/wallet/Cargo.toml +++ b/wallet/Cargo.toml @@ -2,6 +2,7 @@ name = "wallet" version = "0.1.0" edition = "2024" +license = { workspace = true } [dependencies] nssa_core.workspace = true @@ -31,3 +32,4 @@ risc0-zkvm.workspace = true async-stream = "0.3.6" indicatif = { version = "0.18.3", features = ["improved_unicode"] } optfield = "0.4.0" +url.workspace = true diff --git a/wallet/src/chain_storage.rs b/wallet/src/chain_storage.rs index 7d8ed505..300fe292 100644 --- a/wallet/src/chain_storage.rs +++ b/wallet/src/chain_storage.rs @@ -11,17 +11,19 @@ use key_protocol::{ use log::debug; use nssa::program::Program; -use crate::config::{InitialAccountData, PersistentAccountData, WalletConfig}; +use crate::config::{InitialAccountData, Label, PersistentAccountData, WalletConfig}; pub struct WalletChainStore { pub user_data: NSSAUserData, pub wallet_config: WalletConfig, + pub labels: HashMap<String, Label>, } impl WalletChainStore { pub fn new( config: WalletConfig, persistent_accounts: Vec<PersistentAccountData>, + labels: HashMap<String, Label>, ) -> Result<Self> { if persistent_accounts.is_empty() { anyhow::bail!("Roots not found; please run setup beforehand"); @@ -85,6 +87,7 @@ impl WalletChainStore { private_tree, )?, wallet_config: config, + labels, }) } @@ -120,6 +123,7 @@ impl WalletChainStore { private_tree, )?, wallet_config: config, + labels: HashMap::new(), }) } @@ -291,6 +295,6 @@ mod tests { let config = create_sample_wallet_config(); let accs = create_sample_persistent_accounts(); - let _ = WalletChainStore::new(config.clone(), accs).unwrap(); + let _ = WalletChainStore::new(config.clone(), accs, HashMap::new()).unwrap(); } } diff --git a/wallet/src/cli/account.rs b/wallet/src/cli/account.rs index b3663e02..9407c8c5 100644 --- a/wallet/src/cli/account.rs +++ b/wallet/src/cli/account.rs @@ -9,6 +9,7 @@ use token_core::{TokenDefinition, TokenHolding}; use crate::{ WalletCore, cli::{SubcommandReturnValue, WalletSubcommand}, + config::Label, helperfunctions::{AccountPrivacyKind, HumanReadableAccount, parse_addr_with_privacy_prefix}, }; @@ -39,6 +40,15 @@ pub enum AccountSubcommand { #[arg(short, long)] long: bool, }, + /// Set a label for an account + Label { + /// Valid 32 byte base58 string with privacy prefix + #[arg(short, long)] + account_id: String, + /// The label to assign to the account + #[arg(short, long)] + label: String, + }, } /// Represents generic register CLI subcommand @@ -161,9 +171,13 @@ impl WalletSubcommand for AccountSubcommand { keys, account_id, } => { - let (account_id, addr_kind) = parse_addr_with_privacy_prefix(&account_id)?; + let (account_id_str, addr_kind) = parse_addr_with_privacy_prefix(&account_id)?; - let account_id = account_id.parse()?; + let account_id: nssa::AccountId = account_id_str.parse()?; + + if let Some(label) = wallet_core.storage.labels.get(&account_id_str) { + println!("Label: {label}"); + } let account = match addr_kind { AccountPrivacyKind::Public => { @@ -259,32 +273,35 @@ impl WalletSubcommand for AccountSubcommand { } AccountSubcommand::List { long } => { let user_data = &wallet_core.storage.user_data; + let labels = &wallet_core.storage.labels; + + let format_with_label = |prefix: &str, id: &nssa::AccountId| { + let id_str = id.to_string(); + if let Some(label) = labels.get(&id_str) { + format!("{prefix} [{label}]") + } else { + prefix.to_string() + } + }; if !long { let accounts = user_data .default_pub_account_signing_keys .keys() - .map(|id| format!("Preconfigured Public/{id}")) - .chain( - user_data - .default_user_private_accounts - .keys() - .map(|id| format!("Preconfigured Private/{id}")), - ) - .chain( - user_data - .public_key_tree - .account_id_map - .iter() - .map(|(id, chain_index)| format!("{chain_index} Public/{id}")), - ) - .chain( - user_data - .private_key_tree - .account_id_map - .iter() - .map(|(id, chain_index)| format!("{chain_index} Private/{id}")), - ) + .map(|id| format_with_label(&format!("Preconfigured Public/{id}"), id)) + .chain(user_data.default_user_private_accounts.keys().map(|id| { + format_with_label(&format!("Preconfigured Private/{id}"), id) + })) + .chain(user_data.public_key_tree.account_id_map.iter().map( + |(id, chain_index)| { + format_with_label(&format!("{chain_index} Public/{id}"), id) + }, + )) + .chain(user_data.private_key_tree.account_id_map.iter().map( + |(id, chain_index)| { + format_with_label(&format!("{chain_index} Private/{id}"), id) + }, + )) .format("\n"); println!("{accounts}"); @@ -294,7 +311,10 @@ impl WalletSubcommand for AccountSubcommand { // Detailed listing with --long flag // Preconfigured public accounts for id in user_data.default_pub_account_signing_keys.keys() { - println!("Preconfigured Public/{id}"); + println!( + "{}", + format_with_label(&format!("Preconfigured Public/{id}"), id) + ); match wallet_core.get_account_public(*id).await { Ok(account) if account != Account::default() => { let (description, json_view) = format_account_details(&account); @@ -308,7 +328,10 @@ impl WalletSubcommand for AccountSubcommand { // Preconfigured private accounts for id in user_data.default_user_private_accounts.keys() { - println!("Preconfigured Private/{id}"); + println!( + "{}", + format_with_label(&format!("Preconfigured Private/{id}"), id) + ); match wallet_core.get_account_private(id) { Some(account) if account != Account::default() => { let (description, json_view) = format_account_details(&account); @@ -322,7 +345,10 @@ impl WalletSubcommand for AccountSubcommand { // Public key tree accounts for (id, chain_index) in user_data.public_key_tree.account_id_map.iter() { - println!("{chain_index} Public/{id}"); + println!( + "{}", + format_with_label(&format!("{chain_index} Public/{id}"), id) + ); match wallet_core.get_account_public(*id).await { Ok(account) if account != Account::default() => { let (description, json_view) = format_account_details(&account); @@ -336,7 +362,10 @@ impl WalletSubcommand for AccountSubcommand { // Private key tree accounts for (id, chain_index) in user_data.private_key_tree.account_id_map.iter() { - println!("{chain_index} Private/{id}"); + println!( + "{}", + format_with_label(&format!("{chain_index} Private/{id}"), id) + ); match wallet_core.get_account_private(id) { Some(account) if account != Account::default() => { let (description, json_view) = format_account_details(&account); @@ -348,6 +377,23 @@ impl WalletSubcommand for AccountSubcommand { } } + Ok(SubcommandReturnValue::Empty) + } + AccountSubcommand::Label { account_id, label } => { + let (account_id_str, _) = parse_addr_with_privacy_prefix(&account_id)?; + + let old_label = wallet_core + .storage + .labels + .insert(account_id_str.clone(), Label::new(label.clone())); + + wallet_core.store_persistent_data().await?; + + if let Some(old) = old_label { + eprintln!("Warning: overriding existing label '{old}'"); + } + println!("Label '{label}' set for account {account_id_str}"); + Ok(SubcommandReturnValue::Empty) } } diff --git a/wallet/src/config.rs b/wallet/src/config.rs index 45407b6d..9f07cb34 100644 --- a/wallet/src/config.rs +++ b/wallet/src/config.rs @@ -1,10 +1,11 @@ use std::{ + collections::HashMap, io::{BufReader, Write as _}, path::Path, - str::FromStr, }; use anyhow::{Context as _, Result}; +use common::sequencer_client::BasicAuth; use key_protocol::key_management::{ KeyChain, key_tree::{ @@ -14,49 +15,6 @@ use key_protocol::key_management::{ use log::warn; use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct BasicAuth { - pub username: String, - pub password: Option<String>, -} - -impl std::fmt::Display for BasicAuth { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.username)?; - if let Some(password) = &self.password { - write!(f, ":{password}")?; - } - - Ok(()) - } -} - -impl FromStr for BasicAuth { - type Err = anyhow::Error; - - fn from_str(s: &str) -> Result<Self, Self::Err> { - let parse = || { - let mut parts = s.splitn(2, ':'); - let username = parts.next()?; - let password = parts.next().filter(|p| !p.is_empty()); - if parts.next().is_some() { - return None; - } - - Some((username, password)) - }; - - let (username, password) = parse().ok_or_else(|| { - anyhow::anyhow!("Invalid auth format. Expected 'user' or 'user:password'") - })?; - - Ok(Self { - username: username.to_string(), - password: password.map(|p| p.to_string()), - }) - } -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct InitialAccountDataPublic { pub account_id: String, @@ -105,10 +63,30 @@ pub enum PersistentAccountData { Preconfigured(InitialAccountData), } +/// A human-readable label for an account. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub struct Label(String); + +impl Label { + pub fn new(label: String) -> Self { + Self(label) + } +} + +impl std::fmt::Display for Label { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct PersistentStorage { pub accounts: Vec<PersistentAccountData>, pub last_synced_block: u64, + /// Account labels keyed by account ID string (e.g., + /// "2rnKprXqWGWJTkDZKsQbFXa4ctKRbapsdoTKQFnaVGG8") + #[serde(default)] + pub labels: HashMap<String, Label>, } impl PersistentStorage { @@ -197,7 +175,7 @@ pub struct GasConfig { pub gas_limit_runtime: u64, } -#[optfield::optfield(pub WalletConfigOverrides, rewrap, attrs = (derive(Debug, Default)))] +#[optfield::optfield(pub WalletConfigOverrides, rewrap, attrs = (derive(Debug, Default, Clone)))] #[derive(Debug, Clone, Serialize, Deserialize)] pub struct WalletConfig { /// Override rust log (env var logging level) diff --git a/wallet/src/helperfunctions.rs b/wallet/src/helperfunctions.rs index 23bf4bb8..0162ef18 100644 --- a/wallet/src/helperfunctions.rs +++ b/wallet/src/helperfunctions.rs @@ -1,4 +1,4 @@ -use std::{path::PathBuf, str::FromStr}; +use std::{collections::HashMap, path::PathBuf, str::FromStr}; use anyhow::Result; use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; @@ -11,7 +11,7 @@ use serde::Serialize; use crate::{ HOME_DIR_ENV_VAR, config::{ - InitialAccountData, InitialAccountDataPrivate, InitialAccountDataPublic, + InitialAccountData, InitialAccountDataPrivate, InitialAccountDataPublic, Label, PersistentAccountDataPrivate, PersistentAccountDataPublic, PersistentStorage, }, }; @@ -57,6 +57,7 @@ pub fn fetch_persistent_storage_path() -> Result<PathBuf> { pub fn produce_data_for_storage( user_data: &NSSAUserData, last_synced_block: u64, + labels: HashMap<String, Label>, ) -> PersistentStorage { let mut vec_for_storage = vec![]; @@ -110,6 +111,7 @@ pub fn produce_data_for_storage( PersistentStorage { accounts: vec_for_storage, last_synced_block, + labels, } } diff --git a/wallet/src/lib.rs b/wallet/src/lib.rs index 84144597..baf263ce 100644 --- a/wallet/src/lib.rs +++ b/wallet/src/lib.rs @@ -21,6 +21,7 @@ use nssa::{ use nssa_core::{Commitment, MembershipProof, SharedSecretKey, program::InstructionData}; pub use privacy_preserving_tx::PrivacyPreservingAccount; use tokio::io::AsyncWriteExt; +use url::Url; use crate::{ config::{PersistentStorage, WalletConfigOverrides}, @@ -45,6 +46,7 @@ pub enum AccDecodeData { pub struct WalletCore { config_path: PathBuf, + config_overrides: Option<WalletConfigOverrides>, storage: WalletChainStore, storage_path: PathBuf, poller: TxPoller, @@ -70,6 +72,7 @@ impl WalletCore { let PersistentStorage { accounts: persistent_accounts, last_synced_block, + labels, } = PersistentStorage::from_path(&storage_path) .with_context(|| format!("Failed to read persistent storage at {storage_path:#?}"))?; @@ -77,7 +80,7 @@ impl WalletCore { config_path, storage_path, config_overrides, - |config| WalletChainStore::new(config, persistent_accounts), + |config| WalletChainStore::new(config, persistent_accounts, labels), last_synced_block, ) } @@ -106,17 +109,13 @@ impl WalletCore { ) -> Result<Self> { let mut config = WalletConfig::from_path_or_initialize_default(&config_path) .with_context(|| format!("Failed to deserialize wallet config at {config_path:#?}"))?; - if let Some(config_overrides) = config_overrides { + if let Some(config_overrides) = config_overrides.clone() { config.apply_overrides(config_overrides); } - let basic_auth = config - .basic_auth - .as_ref() - .map(|auth| (auth.username.clone(), auth.password.clone())); let sequencer_client = Arc::new(SequencerClient::new_with_auth( - config.sequencer_addr.clone(), - basic_auth, + Url::parse(&config.sequencer_addr)?, + config.basic_auth.clone(), )?); let tx_poller = TxPoller::new(config.clone(), Arc::clone(&sequencer_client)); @@ -129,6 +128,7 @@ impl WalletCore { poller: tx_poller, sequencer_client, last_synced_block, + config_overrides, }) } @@ -150,7 +150,11 @@ impl WalletCore { /// Store persistent data at home pub async fn store_persistent_data(&self) -> Result<()> { - let data = produce_data_for_storage(&self.storage.user_data, self.last_synced_block); + let data = produce_data_for_storage( + &self.storage.user_data, + self.last_synced_block, + self.storage.labels.clone(), + ); let storage = serde_json::to_vec_pretty(&data)?; let mut storage_file = tokio::fs::File::create(&self.storage_path).await?; @@ -463,4 +467,16 @@ impl WalletCore { .insert_private_account_data(affected_account_id, new_acc); } } + + pub fn config_path(&self) -> &PathBuf { + &self.config_path + } + + pub fn storage_path(&self) -> &PathBuf { + &self.storage_path + } + + pub fn config_overrides(&self) -> &Option<WalletConfigOverrides> { + &self.config_overrides + } }

(a)3#|k;(|9q@M8~VD220)mvB8Kn-Y#W2D_Rew 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 delta 113723 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 AcmMzZ diff --git a/artifacts/test_program_methods/burner.bin b/artifacts/test_program_methods/burner.bin index d572d0dc93d15f7c81f9837fa6d3be890611fa28..f9102842de72dd10cf3f82fa8d7bd9ab9e2ae9dd 100644 GIT binary patch delta 76581 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 diff --git a/artifacts/test_program_methods/changer_claimer.bin b/artifacts/test_program_methods/changer_claimer.bin index c468f849eb858553ac7684c5c45f34dc18035eb4..391ec799aa85609848aa5a06e221e0c319f05eb5 100644 GIT binary patch delta 77590 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