From 0ab3f55982f0f20a202f9b844639bd961ed2d6b9 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Mon, 22 Jul 2024 20:52:39 +0800 Subject: [PATCH] feat: add warning interface on Nano devices. (#57) --- release-notes.md | 3 +- src/ui/bagl_hash.c | 123 ++++++++-- src/ui/bagl_transaction.c | 122 +++++++++- .../s-hash-signing-approve/00001.png | Bin 484 -> 463 bytes .../s-hash-signing-approve/00002.png | Bin 463 -> 482 bytes .../s-hash-signing-approve/00003.png | Bin 482 -> 453 bytes .../s-hash-signing-approve/00004.png | Bin 453 -> 427 bytes .../s-hash-signing-approve/00005.png | Bin 427 -> 491 bytes .../snapshots/s-hash-signing-reject/00001.png | Bin 484 -> 463 bytes .../snapshots/s-hash-signing-reject/00002.png | Bin 463 -> 482 bytes .../snapshots/s-hash-signing-reject/00003.png | Bin 482 -> 453 bytes .../snapshots/s-hash-signing-reject/00004.png | Bin 453 -> 427 bytes .../snapshots/s-hash-signing-reject/00005.png | Bin 427 -> 491 bytes .../00022.png | Bin 377 -> 491 bytes .../00023.png | Bin 428 -> 377 bytes .../00024.png | Bin 0 -> 428 bytes .../00021.png | Bin 377 -> 491 bytes .../00022.png | Bin 428 -> 377 bytes .../00023.png | Bin 0 -> 428 bytes .../00019.png | Bin 377 -> 491 bytes .../00020.png | Bin 428 -> 377 bytes .../00021.png | Bin 0 -> 428 bytes .../00028.png | Bin 377 -> 491 bytes .../00029.png | Bin 428 -> 377 bytes .../00030.png | Bin 0 -> 428 bytes .../00024.png | Bin 377 -> 491 bytes .../00025.png | Bin 428 -> 377 bytes .../00026.png | Bin 0 -> 428 bytes .../00034.png | Bin 377 -> 491 bytes .../00035.png | Bin 428 -> 377 bytes .../00036.png | Bin 0 -> 428 bytes .../00035.png | Bin 377 -> 491 bytes .../00036.png | Bin 428 -> 377 bytes .../00037.png | Bin 0 -> 428 bytes .../00047.png | Bin 377 -> 491 bytes .../00048.png | Bin 428 -> 377 bytes .../00049.png | Bin 0 -> 428 bytes .../00078.png | Bin 377 -> 491 bytes .../00079.png | Bin 428 -> 377 bytes .../00080.png | Bin 0 -> 428 bytes .../00011.png | Bin 377 -> 491 bytes .../00012.png | Bin 428 -> 377 bytes .../00013.png | Bin 0 -> 428 bytes .../00010.png | Bin 377 -> 491 bytes .../00011.png | Bin 428 -> 377 bytes .../00012.png | Bin 0 -> 428 bytes .../00098.png | Bin 397 -> 491 bytes .../00099.png | Bin 428 -> 397 bytes .../00100.png | Bin 0 -> 428 bytes .../00041.png | Bin 397 -> 491 bytes .../00042.png | Bin 428 -> 397 bytes .../00043.png | Bin 0 -> 428 bytes .../s-soroban-auth-invoke-contract/00050.png | Bin 397 -> 491 bytes .../s-soroban-auth-invoke-contract/00051.png | Bin 428 -> 397 bytes .../s-soroban-auth-invoke-contract/00052.png | Bin 0 -> 428 bytes .../snapshots/s-soroban-auth-public/00018.png | Bin 397 -> 491 bytes .../snapshots/s-soroban-auth-public/00019.png | Bin 428 -> 397 bytes .../snapshots/s-soroban-auth-public/00020.png | Bin 0 -> 428 bytes .../snapshots/s-soroban-auth-reject/00050.png | Bin 397 -> 491 bytes .../snapshots/s-soroban-auth-reject/00051.png | Bin 340 -> 397 bytes .../snapshots/s-soroban-auth-reject/00052.png | Bin 428 -> 340 bytes .../snapshots/s-soroban-auth-reject/00053.png | Bin 0 -> 428 bytes .../s-soroban-auth-testnet/00019.png | Bin 397 -> 491 bytes .../s-soroban-auth-testnet/00020.png | Bin 428 -> 397 bytes .../s-soroban-auth-testnet/00021.png | Bin 0 -> 428 bytes .../s-soroban-auth-unknown-network/00019.png | Bin 397 -> 491 bytes .../s-soroban-auth-unknown-network/00020.png | Bin 428 -> 397 bytes .../s-soroban-auth-unknown-network/00021.png | Bin 0 -> 428 bytes .../sp-hash-signing-approve/00001.png | Bin 543 -> 837 bytes .../sp-hash-signing-approve/00002.png | Bin 837 -> 459 bytes .../sp-hash-signing-approve/00003.png | Bin 459 -> 541 bytes .../sp-hash-signing-reject/00001.png | Bin 543 -> 837 bytes .../sp-hash-signing-reject/00002.png | Bin 837 -> 459 bytes .../sp-hash-signing-reject/00003.png | Bin 459 -> 541 bytes .../00016.png | Bin 440 -> 541 bytes .../00017.png | Bin 471 -> 440 bytes .../00018.png | Bin 0 -> 471 bytes .../00015.png | Bin 440 -> 541 bytes .../00016.png | Bin 471 -> 440 bytes .../00017.png | Bin 0 -> 471 bytes .../00017.png | Bin 440 -> 541 bytes .../00018.png | Bin 471 -> 440 bytes .../00019.png | Bin 0 -> 471 bytes .../00020.png | Bin 440 -> 541 bytes .../00021.png | Bin 471 -> 440 bytes .../00022.png | Bin 0 -> 471 bytes .../00018.png | Bin 440 -> 541 bytes .../00019.png | Bin 471 -> 440 bytes .../00020.png | Bin 0 -> 471 bytes .../00024.png | Bin 440 -> 541 bytes .../00025.png | Bin 471 -> 440 bytes .../00026.png | Bin 0 -> 471 bytes .../00025.png | Bin 440 -> 541 bytes .../00026.png | Bin 471 -> 440 bytes .../00027.png | Bin 0 -> 471 bytes .../00033.png | Bin 440 -> 541 bytes .../00034.png | Bin 471 -> 440 bytes .../00035.png | Bin 0 -> 471 bytes .../00060.png | Bin 440 -> 541 bytes .../00061.png | Bin 471 -> 440 bytes .../00062.png | Bin 0 -> 471 bytes .../00009.png | Bin 440 -> 541 bytes .../00010.png | Bin 471 -> 440 bytes .../00011.png | Bin 0 -> 471 bytes .../00008.png | Bin 440 -> 541 bytes .../00009.png | Bin 471 -> 440 bytes .../00010.png | Bin 0 -> 471 bytes .../00074.png | Bin 465 -> 541 bytes .../00075.png | Bin 471 -> 465 bytes .../00076.png | Bin 0 -> 471 bytes .../00027.png | Bin 465 -> 541 bytes .../00028.png | Bin 471 -> 465 bytes .../00029.png | Bin 0 -> 471 bytes .../sp-soroban-auth-invoke-contract/00032.png | Bin 465 -> 541 bytes .../sp-soroban-auth-invoke-contract/00033.png | Bin 471 -> 465 bytes .../sp-soroban-auth-invoke-contract/00034.png | Bin 0 -> 471 bytes .../sp-soroban-auth-public/00012.png | Bin 465 -> 541 bytes .../sp-soroban-auth-public/00013.png | Bin 471 -> 465 bytes .../sp-soroban-auth-public/00014.png | Bin 0 -> 471 bytes .../sp-soroban-auth-reject/00032.png | Bin 465 -> 541 bytes .../sp-soroban-auth-reject/00033.png | Bin 366 -> 465 bytes .../sp-soroban-auth-reject/00034.png | Bin 471 -> 366 bytes .../sp-soroban-auth-reject/00035.png | Bin 0 -> 471 bytes .../sp-soroban-auth-testnet/00013.png | Bin 465 -> 541 bytes .../sp-soroban-auth-testnet/00014.png | Bin 471 -> 465 bytes .../sp-soroban-auth-testnet/00015.png | Bin 0 -> 471 bytes .../sp-soroban-auth-unknown-network/00013.png | Bin 465 -> 541 bytes .../sp-soroban-auth-unknown-network/00014.png | Bin 471 -> 465 bytes .../sp-soroban-auth-unknown-network/00015.png | Bin 0 -> 471 bytes .../x-hash-signing-approve/00001.png | Bin 543 -> 837 bytes .../x-hash-signing-approve/00002.png | Bin 837 -> 459 bytes .../x-hash-signing-approve/00003.png | Bin 459 -> 541 bytes .../snapshots/x-hash-signing-reject/00001.png | Bin 543 -> 837 bytes .../snapshots/x-hash-signing-reject/00002.png | Bin 837 -> 459 bytes .../snapshots/x-hash-signing-reject/00003.png | Bin 459 -> 541 bytes .../00016.png | Bin 440 -> 541 bytes .../00017.png | Bin 471 -> 440 bytes .../00018.png | Bin 0 -> 471 bytes .../00015.png | Bin 440 -> 541 bytes .../00016.png | Bin 471 -> 440 bytes .../00017.png | Bin 0 -> 471 bytes .../00017.png | Bin 440 -> 541 bytes .../00018.png | Bin 471 -> 440 bytes .../00019.png | Bin 0 -> 471 bytes .../00020.png | Bin 440 -> 541 bytes .../00021.png | Bin 471 -> 440 bytes .../00022.png | Bin 0 -> 471 bytes .../00018.png | Bin 440 -> 541 bytes .../00019.png | Bin 471 -> 440 bytes .../00020.png | Bin 0 -> 471 bytes .../00024.png | Bin 440 -> 541 bytes .../00025.png | Bin 471 -> 440 bytes .../00026.png | Bin 0 -> 471 bytes .../00025.png | Bin 440 -> 541 bytes .../00026.png | Bin 471 -> 440 bytes .../00027.png | Bin 0 -> 471 bytes .../00033.png | Bin 440 -> 541 bytes .../00034.png | Bin 471 -> 440 bytes .../00035.png | Bin 0 -> 471 bytes .../00060.png | Bin 440 -> 541 bytes .../00061.png | Bin 471 -> 440 bytes .../00062.png | Bin 0 -> 471 bytes .../00009.png | Bin 440 -> 541 bytes .../00010.png | Bin 471 -> 440 bytes .../00011.png | Bin 0 -> 471 bytes .../00008.png | Bin 440 -> 541 bytes .../00009.png | Bin 471 -> 440 bytes .../00010.png | Bin 0 -> 471 bytes .../00074.png | Bin 465 -> 541 bytes .../00075.png | Bin 471 -> 465 bytes .../00076.png | Bin 0 -> 471 bytes .../00027.png | Bin 465 -> 541 bytes .../00028.png | Bin 471 -> 465 bytes .../00029.png | Bin 0 -> 471 bytes .../x-soroban-auth-invoke-contract/00032.png | Bin 465 -> 541 bytes .../x-soroban-auth-invoke-contract/00033.png | Bin 471 -> 465 bytes .../x-soroban-auth-invoke-contract/00034.png | Bin 0 -> 471 bytes .../snapshots/x-soroban-auth-public/00012.png | Bin 465 -> 541 bytes .../snapshots/x-soroban-auth-public/00013.png | Bin 471 -> 465 bytes .../snapshots/x-soroban-auth-public/00014.png | Bin 0 -> 471 bytes .../snapshots/x-soroban-auth-reject/00032.png | Bin 465 -> 541 bytes .../snapshots/x-soroban-auth-reject/00033.png | Bin 366 -> 465 bytes .../snapshots/x-soroban-auth-reject/00034.png | Bin 471 -> 366 bytes .../snapshots/x-soroban-auth-reject/00035.png | Bin 0 -> 471 bytes .../x-soroban-auth-testnet/00013.png | Bin 465 -> 541 bytes .../x-soroban-auth-testnet/00014.png | Bin 471 -> 465 bytes .../x-soroban-auth-testnet/00015.png | Bin 0 -> 471 bytes .../x-soroban-auth-unknown-network/00013.png | Bin 465 -> 541 bytes .../x-soroban-auth-unknown-network/00014.png | Bin 471 -> 465 bytes .../x-soroban-auth-unknown-network/00015.png | Bin 0 -> 471 bytes tests_zemu/tests/main.test.ts | 225 +++++++++++++----- 191 files changed, 385 insertions(+), 88 deletions(-) create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-scvals-case0/00021.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-scvals-case1/00030.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-scvals-case2/00026.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args-and-no-source/00036.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args/00037.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-with-auth/00049.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-with-complex-sub-invocation/00080.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-without-args/00013.png create mode 100644 tests_zemu/snapshots/s-op-invoke-host-function-without-auth-and-no-source/00012.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-invoke-contract-with-complex-sub-invocation/00100.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-invoke-contract-without-args/00043.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-invoke-contract/00052.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-public/00020.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-reject/00053.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-testnet/00021.png create mode 100644 tests_zemu/snapshots/s-soroban-auth-unknown-network/00021.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00018.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00017.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-scvals-case0/00019.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-scvals-case1/00022.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-scvals-case2/00020.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-with-auth-and-no-args-and-no-source/00026.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-with-auth-and-no-args/00027.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-with-auth/00035.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-with-complex-sub-invocation/00062.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-without-args/00011.png create mode 100644 tests_zemu/snapshots/sp-op-invoke-host-function-without-auth-and-no-source/00010.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-invoke-contract-with-complex-sub-invocation/00076.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-invoke-contract-without-args/00029.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-invoke-contract/00034.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-public/00014.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-reject/00035.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-testnet/00015.png create mode 100644 tests_zemu/snapshots/sp-soroban-auth-unknown-network/00015.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00018.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00017.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-scvals-case0/00019.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-scvals-case1/00022.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-scvals-case2/00020.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-with-auth-and-no-args-and-no-source/00026.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-with-auth-and-no-args/00027.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-with-auth/00035.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-with-complex-sub-invocation/00062.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-without-args/00011.png create mode 100644 tests_zemu/snapshots/x-op-invoke-host-function-without-auth-and-no-source/00010.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-invoke-contract-with-complex-sub-invocation/00076.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-invoke-contract-without-args/00029.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-invoke-contract/00034.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-public/00014.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-reject/00035.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-testnet/00015.png create mode 100644 tests_zemu/snapshots/x-soroban-auth-unknown-network/00015.png diff --git a/release-notes.md b/release-notes.md index 093157ba..0c0b3379 100644 --- a/release-notes.md +++ b/release-notes.md @@ -3,8 +3,7 @@ ## v5.5.0 ### Updated -- Give an alert when enabling hash signing in settings. (Ledger Stax and Ledger Flex) -- Default to prohibit signing unverified contracts, need to enable "Custom contracts" in settings. +- Optimize the signing process and add necessary alerts. - Add support for more Soroban tokens. - Bug fixes. diff --git a/src/ui/bagl_hash.c b/src/ui/bagl_hash.c index b7ba853e..e3544154 100644 --- a/src/ui/bagl_hash.c +++ b/src/ui/bagl_hash.c @@ -37,6 +37,8 @@ #include "stellar/formatter.h" #include "stellar/printer.h" +static void start_review_flow(void); + static action_validate_cb g_validate_callback; // Validate/Invalidate transaction and go back to home @@ -46,28 +48,21 @@ static void ui_action_validate_transaction(bool choice) { } // Step with icon and text -UX_STEP_NOCB(ux_tx_hash_signing_review_step, +UX_STEP_NOCB(ux_hash_signing_review_step, pnn, { &C_icon_eye, "Review", "Hash Signing", }); -UX_STEP_NOCB(ux_tx_hash_signing_warning_step, - pbb, - { - &C_icon_warning, - "Dangerous", - "Operation", - }); -UX_STEP_NOCB(ux_tx_hash_signing_display_hash_step, +UX_STEP_NOCB(ux_hash_signing_display_hash_step, bnnn_paging, { .title = "Hash", .text = G.ui.detail_value, }); // Step with approve button -UX_STEP_CB(ux_tx_hash_display_approve_step, +UX_STEP_CB(ux_hash_display_approve_step, pb, (*g_validate_callback)(true), { @@ -75,7 +70,7 @@ UX_STEP_CB(ux_tx_hash_display_approve_step, "Sign Hash", }); // Step with reject button -UX_STEP_CB(ux_tx_hash_display_reject_step, +UX_STEP_CB(ux_hash_display_reject_step, pb, (*g_validate_callback)(false), { @@ -83,18 +78,105 @@ UX_STEP_CB(ux_tx_hash_display_reject_step, "Reject", }); +UX_STEP_NOCB(ux_hash_approval_blind_signing_reminder_step, + pbb, + { + &C_icon_warning, + "You accepted", + "the risks", + }); + // FLOW to display hash signing // #1 screen: eye icon + "Review Transaction" -// #2 screen: warning icon + "Hash Signing" -// #3 screen: display hash +// #2 screen: display hash +// #3 screen: display warning // #4 screen: approve button // #5 screen: reject button -UX_FLOW(ux_tx_hash_signing_flow, - &ux_tx_hash_signing_review_step, - &ux_tx_hash_signing_warning_step, - &ux_tx_hash_signing_display_hash_step, - &ux_tx_hash_display_approve_step, - &ux_tx_hash_display_reject_step); +UX_FLOW(ux_hash_signing_flow, + &ux_hash_signing_review_step, + &ux_hash_signing_display_hash_step, + &ux_hash_approval_blind_signing_reminder_step, + &ux_hash_display_approve_step, + &ux_hash_display_reject_step); + +// clang-format off +UX_STEP_NOCB( + ux_hash_blind_signing_warning_step, + pbb, + { + &C_icon_warning, +#ifdef TARGET_NANOS + "Transaction", + "not trusted", +#else + "This transaction", + "cannot be trusted", +#endif + }); +#ifndef TARGET_NANOS +UX_STEP_NOCB( + ux_hash_blind_signing_text1_step, + nnnn, + { + "Your Ledger cannot", + "decode this", + "transaction. If you", + "sign it, you could", + }); +UX_STEP_NOCB( + ux_hash_blind_signing_text2_step, + nnnn, + { + "be authorizing", + "malicious actions", + "that can drain your", + "wallet.", + }); +#endif +UX_STEP_NOCB( + ux_hash_blind_signing_link_step, + nn, + { + "Learn more:", + "ledger.com/e8", + }); +UX_STEP_CB( + ux_hash_blind_signing_accept_step, + pbb, + start_review_flow(), + { + &C_icon_validate_14, +#ifdef TARGET_NANOS + "Accept risk", + "and review", +#else + "Accept risk and", + "review transaction", +#endif + }); +UX_STEP_CB( + ux_hash_blind_signing_reject_step, + pb, + ui_action_validate_transaction(false), + { + &C_icon_crossmark, + "Reject", + }); +// clang-format on + +UX_FLOW(ux_hash_blind_signing_flow, + &ux_hash_blind_signing_warning_step, +#ifndef TARGET_NANOS + &ux_hash_blind_signing_text1_step, + &ux_hash_blind_signing_text2_step, +#endif + &ux_hash_blind_signing_link_step, + &ux_hash_blind_signing_accept_step, + &ux_hash_blind_signing_reject_step); + +static void start_review_flow() { + ux_flow_init(0, ux_hash_signing_flow, NULL); +} int ui_display_hash() { if (G_context.req_type != CONFIRM_HASH || G_context.state != STATE_NONE) { @@ -110,7 +192,8 @@ int ui_display_hash() { g_validate_callback = &ui_action_validate_transaction; - ux_flow_init(0, ux_tx_hash_signing_flow, NULL); + ux_flow_init(0, ux_hash_blind_signing_flow, NULL); + return 0; } #endif diff --git a/src/ui/bagl_transaction.c b/src/ui/bagl_transaction.c index b9eafb86..1b1505d8 100644 --- a/src/ui/bagl_transaction.c +++ b/src/ui/bagl_transaction.c @@ -39,6 +39,8 @@ #include "stellar/formatter.h" #include "stellar/printer.h" +static void start_review_flow(void); + static action_validate_cb g_validate_callback; static bool data_exists; static formatter_data_t formatter_data; @@ -187,6 +189,13 @@ UX_STEP_CB(ux_tx_reject_step, "Reject", }); +UX_STEP_NOCB(ux_transaction_approval_blind_signing_reminder_step, + pbb, + { + &C_icon_warning, + "You accepted", + "the risks", + }); // FLOW to display transaction information: // https://developers.ledger.com/docs/device-app/develop/ui/flows/advanced-display-management UX_FLOW(ux_tx_flow, @@ -205,6 +214,107 @@ UX_FLOW(ux_auth_flow, &ux_auth_approve_step, &ux_tx_reject_step); +UX_FLOW(ux_tx_flow_with_reminder, + &ux_tx_review_step, + &ux_tx_upper_delimiter, + &ux_tx_generic, + &ux_tx_lower_delimiter, + &ux_transaction_approval_blind_signing_reminder_step, + &ux_tx_approve_step, + &ux_tx_reject_step); + +UX_FLOW(ux_auth_flow_with_reminder, + &ux_auth_review_step, + &ux_tx_upper_delimiter, + &ux_tx_generic, + &ux_tx_lower_delimiter, + &ux_transaction_approval_blind_signing_reminder_step, + &ux_auth_approve_step, + &ux_tx_reject_step); + +// clang-format off +UX_STEP_NOCB( + ux_transaction_blind_signing_warning_step, + pbb, + { + &C_icon_warning, +#ifdef TARGET_NANOS + "Transaction", + "not trusted", +#else + "This transaction", + "cannot be trusted", +#endif + }); +#ifndef TARGET_NANOS +UX_STEP_NOCB( + ux_transaction_blind_signing_text1_step, + nnnn, + { + "Your Ledger cannot", + "decode this", + "transaction. If you", + "sign it, you could", + }); +UX_STEP_NOCB( + ux_transaction_blind_signing_text2_step, + nnnn, + { + "be authorizing", + "malicious actions", + "that can drain your", + "wallet.", + }); +#endif +UX_STEP_NOCB( + ux_transaction_blind_signing_link_step, + nn, + { + "Learn more:", + "ledger.com/e8", + }); +UX_STEP_CB( + ux_transaction_blind_signing_accept_step, + pbb, + start_review_flow(), + { + &C_icon_validate_14, +#ifdef TARGET_NANOS + "Accept risk", + "and review", +#else + "Accept risk and", + "review transaction", +#endif + }); +UX_STEP_CB( + ux_transaction_blind_signing_reject_step, + pb, + ui_action_validate_transaction(false), + { + &C_icon_crossmark, + "Reject", + }); +// clang-format on + +UX_FLOW(ux_transaction_blind_signing_flow, + &ux_transaction_blind_signing_warning_step, +#ifndef TARGET_NANOS + &ux_transaction_blind_signing_text1_step, + &ux_transaction_blind_signing_text2_step, +#endif + &ux_transaction_blind_signing_link_step, + &ux_transaction_blind_signing_accept_step, + &ux_transaction_blind_signing_reject_step); + +static void start_review_flow() { + if (G_context.req_type == CONFIRM_TRANSACTION) { + ux_flow_init(0, ux_tx_flow_with_reminder, NULL); + } else { + ux_flow_init(0, ux_auth_flow_with_reminder, NULL); + } +} + void prepare_display() { formatter_data_t fdata = { .raw_data = G_context.raw, @@ -236,7 +346,11 @@ int ui_display_transaction() { return io_send_sw(SW_BAD_STATE); } prepare_display(); - ux_flow_init(0, ux_tx_flow, NULL); + if (G_context.unverified_contracts) { + ux_flow_init(0, ux_transaction_blind_signing_flow, NULL); + } else { + ux_flow_init(0, ux_tx_flow, NULL); + } return 0; } @@ -246,7 +360,11 @@ int ui_display_auth() { return io_send_sw(SW_BAD_STATE); } prepare_display(); - ux_flow_init(0, ux_auth_flow, NULL); + if (G_context.unverified_contracts) { + ux_flow_init(0, ux_transaction_blind_signing_flow, NULL); + } else { + ux_flow_init(0, ux_auth_flow, NULL); + } return 0; } #endif diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00001.png b/tests_zemu/snapshots/s-hash-signing-approve/00001.png index f1c867640c1b30597853750bb2aab5f033bccce5..60cedf7ebcd7f6997d13bcb28e4b244ea771a779 100644 GIT binary patch delta 437 zcmV;m0ZRVl1J47HB!8AkL_t(|ob8#*l7%1)L~&~T{||QIEU2M)gr+YS2vp^)G$O=~ z28hlXhG7`SQr-uh@;8F3?;|wE7T%3<{Hz~x1@GgoyKU4^JmXi}fs|MgFIKPw?Mh1t zxD=0d-Rd#W3xN3KrOK{QGj0=K65o0-dfC{=gYRSndI89^%YP1HhKRCUS(5$cfa^|_ z@~2}Hh3_rQ(yCc#vpJx~*yPZixF)b)0BS4Lrc5A6q{`aC_;=!5zI1-Uvp0q~T77py z0MIC>tA7xJ)TaJoEC!lb7SbdY`4TSIDpt4}*1-0Cd4u6>2JKBgF2wZLEEn+`?9j5G8is)eK?rHMYjN1t}zrj$h!S3?g+DY^k zxB1R-PL|*T5b|2Acx)*Tob>gHKS_Y4=6$nGa3iZvH2*PlI8dV$L}FSk2!sK*VctZt zu+s-qbSj7Fon7}U#*Kn`12%vN0FyV%IRGqGT|E_)kS?=J=5Y2$!COctnf{x1sn2$X fVHk#C7<=;vlU^NFv|51LOmcB!8<(L_t(|ob8ywmct+jMX_h{{~z2%yKw3th$#*RbL6fXgT(Lz zQviY>2!dTn&d+~6tIKpat;3Cn_W}R_ARWJoDdLi}#I3ak z76O>BOuILwHCQbP*S%Anl&o5UwBY*iO@O#ff7YD(0|psjvNgzIn0K723iUlm$40Rs z2IRD#c?dJK#kXH@XG3(-%62_$c@KJ9r7&@~_{*;VPAmYZ1h76{uAm&$QZZQ&rU3v9 zZC?D^{4(hC34hcl1KP3#b3nx=NjJ`2bXdO*I8q0>{tV4|pbg(Y`)Do=QLh7og?FeO z-3-}S97!PN#bwna+O8F0j-=>mo3m+v=aOb8Ht2U=Com+ymHUVUl(dOTMoaDMY``Oq z!K&aAK{S}ds@+fymx0hs5tZ9Aa^ViUj{ulXfCf6Lu0!0X8#<{Uscnl|<1N5xFG2d^ zlKypLgKx&6PM7sQll<7DvEiKo+Y4c>!Q|PE}4sXz4`L1CG7Z!B;#wiw2S2kPfUxa1 zrLM1zL;)1PR?Bbcsafb{?*NI`_$jj>LF9aiXs6Uv9!Av3x&Ezif#@v=VR%)LBce|?IPBwzB1G^?`Z)ze@ zBWN^PR<^8zw|^tT_HU(zK{ejd5VreL9ntlH>!w@M7$A#`s}*67VbA{>0tX|RRFH!xWsUyoz>msb(k|o$-suyhZ&ARhkFUVd& zsfVIUsrl4PcCe1)0FLblxdMQ*aCPV$n~^FjP;s#Z*g@;nPfQs~p}DN8%)sW^8cr>9 y*`=@@*SnG>k=-?wvmoRHUYtP?1VIo4EAs&_D_(@$iP32Q0000tA7xJ)TaJoEC!lb7SbdY`4TSIDpt4}*1-0Cd4u6>2JKBgF2wZLEEn+`?9j5G8is)eK?rHMYjN1t}zrj$h!S3?g+DY^k zxB1R-PL|*T5b|2Acx)*Tob>gHKS_Y4=6$nGa3iZvH2*PlI8dV$L}FSk2!sK*VctZt zu+s-qbSj7Fon7}U#*Kn`12%vN0FyV%IRGqGT|E_)kS?=J=5Y2$!COctnf{x1sn2$X fVHk#C7<=;vlU^NFv|%0;52< z(V!s$0001navt7kyrXsXJno~}y|%>N$m2DB$`Ne)-8c`uT`aSCSO988F0qQG){$Ad z=i2t^F_;$sb>&iJ5<*)~v^OvpMk~AY)GYL{J-{M2IXH=HIL`}!^@ZA$sSXnB6;ye4Fn*m_mw!4xVC{`5mR6ru z2!J=s>gq3qA~n<>3}P@7WTBaSio7Y8)qhkHbprK^&H9pKMKLxe3q1Sta;iYglStvn zvG^|eGe*Xwj(;y*r+%wmvT6yIy*W#_Cw<+6Mr&%nyGC9qBJ%75LEulAy|X1hM1JTU z^_zjoDnzT^s+OivUAsT;U%fR)k(TD0>)2)Y`tV1n8-ACpg?uvwWz>RLO_3F3q@A@d zx(m)ER=ZTj%Lss#i^dlnS5u$T_JDLE`8SfdgBwXOYb06wUwwl=CIA2c001B&qBrZ! VU{Qn7W9a|@002ovPDHLkV1fxi%p?E+ delta 456 zcmV;(0XP1|1L6aaB!8(%L_t(|ob8y=lEWYfMa|CU|35en=|j4X5x5{`HO_FR4=GWJ z7fUE91wjx5!BEZveYH=N?w-f@qfRd^_Q!aR-|;R-u4c>!Q|PE}4sXz4`L1CG7Z!B;#wiw2S2kPfUxa1 zrLM1zL;)1PR?Bbcsafb{?*NI`_$jj>LF9aiXs6Uv9!Av3x&Ezif#@v=VR%)LBce|?IPBwzB1G^?`Z)ze@ zBWN^PR<^8zw|^tT_HU(zK{ejd5VreL9ntlH>!w@M7$A#`s}*67VbA{>0tX|RRFH!xWsUyoz>msb(k|o$-suyhZ&ARhkFUVd& zsfVIUsrl4PcCe1)0FLblxdMQ*aCPV$n~^FjP;s#Z*g@;nPfQs~p}DN8%)sW^8cr>9 y*`=@@*SnG>k=-?wvmoRHUYtP?1VIo4EAs&_D_(@$iP32Q0000u&^Z0ok#+HvMNWCyRoM4$1c7^O-2tj#bmPi|; z%Uo(RQ16$m{eNYPSa2`$N0t}cF8r9xituGV=ZDhmpRm_AoA;)6sD9w5vvfAIL>8t< z2zgpylZ+fxbAo!d)tq^X$@?+N3t~4$;~}Dve)}6cc_%{6IC~A#M!d78L&{JW)T6{& vp;;?Zjg_Ks-ut8swVSd400000z{U?^%_xG*aDdJL015yANkvXXu0mjfmF~YE delta 427 zcmV;c0aX601H}W7B!7%aL_t(|ob8y)l7t`(MdMWa{~zqaUg%JCUSyawNYy>%0;52< z(V!s$0001navt7kyrXsXJno~}y|%>N$m2DB$`Ne)-8c`uT`aSCSO988F0qQG){$Ad z=i2t^F_;$sb>&iJ5<*)~v^OvpMk~AY)GYL{J-{M2IXH=HIL`}!^@ZA$sSXnB6;ye4Fn*m_mw!4xVC{`5mR6ru z2!J=s>gq3qA~n<>3}P@7WTBaSio7Y8)qhkHbprK^&H9pKMKLxe3q1Sta;iYglStvn zvG^|eGe*Xwj(;y*r+%wmvT6yIy*W#_Cw<+6Mr&%nyGC9qBJ%75LEulAy|X1hM1JTU z^_zjoDnzT^s+OivUAsT;U%fR)k(TD0>)2)Y`tV1n8-ACpg?uvwWz>RLO_3F3q@A@d zx(m)ER=ZTj%Lss#i^dlnS5u$T_JDLE`8SfdgBwXOYb06wUwwl=CIA2c001B&qBrZ! VU{Qn7W9a|@002ovPDHLkV1li5%k2OF diff --git a/tests_zemu/snapshots/s-hash-signing-approve/00005.png b/tests_zemu/snapshots/s-hash-signing-approve/00005.png index 1701bba8bdbc4d9b11f5eba0cd8b67fd333aab4e..56d35dd103c51784ccc342edc58b5831b902a195 100644 GIT binary patch delta 465 zcmV;?0WSWl1M35jB!99=L_t(|ob8y|t^y$pKs!eN|AXgYd_W1%g;GFJdt!{2p&jVP zr2vlOIF7S`>xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}u&^Z0ok#+HvMNWCyRoM4$1c7^O-2tj#bmPi|; z%Uo(RQ16$m{eNYPSa2`$N0t}cF8r9xituGV=ZDhmpRm_AoA;)6sD9w5vvfAIL>8t< z2zgpylZ+fxbAo!d)tq^X$@?+N3t~4$;~}Dve)}6cc_%{6IC~A#M!d78L&{JW)T6{& vp;;?Zjg_Ks-ut8swVSd400000z{U?^%_xG*aDdJL015yANkvXXu0mjf(R9B> diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00001.png b/tests_zemu/snapshots/s-hash-signing-reject/00001.png index f1c867640c1b30597853750bb2aab5f033bccce5..60cedf7ebcd7f6997d13bcb28e4b244ea771a779 100644 GIT binary patch delta 437 zcmV;m0ZRVl1J47HB!8AkL_t(|ob8#*l7%1)L~&~T{||QIEU2M)gr+YS2vp^)G$O=~ z28hlXhG7`SQr-uh@;8F3?;|wE7T%3<{Hz~x1@GgoyKU4^JmXi}fs|MgFIKPw?Mh1t zxD=0d-Rd#W3xN3KrOK{QGj0=K65o0-dfC{=gYRSndI89^%YP1HhKRCUS(5$cfa^|_ z@~2}Hh3_rQ(yCc#vpJx~*yPZixF)b)0BS4Lrc5A6q{`aC_;=!5zI1-Uvp0q~T77py z0MIC>tA7xJ)TaJoEC!lb7SbdY`4TSIDpt4}*1-0Cd4u6>2JKBgF2wZLEEn+`?9j5G8is)eK?rHMYjN1t}zrj$h!S3?g+DY^k zxB1R-PL|*T5b|2Acx)*Tob>gHKS_Y4=6$nGa3iZvH2*PlI8dV$L}FSk2!sK*VctZt zu+s-qbSj7Fon7}U#*Kn`12%vN0FyV%IRGqGT|E_)kS?=J=5Y2$!COctnf{x1sn2$X fVHk#C7<=;vlU^NFv|51LOmcB!8<(L_t(|ob8ywmct+jMX_h{{~z2%yKw3th$#*RbL6fXgT(Lz zQviY>2!dTn&d+~6tIKpat;3Cn_W}R_ARWJoDdLi}#I3ak z76O>BOuILwHCQbP*S%Anl&o5UwBY*iO@O#ff7YD(0|psjvNgzIn0K723iUlm$40Rs z2IRD#c?dJK#kXH@XG3(-%62_$c@KJ9r7&@~_{*;VPAmYZ1h76{uAm&$QZZQ&rU3v9 zZC?D^{4(hC34hcl1KP3#b3nx=NjJ`2bXdO*I8q0>{tV4|pbg(Y`)Do=QLh7og?FeO z-3-}S97!PN#bwna+O8F0j-=>mo3m+v=aOb8Ht2U=Com+ymHUVUl(dOTMoaDMY``Oq z!K&aAK{S}ds@+fymx0hs5tZ9Aa^ViUj{ulXfCf6Lu0!0X8#<{Uscnl|<1N5xFG2d^ zlKypLgKx&6PM7sQll<7DvEiKo+Y4c>!Q|PE}4sXz4`L1CG7Z!B;#wiw2S2kPfUxa1 zrLM1zL;)1PR?Bbcsafb{?*NI`_$jj>LF9aiXs6Uv9!Av3x&Ezif#@v=VR%)LBce|?IPBwzB1G^?`Z)ze@ zBWN^PR<^8zw|^tT_HU(zK{ejd5VreL9ntlH>!w@M7$A#`s}*67VbA{>0tX|RRFH!xWsUyoz>msb(k|o$-suyhZ&ARhkFUVd& zsfVIUsrl4PcCe1)0FLblxdMQ*aCPV$n~^FjP;s#Z*g@;nPfQs~p}DN8%)sW^8cr>9 y*`=@@*SnG>k=-?wvmoRHUYtP?1VIo4EAs&_D_(@$iP32Q0000tA7xJ)TaJoEC!lb7SbdY`4TSIDpt4}*1-0Cd4u6>2JKBgF2wZLEEn+`?9j5G8is)eK?rHMYjN1t}zrj$h!S3?g+DY^k zxB1R-PL|*T5b|2Acx)*Tob>gHKS_Y4=6$nGa3iZvH2*PlI8dV$L}FSk2!sK*VctZt zu+s-qbSj7Fon7}U#*Kn`12%vN0FyV%IRGqGT|E_)kS?=J=5Y2$!COctnf{x1sn2$X fVHk#C7<=;vlU^NFv|%0;52< z(V!s$0001navt7kyrXsXJno~}y|%>N$m2DB$`Ne)-8c`uT`aSCSO988F0qQG){$Ad z=i2t^F_;$sb>&iJ5<*)~v^OvpMk~AY)GYL{J-{M2IXH=HIL`}!^@ZA$sSXnB6;ye4Fn*m_mw!4xVC{`5mR6ru z2!J=s>gq3qA~n<>3}P@7WTBaSio7Y8)qhkHbprK^&H9pKMKLxe3q1Sta;iYglStvn zvG^|eGe*Xwj(;y*r+%wmvT6yIy*W#_Cw<+6Mr&%nyGC9qBJ%75LEulAy|X1hM1JTU z^_zjoDnzT^s+OivUAsT;U%fR)k(TD0>)2)Y`tV1n8-ACpg?uvwWz>RLO_3F3q@A@d zx(m)ER=ZTj%Lss#i^dlnS5u$T_JDLE`8SfdgBwXOYb06wUwwl=CIA2c001B&qBrZ! VU{Qn7W9a|@002ovPDHLkV1fxi%p?E+ delta 456 zcmV;(0XP1|1L6aaB!8(%L_t(|ob8y=lEWYfMa|CU|35en=|j4X5x5{`HO_FR4=GWJ z7fUE91wjx5!BEZveYH=N?w-f@qfRd^_Q!aR-|;R-u4c>!Q|PE}4sXz4`L1CG7Z!B;#wiw2S2kPfUxa1 zrLM1zL;)1PR?Bbcsafb{?*NI`_$jj>LF9aiXs6Uv9!Av3x&Ezif#@v=VR%)LBce|?IPBwzB1G^?`Z)ze@ zBWN^PR<^8zw|^tT_HU(zK{ejd5VreL9ntlH>!w@M7$A#`s}*67VbA{>0tX|RRFH!xWsUyoz>msb(k|o$-suyhZ&ARhkFUVd& zsfVIUsrl4PcCe1)0FLblxdMQ*aCPV$n~^FjP;s#Z*g@;nPfQs~p}DN8%)sW^8cr>9 y*`=@@*SnG>k=-?wvmoRHUYtP?1VIo4EAs&_D_(@$iP32Q0000u&^Z0ok#+HvMNWCyRoM4$1c7^O-2tj#bmPi|; z%Uo(RQ16$m{eNYPSa2`$N0t}cF8r9xituGV=ZDhmpRm_AoA;)6sD9w5vvfAIL>8t< z2zgpylZ+fxbAo!d)tq^X$@?+N3t~4$;~}Dve)}6cc_%{6IC~A#M!d78L&{JW)T6{& vp;;?Zjg_Ks-ut8swVSd400000z{U?^%_xG*aDdJL015yANkvXXu0mjfmF~YE delta 427 zcmV;c0aX601H}W7B!7%aL_t(|ob8y)l7t`(MdMWa{~zqaUg%JCUSyawNYy>%0;52< z(V!s$0001navt7kyrXsXJno~}y|%>N$m2DB$`Ne)-8c`uT`aSCSO988F0qQG){$Ad z=i2t^F_;$sb>&iJ5<*)~v^OvpMk~AY)GYL{J-{M2IXH=HIL`}!^@ZA$sSXnB6;ye4Fn*m_mw!4xVC{`5mR6ru z2!J=s>gq3qA~n<>3}P@7WTBaSio7Y8)qhkHbprK^&H9pKMKLxe3q1Sta;iYglStvn zvG^|eGe*Xwj(;y*r+%wmvT6yIy*W#_Cw<+6Mr&%nyGC9qBJ%75LEulAy|X1hM1JTU z^_zjoDnzT^s+OivUAsT;U%fR)k(TD0>)2)Y`tV1n8-ACpg?uvwWz>RLO_3F3q@A@d zx(m)ER=ZTj%Lss#i^dlnS5u$T_JDLE`8SfdgBwXOYb06wUwwl=CIA2c001B&qBrZ! VU{Qn7W9a|@002ovPDHLkV1li5%k2OF diff --git a/tests_zemu/snapshots/s-hash-signing-reject/00005.png b/tests_zemu/snapshots/s-hash-signing-reject/00005.png index 1701bba8bdbc4d9b11f5eba0cd8b67fd333aab4e..56d35dd103c51784ccc342edc58b5831b902a195 100644 GIT binary patch delta 465 zcmV;?0WSWl1M35jB!99=L_t(|ob8y|t^y$pKs!eN|AXgYd_W1%g;GFJdt!{2p&jVP zr2vlOIF7S`>xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}u&^Z0ok#+HvMNWCyRoM4$1c7^O-2tj#bmPi|; z%Uo(RQ16$m{eNYPSa2`$N0t}cF8r9xituGV=ZDhmpRm_AoA;)6sD9w5vvfAIL>8t< z2zgpylZ+fxbAo!d)tq^X$@?+N3t~4$;~}Dve)}6cc_%{6IC~A#M!d78L&{JW)T6{& vp;;?Zjg_Ks-ut8swVSd400000z{U?^%_xG*aDdJL015yANkvXXu0mjf(R9B> diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00022.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00022.png index fedc610f8ab1d371dd9d796620c4d599d9767616..56d35dd103c51784ccc342edc58b5831b902a195 100644 GIT binary patch delta 465 zcmV;?0WSXe0_y{iB!99=L_t(|ob8y|t^y$pKs!eN|AXgYd_W1%g;GFJdt!{2p&jVP zr2vlOIF7S`>xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case0/00021.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case0/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case1/00030.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case1/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case2/00026.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals-case2/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args-and-no-source/00036.png b/tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args-and-no-source/00036.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args/00037.png b/tests_zemu/snapshots/s-op-invoke-host-function-with-auth-and-no-args/00037.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-with-auth/00049.png b/tests_zemu/snapshots/s-op-invoke-host-function-with-auth/00049.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-with-complex-sub-invocation/00080.png b/tests_zemu/snapshots/s-op-invoke-host-function-with-complex-sub-invocation/00080.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-without-args/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-without-args/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC}=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^=0o1^Cz?8gNe}G`m0OlLBdeQ~t^4_?i_s2ki#z~#l8Q=!{ zltI0;{s1DgsKXveh9fG|Uw-g1uv;w2?4<$LV}p7@bJxqn&R$m~a(nV*jMk%d=h z#@dWAn*v)*A9lj=*4GrKtn~+8^?OX6l;d8JDWW{{;4xH=4`BTy977pi5ufbR+=B_l zO&pCZPD3yI;F|U2flqyE?)A!#RYZB}YgadF+4?@f!s5bRO?fX2*c%cHuy7j}JA~Gc z*41dlY`el|qE}i(YYk32sdWU~_gN67{IfTZyQh!S&@g5_&wbm5$;A^C;|UIkM{M-_ wr+W#aI6VnZo^BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f_KZmdjJ3c diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-without-auth-and-no-source/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-without-auth-and-no-source/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-invoke-contract-with-complex-sub-invocation/00099.png b/tests_zemu/snapshots/s-soroban-auth-invoke-contract-with-complex-sub-invocation/00099.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-invoke-contract-without-args/00042.png b/tests_zemu/snapshots/s-soroban-auth-invoke-contract-without-args/00042.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-invoke-contract/00051.png b/tests_zemu/snapshots/s-soroban-auth-invoke-contract/00051.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-public/00019.png b/tests_zemu/snapshots/s-soroban-auth-public/00019.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-reject/00051.png b/tests_zemu/snapshots/s-soroban-auth-reject/00051.png index 9c7e7049cb3e9bcfb1601ec510ee465d38229d4d..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge9D0*wQZB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g3}|aEdT%j delta 313 zcmV-90mlA~1JnYLB!3%8L_t(|ob8#x4#OY}L(^&d{}1NS9Wo(C00pE8o8_HWEv-^J zkf?|RK@bEU?j(0w{1=tS?gZv(s!S-oLS?}9`uwQm&X+lW2Py-k0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&G zII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=mSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*U zj-J(h>P7(Y#xl^nkBhIt`kQe1WT9~g7`&Ns0r)K_0Og4C5BBp0_v3}4{b+)F00000 LNkvXXu0mjf4S|+` diff --git a/tests_zemu/snapshots/s-soroban-auth-reject/00052.png b/tests_zemu/snapshots/s-soroban-auth-reject/00052.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..9c7e7049cb3e9bcfb1601ec510ee465d38229d4d 100644 GIT binary patch delta 313 zcmV-90mlBU1JnYLB!3%8L_t(|ob8#x4#OY}L(^&d{}1NS9Wo(C00pE8o8_HWEv-^J zkf?|RK@bEU?j(0w{1=tS?gZv(s!S-oLS?}9`uwQm&X+lW2Py-k0?~E_&igM#?#L~IOHR(-<@sYotiy&C*Y&G zII0yeh-p3zW9cv$Q0k>6Y_)5~SfP=mSMUtz)%Ex|-o}7!H9hbQ(8{%C?kQVa?C`*U zj-J(h>P7(Y#xl^nkBhIt`kQe1WT9~g7`&Ns0r)K_0Og4C5BBp0_v3}4{b+)F00000 LNkvXXu0mjfGia8d delta 402 zcmV;D0d4-&0;~g&B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$f<3XnRsaA1 diff --git a/tests_zemu/snapshots/s-soroban-auth-reject/00053.png b/tests_zemu/snapshots/s-soroban-auth-reject/00053.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbedd829ab5d18cf4b26661621f7acc98d63963 GIT binary patch literal 428 zcmV;d0aN~oP)emoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-testnet/00020.png b/tests_zemu/snapshots/s-soroban-auth-testnet/00020.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v0000xAoM|NLsyd%4YCiNx^$fY(C9cNp1|Iq`8Hu5k=;tI;LVL!_%x)1;5^ zcywH^J;ft#1b9cr-+!`Tdme9)0cm^zW%28* zZ;6!BkH~Ju3m^qe1!{x?mX~is#uS(r&y_nht4k0D+rnlYjUJ_DrJ!k@he0NTE1Cu+ zWHjN!EtD+b5GJL7N)i1bOs=YW2wM!&nn%hq`d!Ssks!6V@^O>X3U$BagGm(sabyl? zwZ3Bm`2YY+!G9a_G%Z2D)JvGn+feTepxxrkAt^Qo_n@vqz)P7xZshzBw&g**j`!1F z#AFT2izEthbP>~-vbqQTCWl*OU^L7Ct!-Q@qDPQy#*rg{_7GxsEqQaEtrq%6$&}=K}z;(#&N_ZzTQU4R%Lfbvxn^+ z&>51X!^qPArzI$qdpZ5nIl?qd^>j@S@K)uH<2a7vI8FyoOAZC});g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$g7wm>MF0Q* diff --git a/tests_zemu/snapshots/s-soroban-auth-unknown-network/00020.png b/tests_zemu/snapshots/s-soroban-auth-unknown-network/00020.png index fcbedd829ab5d18cf4b26661621f7acc98d63963..04ec5ea36d1de95bf48ec0ad2f8c6654df81b12e 100644 GIT binary patch delta 370 zcmV-&0ge8w1C0ZaB!5&%L_t(|ob8y&7K0!RMZr`5|ASrFMOsT4Vjv(2@2)7;G<_Ku zi~#@uFe|q6@9*1hY}d~W4Zsz+0hp3kZwCU73h-iM*GRblE&JvReSBmFW}MRLT>);g zPnpz9ZwHJqY3Zpxh7L^c3g8)9dZJALZ(8Ru0JAmR*grSOqI?v4-ug>F@XA6I6_(ffxOs5xd&?$ zjW`jxtPYBEUvJ^CQ;S?vxr$Xrsa-9H>e@NAR_|6yeGqHWcEa71Hxu1%F>i%08nNeY z$DpwrB*vd-z-!!wy5m&F2`@_J_o-n8l=&m3_gzra+t7k;PCihYUy{zf13(1l!& zP9!ehN#7#?_aVA|w4`?cqK657O-p@&pOkpwzUX!#X0>?UstW)B003|c-XCu8h*y=L QU;qFB07*qoM6N<$f||st1^@s6 delta 402 zcmV;D0d4+`1FQp(B!6>BL_t(|ob8$04#FS|hS{R;|G-}8#Uge+K+Duo{l6H)#vxn( zQVJ^t0000uhx_gIbGB!NPmRWdp*K?^$()QBm2t+D-Bd=D4 ziyDHcDzJN-ea7)z1ESWKiAQ5900s#j>+Y5x)$3t;C#JjmPsG%CC4_8|$uQD#+TvJeD*5FCvF0D!>*wsic!?hOQe01E&B07*qoM6N<$g3qemoh2&h$et=Sz z>+bS?<9B|V2?U^Qe!cx~GE`5uRH0MB*#*3i!G~VTfYS&;Iiu6z86X`n1oc_9d)Jz& z%q=+}faQZ@GFW!>jK(5QDnPmRWdp*K?^$()QBm2t+D-Bd=D4iyDHcDzJN-ea7)z1ESWKiAQ5900s#j z>+Y5x)$3t;C#JjmPsG%=1egyzR{aP+d%a)A=7-2 zsUfAUfvioQ0k8cg-z2&n2@N}C^q*!1crqyUaFhx5Aql}zW>saf5Cnb@9E|_~fWZT{ Wbo{{X4Fr7v000066OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1nOXjQs!r delta 518 zcmV+h0{Q*L2A>3wBYy$rNkl2tqO0%`N#B;U+|Bhn^Q0#k80X9B}G}Gi3d}lz6(VfKw&K%HO=zrbq1h3f&T*95X0RR91 zuq-%N3`LvwA$}fruMu;5zd-#=(a57?pFbaN@RWE3{_QUk%?e4b4e5~ep`Wr``%KG8 zLfu6hK1KfXuvr+Hqj}Oi{*#La&DYe1N;+JJQcRGLchMt=p+eb zz1Pt7M~`e>4HcVV&bh8wtB+9HHmHqgAa;A3P1q&EPum=1oju6xho?7T+@%2k;9jiv zfGO+v(3`C%%#M+X-`D2vTSwZ z{4!7dKfg2L1?zYn6ue7bn}GsWfZiGMucRj65w9a=o8F~MynjWrPQVJdwCe98hf4_0}mF98u`Db48WA0007YUTG6Qay2g7D)n`5()D4^mHq)$07*qoM6N<$f_&)A+5i9m delta 815 zcmV+~1JL}-1H}fABYy)7Nkl66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1j5dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1iqq?XUm< delta 433 zcmV;i0Z#s%1j_@EB!7}gL_t(|obB03a>F1HKvA5^O}PJ&xJwqUsHh%5LO@%|e=Da2 zm^6csoDu*40Pwe!Qc5ZM^FVd4fGDiX>pqBDm%4P{*XHkAN9Qr;oUEMIab0Hf7<}*i zGEev$a$yh~o2fdW>5-Wl?*q$c1IuOnug-la>tMSrtSzzVpu>hEM$)HR!$ zHFCq^?*T^&8Z&)hN}j2*|CX!84?u$+m4Ox-e>Q^K#1Fu+BZ>J~pAow`65El#(NOeXFeU&4Vq86W|?-y;m9+X2Xk>% zAOFo_?PkqOXMZY=eV8czL2R8zOxRT~66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1nOXjQs!r delta 518 zcmV+h0{Q*L2A>3wBYy$rNkl2tqO0%`N#B;U+|Bhn^Q0#k80X9B}G}Gi3d}lz6(VfKw&K%HO=zrbq1h3f&T*95X0RR91 zuq-%N3`LvwA$}fruMu;5zd-#=(a57?pFbaN@RWE3{_QUk%?e4b4e5~ep`Wr``%KG8 zLfu6hK1KfXuvr+Hqj}Oi{*#La&DYe1N;+JJQcRGLchMt=p+eb zz1Pt7M~`e>4HcVV&bh8wtB+9HHmHqgAa;A3P1q&EPum=1oju6xho?7T+@%2k;9jiv zfGO+v(3`C%%#M+X-`D2vTSwZ z{4!7dKfg2L1?zYn6ue7bn}GsWfZiGMucRj65w9a=o8F~MynjWrPQVJdwCe98hf4_0}mF98u`Db48WA0007YUTG6Qay2g7D)n`5()D4^mHq)$07*qoM6N<$f_&)A+5i9m delta 815 zcmV+~1JL}-1H}fABYy)7Nkl66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1j5dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1iqq?XUm< delta 433 zcmV;i0Z#s%1j_@EB!7}gL_t(|obB03a>F1HKvA5^O}PJ&xJwqUsHh%5LO@%|e=Da2 zm^6csoDu*40Pwe!Qc5ZM^FVd4fGDiX>pqBDm%4P{*XHkAN9Qr;oUEMIab0Hf7<}*i zGEev$a$yh~o2fdW>5-Wl?*q$c1IuOnug-la>tMSrtSzzVpu>hEM$)HR!$ zHFCq^?*T^&8Z&)hN}j2*|CX!84?u$+m4Ox-e>Q^K#1Fu+BZ>J~pAow`65El#(NOeXFeU&4Vq86W|?-y;m9+X2Xk>% zAOFo_?PkqOXMZY=eV8czL2R8zOxRT~dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1k&w({lg- delta 339 zcmcb}{ElgYO1-J4i(^Q|oVPclR~<4CX?>`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpP`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpP{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1nOXjQs!r delta 518 zcmV+h0{Q*L2A>3wBYy$rNkl2tqO0%`N#B;U+|Bhn^Q0#k80X9B}G}Gi3d}lz6(VfKw&K%HO=zrbq1h3f&T*95X0RR91 zuq-%N3`LvwA$}fruMu;5zd-#=(a57?pFbaN@RWE3{_QUk%?e4b4e5~ep`Wr``%KG8 zLfu6hK1KfXuvr+Hqj}Oi{*#La&DYe1N;+JJQcRGLchMt=p+eb zz1Pt7M~`e>4HcVV&bh8wtB+9HHmHqgAa;A3P1q&EPum=1oju6xho?7T+@%2k;9jiv zfGO+v(3`C%%#M+X-`D2vTSwZ z{4!7dKfg2L1?zYn6ue7bn}GsWfZiGMucRj65w9a=o8F~MynjWrPQVJdwCe98hf4_0}mF98u`Db48WA0007YUTG6Qay2g7D)n`5()D4^mHq)$07*qoM6N<$f_&)A+5i9m delta 815 zcmV+~1JL}-1H}fABYy)7Nkl66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1j5dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1iqq?XUm< delta 433 zcmV;i0Z#s%1j_@EB!7}gL_t(|obB03a>F1HKvA5^O}PJ&xJwqUsHh%5LO@%|e=Da2 zm^6csoDu*40Pwe!Qc5ZM^FVd4fGDiX>pqBDm%4P{*XHkAN9Qr;oUEMIab0Hf7<}*i zGEev$a$yh~o2fdW>5-Wl?*q$c1IuOnug-la>tMSrtSzzVpu>hEM$)HR!$ zHFCq^?*T^&8Z&)hN}j2*|CX!84?u$+m4Ox-e>Q^K#1Fu+BZ>J~pAow`65El#(NOeXFeU&4Vq86W|?-y;m9+X2Xk>% zAOFo_?PkqOXMZY=eV8czL2R8zOxRT~66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1nOXjQs!r delta 518 zcmV+h0{Q*L2A>3wBYy$rNkl2tqO0%`N#B;U+|Bhn^Q0#k80X9B}G}Gi3d}lz6(VfKw&K%HO=zrbq1h3f&T*95X0RR91 zuq-%N3`LvwA$}fruMu;5zd-#=(a57?pFbaN@RWE3{_QUk%?e4b4e5~ep`Wr``%KG8 zLfu6hK1KfXuvr+Hqj}Oi{*#La&DYe1N;+JJQcRGLchMt=p+eb zz1Pt7M~`e>4HcVV&bh8wtB+9HHmHqgAa;A3P1q&EPum=1oju6xho?7T+@%2k;9jiv zfGO+v(3`C%%#M+X-`D2vTSwZ z{4!7dKfg2L1?zYn6ue7bn}GsWfZiGMucRj65w9a=o8F~MynjWrPQVJdwCe98hf4_0}mF98u`Db48WA0007YUTG6Qay2g7D)n`5()D4^mHq)$07*qoM6N<$f_&)A+5i9m delta 815 zcmV+~1JL}-1H}fABYy)7Nkl66OptOvoy)*)cc$9m&=LFcyaQu->?6SSIxIW9TY=18XcLH0v=L8HL{3^0x zTtBOvhk3+1AV&f0^c}nM`d6;y5eoo_WfI_xG+xFd79eLNw`3%<1Ww=9?pDLMXQcNg zaIskK;lDG#0IOyqgb+e>`0BQ>!iy`#*aEJy0JX<$lRVXoY?E8M_uk~ytSuEJ_GpY+ zH4HAL`43F@Kz|!o3dL#%Z*l#^99BHyA~wm^d(-Yq870Pb&){(!%pG#e!5o21r(x$f zC%aG!kn>s@@zP>HB=7Xu+2AwVntiuTp2llu*lAaNTbYWPKnoiXmtAr+SO(mN*@;Y> z@STG@hz-Xx4HLz zcc7RYJF0XpDR3QJslYuYu4*``7lN_616lu!)XIF-Y6HRoh^V3bs?MxGx%cM>nrCM8 zz7%nRgn#KCd_MZ&fx;p#-)mV4!bg()y(0aki_EAK*Un@Kw^?@-Y>f4)SSH5tSDP;IFs;f8R9tQW_WbB4z6=F5A9#4ThU==Wt}ATE z^=`{zpKhp}1xtRxi&F?8gb?Db>6D>N=~lJx+JA9@nA#F)R}x@KMqt5H!Xq+1BaAAD zjCe`9nw&|jJ84{{l%$3K4c#Q4eLTZzsH-3bqR%Kf<+!eep>>l7e^_c6hyJ9r<}y5U za)I4;FTozl54g*!2icl}7O0`;xOi!||BPl=J?(pCyafvo5HC0JcF|9(-T}*D@-LIP t$tV{InYCK)zp?@LDTEM02qDBH_yrUaLnKLdJ>LKT002ovPDHLkV1j5dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1iqq?XUm< delta 433 zcmV;i0Z#s%1j_@EB!7}gL_t(|obB03a>F1HKvA5^O}PJ&xJwqUsHh%5LO@%|e=Da2 zm^6csoDu*40Pwe!Qc5ZM^FVd4fGDiX>pqBDm%4P{*XHkAN9Qr;oUEMIab0Hf7<}*i zGEev$a$yh~o2fdW>5-Wl?*q$c1IuOnug-la>tMSrtSzzVpu>hEM$)HR!$ zHFCq^?*T^&8Z&)hN}j2*|CX!84?u$+m4Ox-e>Q^K#1Fu+BZ>J~pAow`65El#(NOeXFeU&4Vq86W|?-y;m9+X2Xk>% zAOFo_?PkqOXMZY=eV8czL2R8zOxRT~dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1hMg?VSJs delta 414 zcmV;P0b%}~1h@l`B!7QNL_t(|obB0Na>F1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsrF1DMp3nsov{BUv6ntDr9>D9yRFgZ-1C%V zm_$f~Kbrvn000000Kf@3=bZEEC=U2s9l&4GN_}yk0@UoMl-5Rah*$weGmL2VO|Afi ztATFzO|Aen#Wm^D**CL~)d8H*&qAWvH@Sa6;nJ;}eQk1Eet!S}01UCQ`&Td08#ep- zTYbAWp5GV-AGTLv13Rtl(W8DObfB-%y4s|a+E2pvsKn{R3p>#ID~EnA+MJyt_o%-9 zxr}qeCyta-i7jS$N4c^8bQ>DB1~#5gN@2pzHclVv!?jT9Nu?EVAFVGyK>N?U)Srk6 z8?DS*B%g@giGSoX;YwoH4*+3Zw+8h0HkbW$8^gOV71wVTgKtk4AH>>YRKKO!+~l~E z*M6J!t-FKlPjGLsr?uxc~qF delta 445 zcmV;u0Yd(`1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1k&w({lg- delta 339 zcmcb}{ElgYO1-J4i(^Q|oVPclR~<4CX?>`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpP`1PUW-wrFq@_jX}kk$&Q=C{_bC{yxi%I z_H^ILLJV*qDJUp-{om@BJF6JNOIGKE|2m}8FsJzEVy*Ar3abyaMl!6N-kAS2*sK34 z^NtmF3uIQ$mkDi&x~{%H3tZ zvTc^&QHE1ba^rn`=AOG#w&}HTh3wzZyU+KlI&I{gYm>a+wq>>Q5mm+5Cfld1Y|$6? jX68ChzTpP{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_dL_t(|ob8%hmV+P+K$)KIg#9mxz08NFOiFlJun_0oFAr)G z5+D$D4gdfE000000J;bvgb-F+F~noF0skGt0f=MY`XsQ*Jpy2L1|&|m8w0BWxD6%) zkR9(vCxOWT+=-vn2Arlo(!KXzvt$akXMp$KoW~Q41)#amn}5p$&(#JDVb0wE006Kp z>?}1~n3=YX`z_LsK z+U&h-2|ChdefrC1DvxQJ*;OX+v%&!Y000000002MB)=KvgzRinR4M=f002ovPDHLk FV1j3|?X~~_ delta 439 zcmV;o0Z9Ix1knSKB!8GmL_t(|obB0Na)cldMp2TQov{BUv6nnhA%wqC0z-e3d!CFn znzkE3Tju}(000000ANB0A%t)`iW@#p2e6V>>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1f}t(>ZA85K+3-N{%j<-h!vnW!-!_z$rT_f zYM`5aCs%-!;*@mh>^tW^P6sffo`poS@8s@)s7SYN_O;19@_z#W0HBKpyRDw2*KGE~ zxAf=Pc>baryxFTV8`!k`iXLf~&Ziej8)cxDG$-EyesqUP*m`HIr^ zPcyC)czq+AjYvB6xNi2-n*``p3`Y3*(awUmYz;(1`0Sp>{^HTpJ zCakwIYmxjS_J2+!zX>N2PyGP!9~CXk>60vs=hVMGU{&;M&-3(buWu#2^hKL>j)d#xEk3)G^Aa3VH8pNYv(8A2Odn4{*ck_A^w7vu8;#qFj9gvTp<-=!UHjgp1 z8}Uc&or3nYSDPPX2F$Lg0?oK3n(K!Jy9!V*U-{k8oG=7>KN#=45=nkwJ_`+23sch+ h00000004jmz5oCRHnn)8AnX7D002ovPDHLkV1jc4(_H`n delta 445 zcmV;u0Yd)K1J?tPB!8YsL_t(|obB6DZo?oDMbT-Mov{BUv6p^0K@{W{&J2Q8QtphuZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC; z=Hxh;0Wm7e4u6-e&C6^`rMq#FWU0_k$M4E8Uzr?R^kIBA?-gdi2kXtO}U+qP%0A)#;*P#E@^a)Y90vv8yol7H6XEybhE5J&p^Ryw_jQ#o?2vMs_ ndqW1e%ld;x000000N^e^RrxeSa9%ivdllKnc}rw1*V6`)CUpZA=zR}CJ!19(TB{W|qKV|tg<45-I@ zJ<|Ks8%+Ys84%qPbb7>sUjas`55w$-V*y5~H(GXTPQL*$*!INWXW4?^4Coge)7AfA zHUokSF$J_DBz#6Q4gi1`)7`X-i}dPbKff%V+`LdW3{ofhK9YHCUImEXaX!i+*{$>u zZr}5X@%DexrdIfx&Haogo#E3jKK0vvyiaC;=Hxh;0Wm7e4wtRX%WO)eyK#|ZsnAcy z@5(S=nH*d6VSG356=uK(>(i@vKVZ^uPAMHrWq-oxj{pDw07JL#8rhO=rd$A(3$fB6 z8C_(}|1)6aQPHLeBhvU%aoMz)H$>+j$+m_ { test.concurrent.each(models)("get public key with confirmation - approve ($dev.name)", async ({ dev, startText }) => { const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-public-key-approve`; try { const confirmText = dev.name.startsWith("nano") ? "Approve" : "Confirm"; await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.ApproveTapButton }); @@ -58,7 +59,7 @@ describe("get public key", () => { const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"); const events = await sim.getEvents(); await sim.waitForScreenChanges(events); - await sim.navigateAndCompareUntilText(".", `${dev.prefix.toLowerCase()}-public-key-approve`, confirmText, true); + await sim.navigateAndCompareUntilText(".", testCaseName, confirmText, true); const pk = StrKey.encodeEd25519PublicKey((await result).rawPublicKey); expect(pk).toEqual(kp.publicKey()); } finally { @@ -68,6 +69,7 @@ describe("get public key", () => { test.concurrent.each(models)("get public key with confirmation - reject ($dev.name)", async ({ dev, startText }) => { const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-public-key-reject`; try { const confirmText = dev.name.startsWith("nano") ? "Reject" : "Confirm"; await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); @@ -78,7 +80,7 @@ describe("get public key", () => { const events = await sim.getEvents(); await sim.waitForScreenChanges(events); - await sim.navigateAndCompareUntilText(".", `${dev.prefix.toLowerCase()}-public-key-reject`, confirmText, true); + await sim.navigateAndCompareUntilText(".", testCaseName, confirmText, true); } finally { await sim.close(); } @@ -102,28 +104,25 @@ describe("hash signing", () => { // TODO: skip for now, see https://github.com/LedgerHQ/ledger-secure-sdk/issues/737 test.concurrent.each(models.filter(({ dev }) => dev.name !== "flex" && dev.name !== "stax"))("approve ($dev.name)", async ({ dev, startText }) => { const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-hash-signing-approve`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); const str = new Str(transport); // enable hash signing - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-hash-signing-approve`, false, true, false); + await enableSettings(sim, dev.name, testCaseName, false, true, false); const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex"); const result = str.signHash("44'/148'/0'", hash); const events = await sim.getEvents(); await sim.waitForScreenChanges(events); // accept risk - if (dev.name == "stax" || dev.name == "flex") { - const acceptRisk = new TouchNavigation(dev.name, [ - ButtonKind.ConfirmNoButton, - ButtonKind.ConfirmYesButton, - ]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-hash-signing-approve`, acceptRisk.schedule, true); - } + await acceptRisk(sim, dev.name, testCaseName); + await sim.deleteEvents(); + const textToFind = dev.name.startsWith("nano") ? "Sign Hash" : "Hold to"; - await sim.navigateAndCompareUntilText(".", `${dev.prefix.toLowerCase()}-hash-signing-approve`, textToFind, true); + await sim.navigateAndCompareUntilText(".", testCaseName, textToFind, true); const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"); expect((await result).signature).toStrictEqual(kp.sign(hash)); } finally { @@ -134,13 +133,14 @@ describe("hash signing", () => { // TODO: skip for now, see https://github.com/LedgerHQ/ledger-secure-sdk/issues/737 test.concurrent.each(models.filter(({ dev }) => dev.name !== "flex" && dev.name !== "stax"))("reject ($dev.name)", async ({ dev, startText }) => { const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-hash-signing-reject`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); const transport = await sim.getTransport(); const str = new Str(transport); // enable hash signing - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-hash-signing-reject`, false, true, false); + await enableSettings(sim, dev.name, testCaseName, false, true, false); const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex"); expect(() => str.signHash("44'/148'/0'", hash)).rejects.toThrow(StellarUserRefusedError); @@ -149,24 +149,40 @@ describe("hash signing", () => { await sim.waitForScreenChanges(events); // accept risk - if (dev.name == "stax" || dev.name == "flex") { - const acceptRisk = new TouchNavigation(dev.name, [ - ButtonKind.ConfirmNoButton, - ButtonKind.ConfirmYesButton, - ]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-hash-signing-reject`, acceptRisk.schedule, true); - } - + await acceptRisk(sim, dev.name, testCaseName); + await sim.deleteEvents(); const textToFind = dev.name.startsWith("nano") ? "Reject" : "Hold to"; - await sim.navigateAndCompareUntilText(".", `${dev.prefix.toLowerCase()}-hash-signing-reject`, textToFind, true); + await sim.navigateAndCompareUntilText(".", testCaseName, textToFind, true); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-hash-signing-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); } }); + + test.concurrent.each(models)("refuse risk ($dev.name)", async ({ dev, startText }) => { + const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-hash-signing-refuse-risk`; + try { + await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // enable hash signing + await enableSettings(sim, dev.name, testCaseName, false, true, false); + + const hash = Buffer.from("3389e9f0f1a65f19736cacf544c2e825313e8447f569233bb8db39aa607c8889", "hex"); + expect(() => str.signHash("44'/148'/0'", hash)).rejects.toThrow(StellarUserRefusedError); + + const events = await sim.getEvents(); + await sim.waitForScreenChanges(events); + await refuseRisk(sim, dev.name, testCaseName); + } finally { + await sim.close(); + } + }); }); describe("transactions", () => { @@ -174,6 +190,7 @@ describe("transactions", () => { test.concurrent.each(models)("device ($dev.name)", async ({ dev, startText }) => { const tx = c.txFunction(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-${c.filePath}`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -194,26 +211,23 @@ describe("transactions", () => { "opInvokeHostFunctionWithoutArgs", "opInvokeHostFunctionWithoutAuthAndNoSource" ]; - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-${c.filePath}`, testsNeedEnableCustomContracts.includes(c.caseName), false, true); + await enableSettings(sim, dev.name, testCaseName, testsNeedEnableCustomContracts.includes(c.caseName), false, true); const result = str.signTransaction("44'/148'/0'", tx.signatureBase()); const events = await sim.getEvents(); await sim.waitForScreenChanges(events); // accept risk - if (testsNeedEnableCustomContracts.includes(c.caseName) && (dev.name == "stax" || dev.name == "flex")) { - const acceptRisk = new TouchNavigation(dev.name, [ - ButtonKind.ConfirmNoButton, - ButtonKind.ConfirmYesButton, - ]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-${c.filePath}`, acceptRisk.schedule, true); + if (testsNeedEnableCustomContracts.includes(c.caseName)) { + await acceptRisk(sim, dev.name, testCaseName); + await sim.deleteEvents(); } // TODO: If set to Sign, it will not pass the test. Is this a bug in Zemu? const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-${c.filePath}`, + testCaseName, textToFind, true, undefined, @@ -231,13 +245,14 @@ describe("transactions", () => { test.concurrent.each(models)("reject tx ($dev.name)", async ({ dev, startText }) => { const tx = testCasesFunction.txNetworkPublic(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-tx-reject`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); const transport = await sim.getTransport(); const str = new Str(transport); // enable custom contracts and seqence number - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-tx-reject`, false, false, true); + await enableSettings(sim, dev.name, testCaseName, false, false, true); expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(StellarUserRefusedError); @@ -246,7 +261,7 @@ describe("transactions", () => { const textToFind = dev.name.startsWith("nano") ? "Reject" : "Sign transaction?"; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-tx-reject`, + testCaseName, textToFind, true, undefined, @@ -254,7 +269,7 @@ describe("transactions", () => { ); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-tx-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); @@ -264,13 +279,14 @@ describe("transactions", () => { test.concurrent.each(models)("reject fee bump tx ($dev.name)", async ({ dev, startText }) => { const tx = testCasesFunction.feeBumpTx(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-fee-bump-tx-reject`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); const transport = await sim.getTransport(); const str = new Str(transport); // enable custom contracts and seqence number - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-fee-bump-tx-reject`, false, false, true); + await enableSettings(sim, dev.name, testCaseName, false, false, true); expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(StellarUserRefusedError); @@ -279,7 +295,7 @@ describe("transactions", () => { const textToFind = dev.name.startsWith("nano") ? "Reject" : "Sign transaction?"; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-fee-bump-tx-reject`, + testCaseName, textToFind, true, undefined, @@ -287,7 +303,7 @@ describe("transactions", () => { ); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-fee-bump-tx-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); @@ -297,6 +313,7 @@ describe("transactions", () => { test.concurrent.each(models)("hide sequence tx ($dev.name)", async ({ dev, startText }) => { const tx = testCasesFunction.txNetworkPublic(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-tx-hide-sequence`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -308,7 +325,7 @@ describe("transactions", () => { const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-tx-hide-sequence`, + testCaseName, textToFind, true, undefined, @@ -325,6 +342,7 @@ describe("transactions", () => { test.concurrent.each(models)("hide sequence fee bump tx ($dev.name)", async ({ dev, startText }) => { const tx = testCasesFunction.feeBumpTx(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-fee-bump-tx-hide-sequence`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -336,7 +354,7 @@ describe("transactions", () => { const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-fee-bump-tx-hide-sequence`, + testCaseName, textToFind, true, undefined, @@ -364,6 +382,24 @@ describe("transactions", () => { await sim.close(); } }); + + test.concurrent.each(models)("refuse risk ($dev.name)", async ({ dev, startText }) => { + const tx = testCasesFunction.opInvokeHostFunctionScvalsCase0(); + const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-tx-refuse-risk`; + try { + await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); + const transport = await sim.getTransport(); + const str = new Str(transport); + await enableSettings(sim, dev.name, testCaseName, true, false, false); + expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(StellarUserRefusedError); + const events = await sim.getEvents(); + await sim.waitForScreenChanges(events); + await refuseRisk(sim, dev.name, testCaseName); + } finally { + await sim.close(); + } + }); }); describe("soroban auth", () => { @@ -371,6 +407,7 @@ describe("soroban auth", () => { test.concurrent.each(models)("device ($dev.name)", async ({ dev, startText }) => { const hashIdPreimage = c.txFunction(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-${c.filePath}`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -385,22 +422,19 @@ describe("soroban auth", () => { "sorobanAuthTestnet", "sorobanAuthUnknownNetwork" ]; - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-${c.filePath}`, testsNeedEnableCustomContracts.includes(c.caseName), false, false); + await enableSettings(sim, dev.name, testCaseName, testsNeedEnableCustomContracts.includes(c.caseName), false, false); const result = str.signSorobanAuthorization("44'/148'/0'", hashIdPreimage.toXDR("raw")); const events = await sim.getEvents(); await sim.waitForScreenChanges(events); - if (testsNeedEnableCustomContracts.includes(c.caseName) && (dev.name == "stax" || dev.name == "flex")) { - const acceptRisk = new TouchNavigation(dev.name, [ - ButtonKind.ConfirmNoButton, - ButtonKind.ConfirmYesButton, - ]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-${c.filePath}`, acceptRisk.schedule, true); + if (testsNeedEnableCustomContracts.includes(c.caseName)) { + await acceptRisk(sim, dev.name, testCaseName); + await sim.deleteEvents(); } const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-${c.filePath}`, + testCaseName, textToFind, true, undefined, @@ -418,30 +452,26 @@ describe("soroban auth", () => { test.concurrent.each(models)("reject soroban auth ($dev.name)", async ({ dev, startText }) => { const hashIdPreimage = testCasesFunction.sorobanAuthInvokeContract(); const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-soroban-auth-reject`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); const transport = await sim.getTransport(); const str = new Str(transport); // enable custom contracts - await enableSettings(sim, dev.name, `${dev.prefix.toLowerCase()}-soroban-auth-reject`, true, false, false); + await enableSettings(sim, dev.name, testCaseName, true, false, false); expect(() => str.signSorobanAuthorization("44'/148'/0'", hashIdPreimage.toXDR("raw"))).rejects.toThrow(StellarUserRefusedError); const events = await sim.getEvents(); await sim.waitForScreenChanges(events); - if (dev.name == "stax" || dev.name == "flex") { - const acceptRisk = new TouchNavigation(dev.name, [ - ButtonKind.ConfirmNoButton, - ButtonKind.ConfirmYesButton, - ]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-soroban-auth-reject`, acceptRisk.schedule, true); - } + await acceptRisk(sim, dev.name, testCaseName); + await sim.deleteEvents(); const textToFind = dev.name.startsWith("nano") ? "Reject" : "Sign Soroban Auth?"; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-soroban-auth-reject`, + testCaseName, textToFind, true, undefined, @@ -449,7 +479,7 @@ describe("soroban auth", () => { ); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-soroban-auth-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); @@ -469,6 +499,27 @@ describe("soroban auth", () => { await sim.close(); } }); + + test.concurrent.each(models)("refuse risk ($dev.name)", async ({ dev, startText }) => { + const hashIdPreimage = testCasesFunction.sorobanAuthInvokeContract(); + const sim = new Zemu(dev.path); + const testCaseName = `${dev.prefix.toLowerCase()}-soroban-auth-refuse-risk`; + try { + await sim.start({ ...defaultOptions, model: dev.name, startText: startText, approveAction: ButtonKind.RejectButton }); + const transport = await sim.getTransport(); + const str = new Str(transport); + + // enable custom contracts + await enableSettings(sim, dev.name, testCaseName, true, false, false); + + expect(() => str.signSorobanAuthorization("44'/148'/0'", hashIdPreimage.toXDR("raw"))).rejects.toThrow(StellarUserRefusedError); + const events = await sim.getEvents(); + await sim.waitForScreenChanges(events); + await refuseRisk(sim, dev.name, testCaseName); + } finally { + await sim.close(); + } + }); }); describe("plugin", () => { @@ -477,6 +528,7 @@ describe("plugin", () => { const sim = new Zemu(dev.path, { "StellarTest": plugin_path }); + const testCaseName = `${dev.prefix.toLowerCase()}-plugin-invoke-host-function`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -487,7 +539,7 @@ describe("plugin", () => { const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-plugin-invoke-host-function`, + testCaseName, textToFind, true, undefined, @@ -503,6 +555,7 @@ describe("plugin", () => { test.concurrent.each(models)("reject tx ($dev.name)", async ({ dev, startText, plugin_path }) => { const tx = testCasesFunction.opInvokeHostFunctionTestPlugin(); + const testCaseName = `${dev.prefix.toLowerCase()}-plugin-invoke-host-function-reject`; const sim = new Zemu(dev.path, { "StellarTest": plugin_path }); @@ -516,7 +569,7 @@ describe("plugin", () => { const textToFind = dev.name.startsWith("nano") ? "Reject" : "Sign transaction?"; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-plugin-invoke-host-function-reject`, + testCaseName, textToFind, true, undefined, @@ -524,7 +577,7 @@ describe("plugin", () => { ); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-plugin-invoke-host-function-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); @@ -537,6 +590,7 @@ describe("plugin", () => { const sim = new Zemu(dev.path, { "StellarTest": plugin_path }); + const testCaseName = `${dev.prefix.toLowerCase()}-plugin-soroban-auth`; try { await sim.start({ ...defaultOptions, model: dev.name, startText: startText }); const transport = await sim.getTransport(); @@ -547,7 +601,7 @@ describe("plugin", () => { const textToFind = dev.name.startsWith("nano") ? /\bSign\b/ : /\bHold to\b/; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-plugin-soroban-auth`, + testCaseName, textToFind, true, undefined, @@ -564,6 +618,7 @@ describe("plugin", () => { test.concurrent.each(models)("reject soroban auth ($dev.name)", async ({ dev, startText, plugin_path }) => { const hashIdPreimage = testCasesFunction.sorobanAuthInvokeContractTestPlugin(); + const testCaseName = `${dev.prefix.toLowerCase()}-plugin-soroban-auth-reject`; const sim = new Zemu(dev.path, { "StellarTest": plugin_path }); @@ -578,7 +633,7 @@ describe("plugin", () => { const textToFind = dev.name.startsWith("nano") ? "Reject" : "Sign Soroban Auth?"; await sim.navigateAndCompareUntilText( ".", - `${dev.prefix.toLowerCase()}-plugin-soroban-auth-reject`, + testCaseName, textToFind, true, undefined, @@ -586,7 +641,7 @@ describe("plugin", () => { ); if (dev.name == "stax" || dev.name == "flex") { const settingNav = new TouchNavigation(dev.name, [ButtonKind.ApproveTapButton]); - await sim.navigate(".", `${dev.prefix.toLowerCase()}-plugin-soroban-auth-reject`, settingNav.schedule, true); + await sim.navigate(".", testCaseName, settingNav.schedule, true); } } finally { await sim.close(); @@ -652,7 +707,7 @@ async function enableSettings(sim: Zemu, device: TModel, testCaseName: string, e if (enableSequence) { settingNav.push(StaxSettingToggleSequence); } - await sim.navigate(".", testCaseName, settingNav, true); + await sim.navigate(".", testCaseName, settingNav, true, false); } else if (device == "flex") { const settingNav = [ ...new TouchNavigation("flex", [ButtonKind.InfoButton]).schedule, @@ -670,7 +725,7 @@ async function enableSettings(sim: Zemu, device: TModel, testCaseName: string, e settingNav.push(...new TouchNavigation("flex", [ButtonKind.SettingsNavRightButton]).schedule); settingNav.push(FlexSettingToggleSequence); } - await sim.navigate(".", testCaseName, settingNav, true); + await sim.navigate(".", testCaseName, settingNav, true, false); } else { // enter settings page await sim.clickRight(undefined, true); @@ -689,6 +744,48 @@ async function enableSettings(sim: Zemu, device: TModel, testCaseName: string, e } } +async function acceptRisk(sim: Zemu, device: TModel, testCaseName: string) { + if (device == "stax" || device == "flex") { + const acceptRisk = new TouchNavigation(device, [ + ButtonKind.ConfirmNoButton, + ButtonKind.ConfirmYesButton, + ]); + await sim.navigate(".", testCaseName, acceptRisk.schedule, true); + } else if (device == "nanos") { + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickBoth(undefined, true); + } else { + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickBoth(undefined, true); + } +} + +async function refuseRisk(sim: Zemu, device: TModel, testCaseName: string) { + if (device == "stax" || device == "flex") { + const acceptRisk = new TouchNavigation(device, [ + ButtonKind.ConfirmNoButton, + ButtonKind.ConfirmNoButton, + ]); + await sim.navigate(".", testCaseName, acceptRisk.schedule, true, false); + } else if (device == "nanos") { + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickBoth(undefined, true); + } else { + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickRight(undefined, true); + await sim.clickBoth(undefined, true); + } +} + const StaxSettingToggleCustomContracts: INavElement = { type: ActionKind.Touch, button: {