From 62d9bebaa35e5224cb96e2d0ff47ca80e7303f90 Mon Sep 17 00:00:00 2001 From: Jack May Date: Mon, 17 Jun 2019 15:09:32 -0700 Subject: [PATCH] Update examples to new SDK (#358) --- web3.js/.travis.yml | 2 +- web3.js/examples/bpf-c-noop/makefile | 2 +- web3.js/examples/bpf-rust-noop/Cargo.toml | 11 +- web3.js/examples/bpf-rust-noop/Xargo.toml | 8 +- web3.js/examples/bpf-rust-noop/bpf.ld | 19 - web3.js/examples/bpf-rust-noop/build.sh | 27 -- web3.js/examples/bpf-rust-noop/clean.sh | 5 - web3.js/examples/bpf-rust-noop/dump.sh | 12 - web3.js/examples/bpf-rust-noop/src/lib.rs | 29 +- .../examples/bpf-rust-noop/src/solana_sdk.rs | 409 ------------------ web3.js/test/fixtures/noop-c/noop.so | Bin 3520 -> 4288 bytes web3.js/test/fixtures/noop-rust/build.sh | 2 +- .../noop-rust/solana_bpf_rust_noop.so | Bin 111992 -> 102608 bytes 13 files changed, 32 insertions(+), 494 deletions(-) delete mode 100644 web3.js/examples/bpf-rust-noop/bpf.ld delete mode 100755 web3.js/examples/bpf-rust-noop/build.sh delete mode 100755 web3.js/examples/bpf-rust-noop/clean.sh delete mode 100755 web3.js/examples/bpf-rust-noop/dump.sh delete mode 100644 web3.js/examples/bpf-rust-noop/src/solana_sdk.rs diff --git a/web3.js/.travis.yml b/web3.js/.travis.yml index 6560e720f2..25c6d06fd1 100644 --- a/web3.js/.travis.yml +++ b/web3.js/.travis.yml @@ -33,7 +33,7 @@ script: - npm run lint - npm run codecov - make -C examples/bpf-c-noop/ - - ./examples/bpf-rust-noop/build.sh + - bpf-sdk/rust/build.sh examples/bpf-rust-noop - npm run localnet:update - npm run localnet:up - npm run examples || true diff --git a/web3.js/examples/bpf-c-noop/makefile b/web3.js/examples/bpf-c-noop/makefile index 24740ee5d5..467f9a6bbc 100644 --- a/web3.js/examples/bpf-c-noop/makefile +++ b/web3.js/examples/bpf-c-noop/makefile @@ -1 +1 @@ -include ../../bpf-sdk/bpf.mk +include ../../bpf-sdk/c/bpf.mk diff --git a/web3.js/examples/bpf-rust-noop/Cargo.toml b/web3.js/examples/bpf-rust-noop/Cargo.toml index 7a6473c5c8..5e6071a51b 100644 --- a/web3.js/examples/bpf-rust-noop/Cargo.toml +++ b/web3.js/examples/bpf-rust-noop/Cargo.toml @@ -3,23 +3,20 @@ [package] name = "solana-bpf-rust-noop" -version = "0.15.0" +version = "0.16.0" description = "Solana BPF noop program written in Rust" authors = ["Solana Maintainers "] repository = "https://github.com/solana-labs/solana" license = "Apache-2.0" homepage = "https://solana.com/" +edition = "2018" [dependencies] -# byteorder = { version = "1.3.1", default-features = false } -# heapless = { version = "0.4.0", default-features = false } -# byte = { version = "0.2", default-features = false } +solana-sdk-bpf-utils = { path = "../../bpf-sdk/rust/rust-utils", version = "0.16.0" } [workspace] members = [] [lib] -name = "solana_bpf_rust_noop" crate-type = ["cdylib"] - - +name = "solana_bpf_rust_noop" diff --git a/web3.js/examples/bpf-rust-noop/Xargo.toml b/web3.js/examples/bpf-rust-noop/Xargo.toml index db70306d58..330342622c 100644 --- a/web3.js/examples/bpf-rust-noop/Xargo.toml +++ b/web3.js/examples/bpf-rust-noop/Xargo.toml @@ -1,4 +1,6 @@ - - [dependencies.compiler_builtins] -path = "../../bpf-sdk/rust-bpf-sysroot/src/compiler-builtins" \ No newline at end of file +path = "../../bpf-sdk/dependencies/rust-bpf-sysroot/src/compiler-builtins" +features = ["c", "mem"] + +[target.bpfel-unknown-unknown.dependencies] +alloc = { path = "../../bpf-sdk/dependencies/rust-bpf-sysroot/src/liballoc" } \ No newline at end of file diff --git a/web3.js/examples/bpf-rust-noop/bpf.ld b/web3.js/examples/bpf-rust-noop/bpf.ld deleted file mode 100644 index 62a7170662..0000000000 --- a/web3.js/examples/bpf-rust-noop/bpf.ld +++ /dev/null @@ -1,19 +0,0 @@ -PHDRS -{ - text PT_LOAD ; - rodata PT_LOAD ; - dynamic PT_DYNAMIC ; -} - -SECTIONS -{ - . = SIZEOF_HEADERS; - .text : { *(.text) } :text - .rodata : { *(.rodata) } :rodata - .dynamic : { *(.dynamic) } :dynamic - .dynsym : { *(.dynsym) } :dynamic - .dynstr : { *(.dynstr) } :dynamic - .gnu.hash : { *(.gnu.hash) } :dynamic - .rel.dyn : { *(.rel.dyn) } :dynamic - .hash : { *(.hash) } :dynamic -} diff --git a/web3.js/examples/bpf-rust-noop/build.sh b/web3.js/examples/bpf-rust-noop/build.sh deleted file mode 100755 index abfd7e6264..0000000000 --- a/web3.js/examples/bpf-rust-noop/build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -cd "$(dirname "$0")" - -cargo install xargo - -set -ex - -# Ensure the sdk is installed -../../bpf-sdk/scripts/install.sh -rustup override set bpf - -export RUSTFLAGS="$RUSTFLAGS \ - -C lto=no \ - -C opt-level=2 \ - -C link-arg=-Tbpf.ld \ - -C link-arg=-z -C link-arg=notext \ - -C link-arg=--Bdynamic \ - -C link-arg=-shared \ - -C link-arg=--entry=entrypoint \ - -C linker=../../bpf-sdk/llvm-native/bin/ld.lld" -export XARGO_HOME="$PWD/target/xargo" -export XARGO_RUST_SRC="../../bpf-sdk/rust-bpf-sysroot/src" -# export XARGO_RUST_SRC="../../../../../rust-bpf-sysroot/src" -xargo build --target bpfel-unknown-unknown --release -v - -{ { set +x; } 2>/dev/null; echo Success; } diff --git a/web3.js/examples/bpf-rust-noop/clean.sh b/web3.js/examples/bpf-rust-noop/clean.sh deleted file mode 100755 index ea95016e3d..0000000000 --- a/web3.js/examples/bpf-rust-noop/clean.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -cargo clean diff --git a/web3.js/examples/bpf-rust-noop/dump.sh b/web3.js/examples/bpf-rust-noop/dump.sh deleted file mode 100755 index 8108047d5b..0000000000 --- a/web3.js/examples/bpf-rust-noop/dump.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -cp dump.txt dump_last.txt 2>/dev/null - -set -x -set -e - -./clean.sh -./build.sh -ls -la ./target/bpfel_unknown_unknown/release/solana_bpf_rust_noop.so > dump.txt -greadelf -aW ./target/bpfel_unknown_unknown/release/solana_bpf_rust_noop.so | rustfilt >> dump.txt -llvm-objdump -print-imm-hex --source --disassemble ./target/bpfel_unknown_unknown/release/solana_bpf_rust_noop.so >> dump.txt diff --git a/web3.js/examples/bpf-rust-noop/src/lib.rs b/web3.js/examples/bpf-rust-noop/src/lib.rs index 7846c529ad..05060a411b 100644 --- a/web3.js/examples/bpf-rust-noop/src/lib.rs +++ b/web3.js/examples/bpf-rust-noop/src/lib.rs @@ -1,11 +1,13 @@ //! @brief Example Rust-based BPF program that prints out the parameters passed to it -#![cfg(not(test))] #![no_std] +#![allow(unreachable_code)] -mod solana_sdk; +extern crate solana_sdk_bpf_utils; -use solana_sdk::*; +use solana_sdk_bpf_utils::entrypoint; +use solana_sdk_bpf_utils::entrypoint::*; +use solana_sdk_bpf_utils::log::*; struct SStruct { x: u64, @@ -18,7 +20,12 @@ fn return_sstruct() -> SStruct { SStruct { x: 1, y: 2, z: 3 } } -fn process(ka: &mut [SolKeyedAccount], data: &[u8], info: &SolClusterInfo) -> bool { +entrypoint!(process_instruction); +fn process_instruction( + ka: &mut [Option; MAX_ACCOUNTS], + info: &SolClusterInfo, + data: &[u8], +) -> bool { sol_log("Program identifier:"); sol_log_key(&info.program_id); @@ -28,23 +35,27 @@ fn process(ka: &mut [SolKeyedAccount], data: &[u8], info: &SolClusterInfo) -> bo sol_log("Account keys and instruction input data:"); sol_log_params(ka, data); + { + // Test - arch config + #[cfg(not(target_arch = "bpf"))] + panic!(); + } + { // Test - use core methods, unwrap // valid bytes, in a stack-allocated array let sparkle_heart = [240, 159, 146, 150]; - let result_str = core::str::from_utf8(&sparkle_heart).unwrap(); - - sol_log_64(0, 0, 0, 0, result_str.len() as u64); - sol_log(result_str); + assert_eq!(4, result_str.len()); assert_eq!("💖", result_str); + sol_log(result_str); } { // Test - struct return + let s = return_sstruct(); - sol_log_64(0, 0, s.x, s.y, s.z); assert_eq!(s.x + s.y + s.z, 6); } diff --git a/web3.js/examples/bpf-rust-noop/src/solana_sdk.rs b/web3.js/examples/bpf-rust-noop/src/solana_sdk.rs deleted file mode 100644 index b1672eaec1..0000000000 --- a/web3.js/examples/bpf-rust-noop/src/solana_sdk.rs +++ /dev/null @@ -1,409 +0,0 @@ -//! @brief Solana Rust-based BPF program utility functions and types - -// extern crate heapless; - -// use self::heapless::consts::*; -// use self::heapless::String; // fixed capacity `std::Vec` // type level integer used to specify capacity -#[cfg(test)] -use self::tests::process; -use core::mem::size_of; -use core::panic::PanicInfo; -use core::slice::from_raw_parts; - -#[cfg(not(test))] -use process; - -// Panic handling -extern "C" { - pub fn sol_panic_() -> !; -} -#[panic_handler] -fn panic(_info: &PanicInfo) -> ! { - sol_log("Panic!"); - // TODO rashes! sol_log(_info.payload().downcast_ref::<&str>().unwrap()); - if let Some(location) = _info.location() { - if !location.file().is_empty() { - // TODO location.file() returns empty str, if we get here its been fixed - sol_log(location.file()); - sol_log("location.file() is fixed!!"); - unsafe { - sol_panic_(); - } - } - sol_log_64(0, 0, 0, location.line() as u64, location.column() as u64); - } else { - sol_log("Panic! but could not get location information"); - } - unsafe { - sol_panic_(); - } -} - -extern "C" { - fn sol_log_(message: *const u8); -} -/// Helper function that prints a string to stdout -#[inline(never)] // stack intensive, block inline so everyone does not incur -pub fn sol_log(message: &str) { - // TODO This is extremely slow, do something better - let mut buf: [u8; 128] = [0; 128]; - for (i, b) in message.as_bytes().iter().enumerate() { - if i >= 126 { - break; - } - buf[i] = *b; - } - unsafe { - sol_log_(buf.as_ptr()); - } - - // let mut c_string: String = String::new(); - // if message.len() < 256 { - // if c_string.push_str(message).is_err() { - // c_string - // .push_str("Attempted to log a malformed string\0") - // .is_ok(); - // } - // if c_string.push('\0').is_err() { - // c_string.push_str("Failed to log string\0").is_ok(); - // }; - // } else { - // c_string - // .push_str("Attempted to log a string that is too long\0") - // .is_ok(); - // } - // unsafe { - // sol_log_(message.as_ptr()); - // } -} - -extern "C" { - fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64); -} -/// Helper function that prints a 64 bit values represented in hexadecimal -/// to stdout -pub fn sol_log_64(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) { - unsafe { - sol_log_64_(arg1, arg2, arg3, arg4, arg5); - } -} - -/// Prints the hexadecimal representation of a public key -/// -/// @param key The public key to print -#[allow(dead_code)] -pub fn sol_log_key(key: &SolPubkey) { - for (i, k) in key.key.iter().enumerate() { - sol_log_64(0, 0, 0, i as u64, u64::from(*k)); - } -} - -/// Prints the hexadecimal representation of a slice -/// -/// @param slice The array to print -#[allow(dead_code)] -pub fn sol_log_slice(slice: &[u8]) { - for (i, s) in slice.iter().enumerate() { - sol_log_64(0, 0, 0, i as u64, u64::from(*s)); - } -} - -/// Prints the hexadecimal representation of the program's input parameters -/// -/// @param ka A pointer to an array of SolKeyedAccount to print -/// @param data A pointer to the instruction data to print -#[allow(dead_code)] -pub fn sol_log_params(ka: &[SolKeyedAccount], data: &[u8]) { - sol_log("- Number of KeyedAccounts"); - sol_log_64(0, 0, 0, 0, ka.len() as u64); - for k in ka.iter() { - sol_log("- Is signer"); - sol_log_64(0, 0, 0, 0, k.is_signer as u64); - sol_log("- Key"); - sol_log_key(&k.key); - sol_log("- Lamports"); - sol_log_64(0, 0, 0, 0, k.lamports); - sol_log("- AccountData"); - sol_log_slice(k.data); - sol_log("- Owner"); - sol_log_key(&k.owner); - } - sol_log("- Instruction data"); - sol_log_slice(data); -} - -pub const SIZE_PUBKEY: usize = 32; - -/// Public key -pub struct SolPubkey<'a> { - pub key: &'a [u8], -} - -/// Keyed Account -pub struct SolKeyedAccount<'a> { - /// Public key of the account - pub key: SolPubkey<'a>, - /// Public key of the account - pub is_signer: u64, - /// Number of lamports owned by this account - pub lamports: u64, - /// On-chain data within this account - pub data: &'a [u8], - /// Program that owns this account - pub owner: SolPubkey<'a>, -} - -/// Information about the state of the cluster immediately before the program -/// started executing the current instruction -pub struct SolClusterInfo<'a> { - ///program_id of the currently executing program - pub program_id: SolPubkey<'a>, -} - -#[no_mangle] -pub extern "C" fn entrypoint(input: *mut u8) -> bool { - const NUM_KA: usize = 1; // Number of KeyedAccounts expected - let mut offset: usize = 0; - - // Number of KeyedAccounts present - - let num_ka = unsafe { - #[allow(clippy::cast_ptr_alignment)] - let num_ka_ptr: *const u64 = input.add(offset) as *const u64; - *num_ka_ptr - }; - offset += 8; - - if num_ka != NUM_KA as u64 { - return false; - } - - // KeyedAccounts - - let is_signer = unsafe { - #[allow(clippy::cast_ptr_alignment)] - let is_signer_ptr: *const u64 = input.add(offset) as *const u64; - *is_signer_ptr - }; - offset += size_of::(); - - let key_slice = unsafe { from_raw_parts(input.add(offset), SIZE_PUBKEY) }; - let key = SolPubkey { key: &key_slice }; - offset += SIZE_PUBKEY; - - let lamports = unsafe { - #[allow(clippy::cast_ptr_alignment)] - let lamports_ptr: *const u64 = input.add(offset) as *const u64; - *lamports_ptr - }; - offset += size_of::(); - - let data_length = unsafe { - #[allow(clippy::cast_ptr_alignment)] - let data_length_ptr: *const u64 = input.add(offset) as *const u64; - *data_length_ptr - } as usize; - offset += size_of::(); - - let data = unsafe { from_raw_parts(input.add(offset), data_length) }; - offset += data_length; - - let owner_slice = unsafe { from_raw_parts(input.add(offset), SIZE_PUBKEY) }; - let owner = SolPubkey { key: &owner_slice }; - offset += SIZE_PUBKEY; - - let mut ka = [SolKeyedAccount { - key, - is_signer, - lamports, - data, - owner, - }]; - - // Instruction data - - let data_length = unsafe { - #[allow(clippy::cast_ptr_alignment)] - let data_length_ptr: *const u64 = input.add(offset) as *const u64; - *data_length_ptr - } as usize; - offset += size_of::(); - - let data = unsafe { from_raw_parts(input.add(offset), data_length) }; - offset += data_length; - - // Id - - let program_id_slice = unsafe { from_raw_parts(input.add(offset), SIZE_PUBKEY) }; - let program_id: SolPubkey = SolPubkey { - key: &program_id_slice, - }; - - let info = SolClusterInfo { - program_id, - }; - - // Call user implementable function - process(&mut ka, &data, &info) -} - -#[cfg(test)] -mod tests { - extern crate std; - - use self::std::ffi::CStr; - use self::std::println; - use self::std::string::String; - use super::*; - - static mut _LOG_SCENARIO: u64 = 0; - fn get_log_scenario() -> u64 { - unsafe { _LOG_SCENARIO } - } - fn set_log_scenario(test: u64) { - unsafe { _LOG_SCENARIO = test }; - } - - #[no_mangle] - fn sol_log_(message: *const u8) { - let scenario = get_log_scenario(); - let c_str = unsafe { CStr::from_ptr(message as *const i8) }; - let string = c_str.to_str().unwrap(); - match scenario { - 1 => assert_eq!(string, "This is a test message"), - 2 => assert_eq!(string, "Attempted to log a string that is too long"), - 3 => { - let s: String = ['a'; 255].iter().collect(); - assert_eq!(string, s); - } - 4 => println!("{:?}", string), - _ => panic!("Unkown sol_log test"), - } - } - - static mut _LOG_64_SCENARIO: u64 = 0; - fn get_log_64_scenario() -> u64 { - unsafe { _LOG_64_SCENARIO } - } - fn set_log_64_scenario(test: u64) { - unsafe { _LOG_64_SCENARIO = test }; - } - - #[no_mangle] - fn sol_log_64_(arg1: u64, arg2: u64, arg3: u64, arg4: u64, arg5: u64) { - let scenario = get_log_64_scenario(); - match scenario { - 1 => { - assert_eq!(1, arg1); - assert_eq!(2, arg2); - assert_eq!(3, arg3); - assert_eq!(4, arg4); - assert_eq!(5, arg5); - } - 2 => { - assert_eq!(0, arg1); - assert_eq!(0, arg2); - assert_eq!(0, arg3); - assert_eq!(arg4 + 1, arg5); - } - 3 => { - assert_eq!(0, arg1); - assert_eq!(0, arg2); - assert_eq!(0, arg3); - assert_eq!(arg4 + 1, arg5); - } - 4 => println!("{:?} {:?} {:?} {:?} {:?}", arg1, arg2, arg3, arg4, arg5), - _ => panic!("Unknown sol_log_64 test"), - } - } - - #[test] - fn test_sol_log() { - set_log_scenario(1); - sol_log("This is a test message"); - } - - #[test] - fn test_sol_log_long() { - set_log_scenario(2); - let s: String = ['a'; 256].iter().collect(); - sol_log(&s); - } - - #[test] - fn test_sol_log_max_length() { - set_log_scenario(3); - let s: String = ['a'; 255].iter().collect(); - sol_log(&s); - } - - #[test] - fn test_sol_log_64() { - set_log_64_scenario(1); - sol_log_64(1, 2, 3, 4, 5); - } - - #[test] - fn test_sol_log_key() { - set_log_64_scenario(2); - let key_array = [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, - ]; - let key = SolPubkey { key: &key_array }; - sol_log_key(&key); - } - - #[test] - fn test_sol_log_slice() { - set_log_64_scenario(3); - let array = [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, - ]; - sol_log_slice(&array); - } - - pub fn process(ka: &mut [SolKeyedAccount], data: &[u8], info: &SolClusterInfo) -> bool { - assert_eq!(1, ka.len()); - assert_eq!(1, ka[0].is_signer); - let key = [ - 151, 116, 3, 85, 181, 39, 151, 99, 155, 29, 208, 191, 255, 191, 11, 161, 4, 43, 104, - 189, 202, 240, 231, 111, 146, 255, 199, 71, 67, 34, 254, 68, - ]; - assert_eq!(SIZE_PUBKEY, ka[0].key.key.len()); - assert_eq!(key, ka[0].key.key); - assert_eq!(48, ka[0].lamports); - assert_eq!(1, ka[0].data.len()); - let owner = [0; 32]; - assert_eq!(SIZE_PUBKEY, ka[0].owner.key.len()); - assert_eq!(owner, ka[0].owner.key); - let d = [1, 0, 0, 0, 0, 0, 0, 0, 1]; - assert_eq!(9, data.len()); - assert_eq!(d, data); - let program_id = [ - 190, 103, 191, 69, 193, 202, 38, 193, 95, 62, 131, 135, 105, 13, 142, 240, 155, 120, - 177, 90, 212, 54, 10, 118, 40, 33, 192, 8, 54, 141, 187, 63, - ]; - assert_eq!(program_id, info.program_id.key); - - true - } - - #[test] - fn test_entrypoint() { - set_log_scenario(4); - set_log_64_scenario(4); - let mut input: [u8; 154] = [ - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 151, 116, 3, 85, 181, 39, 151, 99, 155, - 29, 208, 191, 255, 191, 11, 161, 4, 43, 104, 189, 202, 240, 231, 111, 146, 255, 199, - 71, 67, 34, 254, 68, 48, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 190, 103, 191, - 69, 193, 202, 38, 193, 95, 62, 131, 135, 105, 13, 142, 240, 155, 120, 177, 90, 212, 54, - 10, 118, 40, 33, 192, 8, 54, 141, 187, 63, - ]; - - entrypoint(&mut input[0] as *mut u8); - } -} diff --git a/web3.js/test/fixtures/noop-c/noop.so b/web3.js/test/fixtures/noop-c/noop.so index df281c148578e6ff2690640fab9e9499106e3d65..19a22edd73af9049ef705d312e3c186a6283a316 100755 GIT binary patch literal 4288 zcmb_fPfQ$T6n_gXP-{a)X>qZw?(WdtL747A zYSM(%3nn!hPvu}CF->~VthdFJBp&2Q;-yCpn$$z9@c_Q}z4z8}T-t;E!p`q||KIn% zZ{9b2{A%J}*n66g@(;~;k_u{lV&IPFl_~f@b z&U$`2Y9`gwTRSwVXPDoPb&V7K4%3~d7^@C>1)%t3>1Qn>f%2tUI~I`Ed#>d-QRSD?OVAt39iX7w#~gUNcDb+(O?vw4Pd@>ZL{2zp`Mk^CQ-*JB*#5 zF<$Ow)OyxvqjA(^KkGM`ZurOjGI{TNuw$W!^7yJr9yQ_Z=C?+N5J&wQqx!F2|K8-= z-SM^&_$z-J+F!oQ>*=}4^y-H2xgJ@}!$ONW!D`Q!tbb*R@zT0M%J+w6`N}zbRKEV# zydRn``P**duYQ%+^*HPNOOrVMvee@d`>6E}=KXC`fB&xMk5W(n7N0+Vh3iV^1VvEn z+HV%B@9E<@Umtw&ps`=tqbQK(ukrj9-rxFVlLkDldi%HdywLkZ>-3lTTpm3{6u@5i zu907x^hDxoe*Wr$kyG2Ukgw-K>q+?=zqj~3Egs=UUlU(*YUhwwfKFN8Bi~n#^)-)n z^ha@y&eN0fzHjoXFBuX(X8_CUv)-I5Wy;WJotZ5rGiA%2wqDQpne=!n<<6G8iqSb& z$&}NM=NMw5VpZ~4GI}jjD7ee>|eyhA=f2LivK5=4bKb8H6|3m{cZL?Bl?( zK!=xXRZk5rlM-L)%@DmP@f-3GJtpy0z7(S4 z5?|$;A^J`r9!(Dh{1d$vq7MiBlYBlz9}M^>`C^E^D7~5TAvu}TPr~4g>tZJIAiYGs z^dY`sRw8lIirY~;YW3zkZ>Dm*zdxJzaMv>*jVnea% z)NtAvaE9W;@sZ@nXnG(u6palfondD*ojf)Y%N!ehDH!rUbK0vt@Vn_TK_TsP1XrTH zlFl~`ey<}i6I>Ybj~HnL?uPg;2w%^OA@RXkMW8our;%*HC`4dW>TgJVj0#`Rq4LLt zKPmg6{0ZSNg#5oH{2VPjFwUEK1P;@t1jdw^W1b=YwD9Lc{7;GB(%Sg$Hfs1N;;&gB zm`8rIezLF&A8ao(?}1%*P4~6ae#t53Q$Ul7Uu5*kU}sCScFw8fP&HE^DF}(@sff)7 zY*hE0Bw`L*I?ouPEIEvR*Q80A8pcDBN zTVIdx|6?0sr)g+>JsWiI(H*GAP47j;ivfFzt@e6fTF9f=YOnXEqTZXRVn#UsUgSQ& zJ6i4a9#yp1%=A2(YJ6dvy3yUP_DiCmcvAxEYp?dY{+H2~YNPggZ!1!MG}Jzf<0zvL zQBn$w^VG0$q!}7dUBBXKlxXaR5>D2{eq9vx`#|&8`kzHz-TR>ZA{pS=Ej~*D-p5HZ P`(MTWhAIkb-pc+PRi5w? literal 3520 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