From a108901cb34aa58dddea663192e3ae13439720bf Mon Sep 17 00:00:00 2001 From: neithanmo Date: Thu, 10 Oct 2024 05:20:16 -0600 Subject: [PATCH] Some improvements to avoid panicking and enhance remainder handling in case of multisig transactions More improvements in project structure Ensure to parse all contract arguments avoiding potential errors during transaction review Increase recursion limit to 8 nested clarity values, this does not hit any limits regarding nanos2 add snapshots feat/ add debug implementation Restructure the post-conditions into its own folder and module Update zxformat to use ledger-zxlib when compiling to ledger targets Add test to parsed transaction containing post-conditions Bump app version Update zxlib dependency Update snapshots --- app/Makefile.version | 2 +- app/rust/Cargo.lock | 24 + app/rust/Cargo.toml | 3 + app/rust/src/parser/ffi.rs | 3 + app/rust/src/parser/message.rs | 14 +- app/rust/src/parser/mod.rs | 6 +- app/rust/src/parser/parsed_obj.rs | 53 ++ app/rust/src/parser/parser_common.rs | 5 +- .../{post_condition.rs => post_conditions.rs} | 207 +----- .../src/parser/post_conditions/fungible.rs | 33 + .../parser/post_conditions/non_fungible.rs | 24 + .../post_condition_principal.rs | 121 ++++ app/rust/src/parser/spending_condition.rs | 5 +- app/rust/src/parser/structured_msg.rs | 5 +- app/rust/src/parser/transaction.rs | 305 +++------ app/rust/src/parser/transaction_payload.rs | 620 +----------------- .../parser/transaction_payload/arguments.rs | 75 +++ .../transaction_payload/contract_call.rs | 302 +++++++++ .../transaction_payload/smart_contract.rs | 74 +++ .../transaction_payload/token_transfer.rs | 139 ++++ .../transaction_payload/versioned_contract.rs | 82 +++ app/rust/src/parser/tx_post_conditions.rs | 169 +++++ app/rust/src/zxformat.rs | 180 ++--- deps/ledger-zxlib | 2 +- .../fl-call_with_string_args/00002.png | Bin 14367 -> 14367 bytes .../fl-call_with_string_args/00003.png | Bin 16530 -> 16530 bytes .../fl-contract_call_long_args/00000.png | Bin 0 -> 8851 bytes .../fl-contract_call_long_args/00001.png | Bin 0 -> 16197 bytes .../fl-contract_call_long_args/00002.png | Bin 0 -> 16903 bytes .../fl-contract_call_long_args/00003.png | Bin 0 -> 17845 bytes .../fl-contract_call_long_args/00004.png | Bin 0 -> 19828 bytes .../fl-contract_call_long_args/00005.png | Bin 0 -> 6681 bytes .../fl-contract_call_long_args/00006.png | Bin 0 -> 9530 bytes .../fl-contract_call_long_args/00007.png | Bin 0 -> 12845 bytes tests_zemu/snapshots/fl-mainmenu/00001.png | Bin 5946 -> 5946 bytes tests_zemu/snapshots/fl-mainmenu/00002.png | Bin 5839 -> 5839 bytes tests_zemu/snapshots/fl-mainmenu/00003.png | Bin 5946 -> 5946 bytes tests_zemu/snapshots/fl-mainmenu/00004.png | Bin 9265 -> 9428 bytes .../snapshots/fl-multisigTest/00000.png | Bin 8893 -> 8892 bytes .../snapshots/fl-multisigTest/00001.png | Bin 15795 -> 15792 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 15795 -> 15792 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 10708 -> 10705 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 10708 -> 10705 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 10708 -> 10705 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 10708 -> 10705 bytes .../00000.png | Bin 8893 -> 8892 bytes .../00001.png | Bin 10708 -> 10705 bytes .../fl-sign-structured_data_string/00000.png | Bin 8893 -> 8892 bytes .../fl-sign-structured_data_string/00001.png | Bin 10708 -> 10705 bytes .../fl-sign-structured_data_tuple/00000.png | Bin 8893 -> 8892 bytes .../fl-sign-structured_data_tuple/00001.png | Bin 10708 -> 10705 bytes tests_zemu/snapshots/fl-sign/00000.png | Bin 8893 -> 8892 bytes tests_zemu/snapshots/fl-sign/00001.png | Bin 16679 -> 16676 bytes tests_zemu/snapshots/fl-sign_jwt/00000.png | Bin 8985 -> 8985 bytes tests_zemu/snapshots/fl-sign_jwt/00001.png | Bin 15585 -> 15583 bytes .../snapshots/fl-sign_message/00000.png | Bin 8893 -> 8892 bytes .../snapshots/fl-sign_message/00001.png | Bin 26846 -> 26843 bytes .../00002.png | Bin 16632 -> 16632 bytes .../00003.png | Bin 14820 -> 14819 bytes .../fl-swap_with_post_conditions/00000.png | Bin 0 -> 8955 bytes .../fl-swap_with_post_conditions/00001.png | Bin 0 -> 16354 bytes .../fl-swap_with_post_conditions/00002.png | Bin 0 -> 17038 bytes .../fl-swap_with_post_conditions/00003.png | Bin 0 -> 18002 bytes .../fl-swap_with_post_conditions/00004.png | Bin 0 -> 19950 bytes .../fl-swap_with_post_conditions/00005.png | Bin 0 -> 18278 bytes .../fl-swap_with_post_conditions/00006.png | Bin 0 -> 18516 bytes .../fl-swap_with_post_conditions/00007.png | Bin 0 -> 18645 bytes .../fl-swap_with_post_conditions/00008.png | Bin 0 -> 7253 bytes .../fl-swap_with_post_conditions/00009.png | Bin 0 -> 9690 bytes .../fl-swap_with_post_conditions/00010.png | Bin 0 -> 12845 bytes .../s-contract_call_long_args/00000.png | Bin 0 -> 597 bytes .../s-contract_call_long_args/00001.png | Bin 0 -> 412 bytes .../s-contract_call_long_args/00002.png | Bin 0 -> 246 bytes .../s-contract_call_long_args/00003.png | Bin 0 -> 309 bytes .../s-contract_call_long_args/00004.png | Bin 0 -> 461 bytes .../s-contract_call_long_args/00005.png | Bin 0 -> 429 bytes .../s-contract_call_long_args/00006.png | Bin 0 -> 368 bytes .../s-contract_call_long_args/00007.png | Bin 0 -> 279 bytes .../s-contract_call_long_args/00008.png | Bin 0 -> 695 bytes .../s-contract_call_long_args/00009.png | Bin 0 -> 385 bytes .../s-contract_call_long_args/00010.png | Bin 0 -> 258 bytes .../s-contract_call_long_args/00011.png | Bin 0 -> 373 bytes .../s-contract_call_long_args/00012.png | Bin 0 -> 707 bytes .../s-contract_call_long_args/00013.png | Bin 0 -> 545 bytes .../s-contract_call_long_args/00014.png | Bin 0 -> 280 bytes .../s-contract_call_long_args/00015.png | Bin 0 -> 332 bytes .../s-contract_call_long_args/00016.png | Bin 0 -> 335 bytes .../s-contract_call_long_args/00017.png | Bin 0 -> 249 bytes .../s-contract_call_long_args/00018.png | Bin 0 -> 452 bytes tests_zemu/snapshots/s-mainmenu/00004.png | Bin 455 -> 457 bytes tests_zemu/snapshots/s-mainmenu/00010.png | Bin 455 -> 457 bytes .../s-swap_with_post_conditions/00000.png | Bin 0 -> 597 bytes .../s-swap_with_post_conditions/00001.png | Bin 0 -> 412 bytes .../s-swap_with_post_conditions/00002.png | Bin 0 -> 246 bytes .../s-swap_with_post_conditions/00003.png | Bin 0 -> 309 bytes .../s-swap_with_post_conditions/00004.png | Bin 0 -> 461 bytes .../s-swap_with_post_conditions/00005.png | Bin 0 -> 429 bytes .../s-swap_with_post_conditions/00006.png | Bin 0 -> 368 bytes .../s-swap_with_post_conditions/00007.png | Bin 0 -> 279 bytes .../s-swap_with_post_conditions/00008.png | Bin 0 -> 695 bytes .../s-swap_with_post_conditions/00009.png | Bin 0 -> 385 bytes .../s-swap_with_post_conditions/00010.png | Bin 0 -> 258 bytes .../s-swap_with_post_conditions/00011.png | Bin 0 -> 373 bytes .../s-swap_with_post_conditions/00012.png | Bin 0 -> 707 bytes .../s-swap_with_post_conditions/00013.png | Bin 0 -> 545 bytes .../s-swap_with_post_conditions/00014.png | Bin 0 -> 280 bytes .../s-swap_with_post_conditions/00015.png | Bin 0 -> 332 bytes .../s-swap_with_post_conditions/00016.png | Bin 0 -> 335 bytes .../s-swap_with_post_conditions/00017.png | Bin 0 -> 705 bytes .../s-swap_with_post_conditions/00018.png | Bin 0 -> 396 bytes .../s-swap_with_post_conditions/00019.png | Bin 0 -> 372 bytes .../s-swap_with_post_conditions/00020.png | Bin 0 -> 302 bytes .../s-swap_with_post_conditions/00021.png | Bin 0 -> 705 bytes .../s-swap_with_post_conditions/00022.png | Bin 0 -> 396 bytes .../s-swap_with_post_conditions/00023.png | Bin 0 -> 372 bytes .../s-swap_with_post_conditions/00024.png | Bin 0 -> 302 bytes .../s-swap_with_post_conditions/00025.png | Bin 0 -> 705 bytes .../s-swap_with_post_conditions/00026.png | Bin 0 -> 396 bytes .../s-swap_with_post_conditions/00027.png | Bin 0 -> 372 bytes .../s-swap_with_post_conditions/00028.png | Bin 0 -> 341 bytes .../s-swap_with_post_conditions/00029.png | Bin 0 -> 249 bytes .../s-swap_with_post_conditions/00030.png | Bin 0 -> 452 bytes .../sp-contract_call_long_args/00000.png | Bin 0 -> 486 bytes .../sp-contract_call_long_args/00001.png | Bin 0 -> 748 bytes .../sp-contract_call_long_args/00002.png | Bin 0 -> 289 bytes .../sp-contract_call_long_args/00003.png | Bin 0 -> 357 bytes .../sp-contract_call_long_args/00004.png | Bin 0 -> 539 bytes .../sp-contract_call_long_args/00005.png | Bin 0 -> 504 bytes .../sp-contract_call_long_args/00006.png | Bin 0 -> 436 bytes .../sp-contract_call_long_args/00007.png | Bin 0 -> 323 bytes .../sp-contract_call_long_args/00008.png | Bin 0 -> 822 bytes .../sp-contract_call_long_args/00009.png | Bin 0 -> 312 bytes .../sp-contract_call_long_args/00010.png | Bin 0 -> 438 bytes .../sp-contract_call_long_args/00011.png | Bin 0 -> 921 bytes .../sp-contract_call_long_args/00012.png | Bin 0 -> 461 bytes .../sp-contract_call_long_args/00013.png | Bin 0 -> 319 bytes .../sp-contract_call_long_args/00014.png | Bin 0 -> 379 bytes .../sp-contract_call_long_args/00015.png | Bin 0 -> 378 bytes .../sp-contract_call_long_args/00016.png | Bin 0 -> 355 bytes .../sp-contract_call_long_args/00017.png | Bin 0 -> 511 bytes tests_zemu/snapshots/sp-mainmenu/00004.png | Bin 380 -> 389 bytes tests_zemu/snapshots/sp-mainmenu/00010.png | Bin 380 -> 389 bytes .../sp-swap_with_post_conditions/00000.png | Bin 0 -> 486 bytes .../sp-swap_with_post_conditions/00001.png | Bin 0 -> 748 bytes .../sp-swap_with_post_conditions/00002.png | Bin 0 -> 289 bytes .../sp-swap_with_post_conditions/00003.png | Bin 0 -> 357 bytes .../sp-swap_with_post_conditions/00004.png | Bin 0 -> 539 bytes .../sp-swap_with_post_conditions/00005.png | Bin 0 -> 504 bytes .../sp-swap_with_post_conditions/00006.png | Bin 0 -> 436 bytes .../sp-swap_with_post_conditions/00007.png | Bin 0 -> 323 bytes .../sp-swap_with_post_conditions/00008.png | Bin 0 -> 822 bytes .../sp-swap_with_post_conditions/00009.png | Bin 0 -> 312 bytes .../sp-swap_with_post_conditions/00010.png | Bin 0 -> 438 bytes .../sp-swap_with_post_conditions/00011.png | Bin 0 -> 921 bytes .../sp-swap_with_post_conditions/00012.png | Bin 0 -> 461 bytes .../sp-swap_with_post_conditions/00013.png | Bin 0 -> 319 bytes .../sp-swap_with_post_conditions/00014.png | Bin 0 -> 379 bytes .../sp-swap_with_post_conditions/00015.png | Bin 0 -> 378 bytes .../sp-swap_with_post_conditions/00016.png | Bin 0 -> 846 bytes .../sp-swap_with_post_conditions/00017.png | Bin 0 -> 421 bytes .../sp-swap_with_post_conditions/00018.png | Bin 0 -> 354 bytes .../sp-swap_with_post_conditions/00019.png | Bin 0 -> 846 bytes .../sp-swap_with_post_conditions/00020.png | Bin 0 -> 421 bytes .../sp-swap_with_post_conditions/00021.png | Bin 0 -> 354 bytes .../sp-swap_with_post_conditions/00022.png | Bin 0 -> 846 bytes .../sp-swap_with_post_conditions/00023.png | Bin 0 -> 421 bytes .../sp-swap_with_post_conditions/00024.png | Bin 0 -> 398 bytes .../sp-swap_with_post_conditions/00025.png | Bin 0 -> 355 bytes .../sp-swap_with_post_conditions/00026.png | Bin 0 -> 511 bytes .../st-contract_call_long_args/00000.png | Bin 0 -> 8413 bytes .../st-contract_call_long_args/00001.png | Bin 0 -> 19067 bytes .../st-contract_call_long_args/00002.png | Bin 0 -> 19917 bytes .../st-contract_call_long_args/00003.png | Bin 0 -> 20213 bytes .../st-contract_call_long_args/00004.png | Bin 0 -> 6377 bytes .../st-contract_call_long_args/00005.png | Bin 0 -> 8989 bytes .../st-contract_call_long_args/00006.png | Bin 0 -> 11174 bytes tests_zemu/snapshots/st-mainmenu/00001.png | Bin 5733 -> 5733 bytes tests_zemu/snapshots/st-mainmenu/00002.png | Bin 5565 -> 5565 bytes tests_zemu/snapshots/st-mainmenu/00003.png | Bin 5733 -> 5733 bytes tests_zemu/snapshots/st-mainmenu/00004.png | Bin 11074 -> 11194 bytes .../snapshots/st-show_address/00001.png | Bin 14247 -> 14247 bytes .../st-swap_with_post_conditions/00000.png | Bin 0 -> 8468 bytes .../st-swap_with_post_conditions/00001.png | Bin 0 -> 19099 bytes .../st-swap_with_post_conditions/00002.png | Bin 0 -> 19918 bytes .../st-swap_with_post_conditions/00003.png | Bin 0 -> 20225 bytes .../st-swap_with_post_conditions/00004.png | Bin 0 -> 18172 bytes .../st-swap_with_post_conditions/00005.png | Bin 0 -> 24160 bytes .../st-swap_with_post_conditions/00006.png | Bin 0 -> 9142 bytes .../st-swap_with_post_conditions/00007.png | Bin 0 -> 8999 bytes .../st-swap_with_post_conditions/00008.png | Bin 0 -> 11174 bytes .../x-contract_call_long_args/00000.png | Bin 0 -> 486 bytes .../x-contract_call_long_args/00001.png | Bin 0 -> 748 bytes .../x-contract_call_long_args/00002.png | Bin 0 -> 289 bytes .../x-contract_call_long_args/00003.png | Bin 0 -> 357 bytes .../x-contract_call_long_args/00004.png | Bin 0 -> 539 bytes .../x-contract_call_long_args/00005.png | Bin 0 -> 504 bytes .../x-contract_call_long_args/00006.png | Bin 0 -> 436 bytes .../x-contract_call_long_args/00007.png | Bin 0 -> 323 bytes .../x-contract_call_long_args/00008.png | Bin 0 -> 822 bytes .../x-contract_call_long_args/00009.png | Bin 0 -> 312 bytes .../x-contract_call_long_args/00010.png | Bin 0 -> 438 bytes .../x-contract_call_long_args/00011.png | Bin 0 -> 921 bytes .../x-contract_call_long_args/00012.png | Bin 0 -> 461 bytes .../x-contract_call_long_args/00013.png | Bin 0 -> 319 bytes .../x-contract_call_long_args/00014.png | Bin 0 -> 379 bytes .../x-contract_call_long_args/00015.png | Bin 0 -> 378 bytes .../x-contract_call_long_args/00016.png | Bin 0 -> 355 bytes .../x-contract_call_long_args/00017.png | Bin 0 -> 511 bytes tests_zemu/snapshots/x-mainmenu/00004.png | Bin 380 -> 389 bytes tests_zemu/snapshots/x-mainmenu/00010.png | Bin 380 -> 389 bytes .../x-swap_with_post_conditions/00000.png | Bin 0 -> 486 bytes .../x-swap_with_post_conditions/00001.png | Bin 0 -> 748 bytes .../x-swap_with_post_conditions/00002.png | Bin 0 -> 289 bytes .../x-swap_with_post_conditions/00003.png | Bin 0 -> 357 bytes .../x-swap_with_post_conditions/00004.png | Bin 0 -> 539 bytes .../x-swap_with_post_conditions/00005.png | Bin 0 -> 504 bytes .../x-swap_with_post_conditions/00006.png | Bin 0 -> 436 bytes .../x-swap_with_post_conditions/00007.png | Bin 0 -> 323 bytes .../x-swap_with_post_conditions/00008.png | Bin 0 -> 822 bytes .../x-swap_with_post_conditions/00009.png | Bin 0 -> 312 bytes .../x-swap_with_post_conditions/00010.png | Bin 0 -> 438 bytes .../x-swap_with_post_conditions/00011.png | Bin 0 -> 921 bytes .../x-swap_with_post_conditions/00012.png | Bin 0 -> 461 bytes .../x-swap_with_post_conditions/00013.png | Bin 0 -> 319 bytes .../x-swap_with_post_conditions/00014.png | Bin 0 -> 379 bytes .../x-swap_with_post_conditions/00015.png | Bin 0 -> 378 bytes .../x-swap_with_post_conditions/00016.png | Bin 0 -> 846 bytes .../x-swap_with_post_conditions/00017.png | Bin 0 -> 421 bytes .../x-swap_with_post_conditions/00018.png | Bin 0 -> 354 bytes .../x-swap_with_post_conditions/00019.png | Bin 0 -> 846 bytes .../x-swap_with_post_conditions/00020.png | Bin 0 -> 421 bytes .../x-swap_with_post_conditions/00021.png | Bin 0 -> 354 bytes .../x-swap_with_post_conditions/00022.png | Bin 0 -> 846 bytes .../x-swap_with_post_conditions/00023.png | Bin 0 -> 421 bytes .../x-swap_with_post_conditions/00024.png | Bin 0 -> 398 bytes .../x-swap_with_post_conditions/00025.png | Bin 0 -> 355 bytes .../x-swap_with_post_conditions/00026.png | Bin 0 -> 511 bytes tests_zemu/tests/standard.test.ts | 243 ++++++- 243 files changed, 1576 insertions(+), 1120 deletions(-) rename app/rust/src/parser/{post_condition.rs => post_conditions.rs} (74%) create mode 100644 app/rust/src/parser/post_conditions/fungible.rs create mode 100644 app/rust/src/parser/post_conditions/non_fungible.rs create mode 100644 app/rust/src/parser/post_conditions/post_condition_principal.rs create mode 100644 app/rust/src/parser/transaction_payload/arguments.rs create mode 100644 app/rust/src/parser/transaction_payload/contract_call.rs create mode 100644 app/rust/src/parser/transaction_payload/smart_contract.rs create mode 100644 app/rust/src/parser/transaction_payload/token_transfer.rs create mode 100644 app/rust/src/parser/transaction_payload/versioned_contract.rs create mode 100644 app/rust/src/parser/tx_post_conditions.rs create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00000.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00001.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00002.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00003.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00004.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00005.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00006.png create mode 100644 tests_zemu/snapshots/fl-contract_call_long_args/00007.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00000.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00001.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00002.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00003.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00004.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00005.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00006.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00007.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00008.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00009.png create mode 100644 tests_zemu/snapshots/fl-swap_with_post_conditions/00010.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00000.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00001.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00002.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00003.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00004.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00005.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00006.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00007.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00008.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00009.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00010.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00011.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00012.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00013.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00014.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00015.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00016.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00017.png create mode 100644 tests_zemu/snapshots/s-contract_call_long_args/00018.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00000.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00001.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00002.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00003.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00004.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00005.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00006.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00007.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00008.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00009.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00010.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00011.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00012.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00013.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00014.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00015.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00016.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00017.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00018.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00019.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00020.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00021.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00022.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00023.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00024.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00025.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00026.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00027.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00028.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00029.png create mode 100644 tests_zemu/snapshots/s-swap_with_post_conditions/00030.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00000.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00001.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00002.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00003.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00004.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00005.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00006.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00007.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00008.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00009.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00010.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00011.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00012.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00013.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00014.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00015.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00016.png create mode 100644 tests_zemu/snapshots/sp-contract_call_long_args/00017.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00000.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00001.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00002.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00003.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00004.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00005.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00006.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00007.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00008.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00009.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00010.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00011.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00012.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00013.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00014.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00015.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00016.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00017.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00018.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00019.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00020.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00021.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00022.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00023.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00024.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00025.png create mode 100644 tests_zemu/snapshots/sp-swap_with_post_conditions/00026.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00000.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00001.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00002.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00003.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00004.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00005.png create mode 100644 tests_zemu/snapshots/st-contract_call_long_args/00006.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00000.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00001.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00002.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00003.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00004.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00005.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00006.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00007.png create mode 100644 tests_zemu/snapshots/st-swap_with_post_conditions/00008.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00000.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00001.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00002.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00003.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00004.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00005.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00006.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00007.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00008.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00009.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00010.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00011.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00012.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00013.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00014.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00015.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00016.png create mode 100644 tests_zemu/snapshots/x-contract_call_long_args/00017.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00000.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00001.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00002.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00003.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00004.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00005.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00006.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00007.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00008.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00009.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00010.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00011.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00012.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00013.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00014.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00015.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00016.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00017.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00018.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00019.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00020.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00021.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00022.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00023.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00024.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00025.png create mode 100644 tests_zemu/snapshots/x-swap_with_post_conditions/00026.png diff --git a/app/Makefile.version b/app/Makefile.version index 5fbe479b..50b9605a 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -1,3 +1,3 @@ APPVERSION_M=0 APPVERSION_N=24 -APPVERSION_P=4 +APPVERSION_P=5 diff --git a/app/rust/Cargo.lock b/app/rust/Cargo.lock index 65f630f0..6087fe2e 100644 --- a/app/rust/Cargo.lock +++ b/app/rust/Cargo.lock @@ -71,6 +71,12 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "block-buffer" version = "0.9.0" @@ -194,12 +200,29 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lexical-core" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +dependencies = [ + "bitflags", + "cfg-if", + "libm", +] + [[package]] name = "libc" version = "0.2.124" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + [[package]] name = "lock_api" version = "0.4.7" @@ -329,6 +352,7 @@ dependencies = [ "arrayvec", "base64", "hex", + "lexical-core", "no-std-compat", "nom", "numtoa", diff --git a/app/rust/Cargo.toml b/app/rust/Cargo.toml index 21137082..1f0e96cf 100644 --- a/app/rust/Cargo.toml +++ b/app/rust/Cargo.toml @@ -23,6 +23,9 @@ hex = { version = "0.4", default-features = false } serde-json-core = { version = "0.4.0", default-features = false } serde = { version = "1.0", default-features = false, features = ["derive"] } nom = { version = "7.1.2", default-features = false } +lexical-core = { version = "0.7", features = [ + "libm", +], default-features = false } [dependencies.arrayvec] diff --git a/app/rust/src/parser/ffi.rs b/app/rust/src/parser/ffi.rs index d5cc62ca..2d17fd91 100644 --- a/app/rust/src/parser/ffi.rs +++ b/app/rust/src/parser/ffi.rs @@ -225,9 +225,12 @@ pub unsafe extern "C" fn _last_block_ptr( ) -> u16 { if let Some(tx) = parsed_obj_from_state(tx_t as _).and_then(|obj| obj.transaction()) { let block = tx.last_transaction_block(); + *block_ptr = block.as_ptr(); return block.len() as _; } + + *block_ptr = core::ptr::null_mut(); 0 } diff --git a/app/rust/src/parser/message.rs b/app/rust/src/parser/message.rs index 4790a89a..8ff822c6 100644 --- a/app/rust/src/parser/message.rs +++ b/app/rust/src/parser/message.rs @@ -12,6 +12,7 @@ const BYTE_STRING_HEADER_LEN: usize = "\x17Stacks Signed Message:\n".as_bytes(). const MAX_ASCII_LEN: usize = 270; #[repr(C)] +#[cfg_attr(test, derive(Debug))] pub struct Message<'a>(ByteString<'a>); impl<'a> Message<'a> { @@ -45,9 +46,20 @@ impl<'a> Message<'a> { } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Copy, Clone, PartialEq)] pub struct ByteString<'a>(&'a [u8]); +#[cfg(test)] +impl<'a> core::fmt::Debug for ByteString<'a> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!(f, "ByteString(\"")?; + for byte in self.0 { + write!(f, "{:02x}", byte)?; + } + write!(f, "\")") + } +} + impl<'a> ByteString<'a> { pub fn is_msg(data: &'a [u8]) -> bool { Self::contain_header(data) diff --git a/app/rust/src/parser/mod.rs b/app/rust/src/parser/mod.rs index 8531df4e..f3518d58 100644 --- a/app/rust/src/parser/mod.rs +++ b/app/rust/src/parser/mod.rs @@ -5,13 +5,14 @@ mod jwt; mod message; mod parsed_obj; mod parser_common; -mod post_condition; +mod post_conditions; mod principal; mod spending_condition; mod structured_msg; mod transaction; mod transaction_auth; mod transaction_payload; +mod tx_post_conditions; mod utils; mod value; pub use error::ParserError; @@ -20,10 +21,11 @@ pub use jwt::Jwt; pub use message::{ByteString, Message}; pub use parsed_obj::{ParsedObj, Tag}; pub use parser_common::*; -pub use post_condition::{FungibleConditionCode, TransactionPostCondition}; +pub use post_conditions::{FungibleConditionCode, TransactionPostCondition}; pub use principal::*; pub use structured_msg::{Domain, StructuredMsg}; pub use transaction::Transaction; pub use transaction_auth::TransactionAuth; +pub use tx_post_conditions::{PostConditions, TransactionPostConditionMode}; pub use utils::*; pub use value::{Int128, Tuple, UInt128, Value, ValueId}; diff --git a/app/rust/src/parser/parsed_obj.rs b/app/rust/src/parser/parsed_obj.rs index 2fa43f7f..34463a2b 100644 --- a/app/rust/src/parser/parsed_obj.rs +++ b/app/rust/src/parser/parsed_obj.rs @@ -1,5 +1,7 @@ #![allow(non_camel_case_types, non_snake_case, clippy::missing_safety_doc)] +use crate::bolos::c_zemu_log_stack; + use super::{error::ParserError, transaction::Transaction, Message}; use super::{Jwt, StructuredMsg}; @@ -56,6 +58,7 @@ impl<'a> ParsedObj<'a> { } pub fn read(&mut self, data: &'a [u8]) -> Result<(), ParserError> { + c_zemu_log_stack("ParsedObj::read\x00"); if data.is_empty() { return Err(ParserError::NoData); } @@ -65,15 +68,19 @@ impl<'a> ParsedObj<'a> { unsafe { if Message::is_message(data) { + c_zemu_log_stack("Tag::Msg\x00"); self.tag = Tag::Message; self.obj.read_msg(data) } else if Jwt::is_jwt(data) { + c_zemu_log_stack("Tag::Jwt\x00"); self.tag = Tag::Jwt; self.obj.read_jwt(data) } else if StructuredMsg::is_msg(data) { + c_zemu_log_stack("Tag::StructuredMsg\x00"); self.tag = Tag::StructuredMsg; self.obj.read_structured_msg(data) } else { + c_zemu_log_stack("Tag::Transaction\x00"); self.tag = Tag::Transaction; self.obj.read_tx(data) } @@ -99,6 +106,7 @@ impl<'a> ParsedObj<'a> { value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("ParsedObj::get_item\x00"); unsafe { match self.tag { Tag::Transaction => { @@ -259,6 +267,38 @@ impl<'a> Obj<'a> { } } +#[cfg(test)] +impl<'a> core::fmt::Debug for ParsedObj<'a> { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + let mut debug_struct = f.debug_struct("ParsedObj"); + debug_struct.field("tag", &self.tag); + + // Safety: We're matching on the tag to ensure we access the correct + // union variant. The union is guaranteed to be initialized with the + // correct variant and that variant won't change during the lifetime + // of the object. + match self.tag { + Tag::Transaction => unsafe { + debug_struct.field("obj", &self.obj.tx); + }, + Tag::Message => unsafe { + debug_struct.field("obj", &self.obj.msg); + }, + Tag::Jwt => unsafe { + debug_struct.field("obj", &self.obj.jwt); + }, + Tag::StructuredMsg => unsafe { + debug_struct.field("obj", &self.obj.structured_msg); + }, + Tag::Invalid => { + debug_struct.field("obj", &""); + } + } + + debug_struct.finish() + } +} + #[cfg(test)] mod test { use serde::{Deserialize, Serialize}; @@ -793,4 +833,17 @@ mod test { msg.read(&bytes).unwrap(); ParsedObj::validate(&mut msg).unwrap(); } + + #[test] + fn test_swap_tx() { + let input = "000000000104009ef3889fd070159edcd8ef88a0ec87cea1592c83000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000302000000060002169ef3889fd070159edcd8ef88a0ec87cea1592c830100000000000027100003167c5f674a8fd08efa61dd9b11121e046dd2c892730a756e6976322d636f72650300000000000000000103167c5f674a8fd08efa61dd9b11121e046dd2c892730a756e6976322d636f7265168c5e2f8d25627d6edebeb6d10fa3300f5acc8441086c6f6e67636f696e086c6f6e67636f696e0300000000000000000103167c5f674a8fd08efa61dd9b11121e046dd2c892730a756e6976322d636f7265168c5e2f8d25627d6edebeb6d10fa3300f5acc8441086c6f6e67636f696e086c6f6e67636f696e0300000000000000000102169ef3889fd070159edcd8ef88a0ec87cea1592c83168c5e2f8d25627d6edebeb6d10fa3300f5acc8441086c6f6e67636f696e086c6f6e67636f696e030000000000000000010316402da2c079e5d31d58b9cfc7286d1b1eb2f7834e0f616d6d2d7661756c742d76322d303116402da2c079e5d31d58b9cfc7286d1b1eb2f7834e0a746f6b656e2d616c657804616c65780300000000011c908a02162ec1a2dc2904ebc8b408598116c75e42c51afa2617726f757465722d76656c61722d616c65782d762d312d320d737761702d68656c7065722d6100000007010000000000000000000000000000271001000000000000000000000000011c908a040c00000002016106167c5f674a8fd08efa61dd9b11121e046dd2c892730477737478016206168c5e2f8d25627d6edebeb6d10fa3300f5acc8441086c6f6e67636f696e06167c5f674a8fd08efa61dd9b11121e046dd2c8927312756e6976322d73686172652d6665652d746f0c0000000201610616402da2c079e5d31d58b9cfc7286d1b1eb2f7834e0b746f6b656e2d776c6f6e6701620616402da2c079e5d31d58b9cfc7286d1b1eb2f7834e0a746f6b656e2d616c65780c0000000101610100000000000000000000000005f5e100"; + let bytes = hex::decode(input).unwrap(); + let mut msg = ParsedObj::from_bytes(&bytes).unwrap(); + + msg.read(&bytes).unwrap(); + + ParsedObj::validate(&mut msg).unwrap(); + + std::println!("tx: {:?}", msg); + } } diff --git a/app/rust/src/parser/parser_common.rs b/app/rust/src/parser/parser_common.rs index 05b42dbe..a161d6ea 100644 --- a/app/rust/src/parser/parser_common.rs +++ b/app/rust/src/parser/parser_common.rs @@ -20,11 +20,12 @@ pub const C32_ENCODED_ADDRS_LENGTH: usize = 48; pub const NUM_SUPPORTED_POST_CONDITIONS: usize = 16; pub const SIGNATURE_LEN: usize = 65; pub const PUBKEY_LEN: usize = 33; -pub const TOKEN_TRANSFER_MEMO_LEN: usize = 34; +pub const MEMO_LEN: usize = 34; +pub const AMOUNT_LEN: usize = 8; // A recursion limit use to control ram usage when parsing // contract-call arguments that comes in a transaction -pub const TX_DEPTH_LIMIT: u8 = 3; +pub const TX_DEPTH_LIMIT: u8 = 8; // Use to limit recursion when parsing nested clarity values that comes as part of a structured // message. the limit is higher than the one use when parsing contract-args in transactions diff --git a/app/rust/src/parser/post_condition.rs b/app/rust/src/parser/post_conditions.rs similarity index 74% rename from app/rust/src/parser/post_condition.rs rename to app/rust/src/parser/post_conditions.rs index 834ddf9c..2f108237 100644 --- a/app/rust/src/parser/post_condition.rs +++ b/app/rust/src/parser/post_conditions.rs @@ -5,186 +5,20 @@ use nom::{ number::complete::{be_u64, le_u8}, }; -use super::error::ParserError; - -use super::parser_common::{ - AssetInfo, ContractName, StacksAddress, C32_ENCODED_ADDRS_LENGTH, HASH160_LEN, STX_DECIMALS, - TX_DEPTH_LIMIT, -}; -use crate::parser::value::Value; -use crate::zxformat; - -#[repr(u8)] -#[derive(Clone, PartialEq, Copy)] -pub enum PostConditionPrincipalId { - Origin = 0x01, - Standard = 0x02, - Contract = 0x03, -} - -impl TryFrom for PostConditionPrincipalId { - type Error = ParserError; - - fn try_from(value: u8) -> Result { - let id = match value { - 1 => Self::Origin, - 2 => Self::Standard, - 3 => Self::Contract, - _ => return Err(ParserError::UnexpectedValue), - }; - Ok(id) - } -} - -#[repr(C)] -#[derive(Clone, Copy, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub enum PostConditionPrincipal<'a> { - Origin, - Standard(StacksAddress<'a>), - Contract(StacksAddress<'a>, ContractName<'a>), -} - -impl<'a> PostConditionPrincipal<'a> { - #[inline(never)] - pub fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { - let id = le_u8(bytes)?; - let principal_id = PostConditionPrincipalId::try_from(id.1)?; - match principal_id { - PostConditionPrincipalId::Origin => Ok((id.0, PostConditionPrincipal::Origin)), - PostConditionPrincipalId::Standard => { - let addrs = StacksAddress::from_bytes(id.0)?; - Ok((addrs.0, PostConditionPrincipal::Standard(addrs.1))) - } - PostConditionPrincipalId::Contract => { - let addrs = StacksAddress::from_bytes(id.0)?; - let contract_name = ContractName::from_bytes(addrs.0)?; - Ok(( - contract_name.0, - PostConditionPrincipal::Contract(addrs.1, contract_name.1), - )) - } - } - } - - pub fn read_as_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], &[u8], ParserError> { - let (rem, id) = le_u8(bytes)?; - let principal_id = PostConditionPrincipalId::try_from(id)?; - match principal_id { - PostConditionPrincipalId::Origin => Ok((rem, Default::default())), - PostConditionPrincipalId::Standard => { - // we take 20-byte key hash + 1-byte hash_mode + 1-byte principal_id - let (raw, addr) = take(HASH160_LEN + 2usize)(bytes)?; - Ok((raw, addr)) - } - PostConditionPrincipalId::Contract => { - let (rem, _) = StacksAddress::from_bytes(rem)?; - let (_, name) = ContractName::from_bytes(rem)?; - // we take 20-byte key hash + 1-byte hash_mode + - // contract_name len + 1-byte len + 1-byte principal_id - let total_len = HASH160_LEN + name.len() + 3; - let (rem, contract_bytes) = take(total_len)(bytes)?; - Ok((rem, contract_bytes)) - } - } - } - - pub fn is_origin(&self) -> bool { - matches!(self, Self::Origin) - } - - pub fn is_standard(&self) -> bool { - matches!(self, Self::Standard(..)) - } - - pub fn is_contract(&self) -> bool { - matches!(self, Self::Contract(..)) - } - - pub fn origin_address( - ) -> Result, ParserError> { - let mut output: ArrayVec<[_; C32_ENCODED_ADDRS_LENGTH]> = ArrayVec::new(); - output.try_extend_from_slice(b"Origin".as_ref()).unwrap(); - Ok(output) - } - - pub fn get_principal_address( - &self, - ) -> Result, ParserError> { - match self { - Self::Origin => Self::origin_address(), - Self::Standard(ref address) | Self::Contract(ref address, _) => { - address.encoded_address() - } - } - } +mod fungible; +mod non_fungible; +mod post_condition_principal; +pub use fungible::FungibleConditionCode; +pub use non_fungible::NonfungibleConditionCode; - pub fn get_contract_name(&'a self) -> Option<&'a [u8]> { - match self { - Self::Contract(_, name) => Some(name.name()), - _ => None, - } - } -} +pub use post_condition_principal::{PostConditionPrincipal, PostConditionPrincipalId}; -#[repr(u8)] -#[derive(Clone, PartialEq, Copy)] -#[cfg_attr(test, derive(Debug))] -pub enum FungibleConditionCode { - SentEq = 0x01, - SentGt = 0x02, - SentGe = 0x03, - SentLt = 0x04, - SentLe = 0x05, -} - -impl FungibleConditionCode { - pub fn from_u8(b: u8) -> Option { - match b { - 0x01 => Some(FungibleConditionCode::SentEq), - 0x02 => Some(FungibleConditionCode::SentGt), - 0x03 => Some(FungibleConditionCode::SentGe), - 0x04 => Some(FungibleConditionCode::SentLt), - 0x05 => Some(FungibleConditionCode::SentLe), - _ => None, - } - } - - pub fn to_str(self) -> &'static str { - match self { - FungibleConditionCode::SentEq => "SentEq", - FungibleConditionCode::SentGt => "SentGt", - FungibleConditionCode::SentGe => "SentGe", - FungibleConditionCode::SentLt => "SentLt", - FungibleConditionCode::SentLe => "SentLe", - } - } -} - -#[repr(u8)] -#[derive(Clone, PartialEq, Copy)] -#[cfg_attr(test, derive(Debug))] -pub enum NonfungibleConditionCode { - Sent = 0x10, - NotSent = 0x11, -} - -impl NonfungibleConditionCode { - pub fn from_u8(b: u8) -> Option { - match b { - 0x10 => Some(NonfungibleConditionCode::Sent), - 0x11 => Some(NonfungibleConditionCode::NotSent), - _ => None, - } - } +use super::error::ParserError; - pub fn to_str(self) -> &'static str { - match self { - Self::Sent => "Sent", - Self::NotSent => "NotSent", - } - } -} +use super::parser_common::{AssetInfo, C32_ENCODED_ADDRS_LENGTH, STX_DECIMALS, TX_DEPTH_LIMIT}; +use crate::zxformat; +use crate::{bolos::c_zemu_log_stack, parser::value::Value}; +use lexical_core::Number; #[repr(u8)] #[derive(Clone, PartialEq, Copy)] @@ -345,18 +179,18 @@ impl<'a> TransactionPostCondition<'a> { let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); let amount = self.tokens_amount()?; - let len = zxformat::u64_to_str(output.as_mut(), amount).ok()? as usize; + let len = zxformat::u64_to_str(output.as_mut(), amount).ok()?.len(); unsafe { output.set_len(len); } Some(output) } - pub fn amount_stx_str(&self) -> Option> { + pub fn amount_stx_str(&self) -> Option> { let amount = self.amount_stx()?; - let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); - let len = - zxformat::fpu64_to_str_check_test(output.as_mut(), amount, STX_DECIMALS).ok()? as usize; + + let mut output = ArrayVec::from([0u8; u64::FORMATTED_SIZE_DECIMAL]); + let len = zxformat::fpu64_to_str(output.as_mut(), amount, STX_DECIMALS).ok()? as usize; unsafe { output.set_len(len); } @@ -423,6 +257,7 @@ impl<'a> TransactionPostCondition<'a> { page_idx: u8, ) -> Result { let index = display_idx % self.num_items(); + if index == 0 { self.write_principal_address(out_key, out_value, page_idx) } else { @@ -443,6 +278,8 @@ impl<'a> TransactionPostCondition<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("TransactionPostCondition::get_stx_items\x00"); + let mut writer_key = zxformat::Writer::new(out_key); match self { Self::Stx(..) => match display_idx { @@ -477,6 +314,8 @@ impl<'a> TransactionPostCondition<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("TransactionPostCondition::get_fungible_items\x00"); + let mut writer_key = zxformat::Writer::new(out_key); match self { Self::Fungible(..) => { @@ -526,6 +365,8 @@ impl<'a> TransactionPostCondition<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("TransactionPostCondition::get_non_fungible_items\x00"); + let mut writer_key = zxformat::Writer::new(out_key); match self { Self::Nonfungible(..) => { @@ -566,6 +407,8 @@ impl<'a> TransactionPostCondition<'a> { #[cfg(test)] mod test { + use crate::parser::StacksAddress; + use super::*; use std::prelude::v1::*; diff --git a/app/rust/src/parser/post_conditions/fungible.rs b/app/rust/src/parser/post_conditions/fungible.rs new file mode 100644 index 00000000..608f8b66 --- /dev/null +++ b/app/rust/src/parser/post_conditions/fungible.rs @@ -0,0 +1,33 @@ +#[repr(u8)] +#[derive(Clone, PartialEq, Copy)] +#[cfg_attr(test, derive(Debug))] +pub enum FungibleConditionCode { + SentEq = 0x01, + SentGt = 0x02, + SentGe = 0x03, + SentLt = 0x04, + SentLe = 0x05, +} + +impl FungibleConditionCode { + pub fn from_u8(b: u8) -> Option { + match b { + 0x01 => Some(FungibleConditionCode::SentEq), + 0x02 => Some(FungibleConditionCode::SentGt), + 0x03 => Some(FungibleConditionCode::SentGe), + 0x04 => Some(FungibleConditionCode::SentLt), + 0x05 => Some(FungibleConditionCode::SentLe), + _ => None, + } + } + + pub fn to_str(self) -> &'static str { + match self { + FungibleConditionCode::SentEq => "SentEq", + FungibleConditionCode::SentGt => "SentGt", + FungibleConditionCode::SentGe => "SentGe", + FungibleConditionCode::SentLt => "SentLt", + FungibleConditionCode::SentLe => "SentLe", + } + } +} diff --git a/app/rust/src/parser/post_conditions/non_fungible.rs b/app/rust/src/parser/post_conditions/non_fungible.rs new file mode 100644 index 00000000..ad1e8368 --- /dev/null +++ b/app/rust/src/parser/post_conditions/non_fungible.rs @@ -0,0 +1,24 @@ +#[repr(u8)] +#[derive(Clone, PartialEq, Copy)] +#[cfg_attr(test, derive(Debug))] +pub enum NonfungibleConditionCode { + Sent = 0x10, + NotSent = 0x11, +} + +impl NonfungibleConditionCode { + pub fn from_u8(b: u8) -> Option { + match b { + 0x10 => Some(NonfungibleConditionCode::Sent), + 0x11 => Some(NonfungibleConditionCode::NotSent), + _ => None, + } + } + + pub fn to_str(self) -> &'static str { + match self { + Self::Sent => "Sent", + Self::NotSent => "NotSent", + } + } +} diff --git a/app/rust/src/parser/post_conditions/post_condition_principal.rs b/app/rust/src/parser/post_conditions/post_condition_principal.rs new file mode 100644 index 00000000..a0c01797 --- /dev/null +++ b/app/rust/src/parser/post_conditions/post_condition_principal.rs @@ -0,0 +1,121 @@ +use core::convert::TryFrom; + +use arrayvec::ArrayVec; +use nom::{bytes::complete::take, number::complete::le_u8}; + +use crate::parser::{ + ContractName, ParserError, StacksAddress, C32_ENCODED_ADDRS_LENGTH, HASH160_LEN, +}; + +#[repr(u8)] +#[derive(Clone, PartialEq, Copy)] +pub enum PostConditionPrincipalId { + Origin = 0x01, + Standard = 0x02, + Contract = 0x03, +} + +impl TryFrom for PostConditionPrincipalId { + type Error = ParserError; + + fn try_from(value: u8) -> Result { + let id = match value { + 1 => Self::Origin, + 2 => Self::Standard, + 3 => Self::Contract, + _ => return Err(ParserError::UnexpectedValue), + }; + Ok(id) + } +} + +#[repr(C)] +#[derive(Clone, Copy, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub enum PostConditionPrincipal<'a> { + Origin, + Standard(StacksAddress<'a>), + Contract(StacksAddress<'a>, ContractName<'a>), +} + +impl<'a> PostConditionPrincipal<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { + let id = le_u8(bytes)?; + let principal_id = PostConditionPrincipalId::try_from(id.1)?; + match principal_id { + PostConditionPrincipalId::Origin => Ok((id.0, PostConditionPrincipal::Origin)), + PostConditionPrincipalId::Standard => { + let addrs = StacksAddress::from_bytes(id.0)?; + Ok((addrs.0, PostConditionPrincipal::Standard(addrs.1))) + } + PostConditionPrincipalId::Contract => { + let addrs = StacksAddress::from_bytes(id.0)?; + let contract_name = ContractName::from_bytes(addrs.0)?; + Ok(( + contract_name.0, + PostConditionPrincipal::Contract(addrs.1, contract_name.1), + )) + } + } + } + + pub fn read_as_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], &[u8], ParserError> { + let (rem, id) = le_u8(bytes)?; + let principal_id = PostConditionPrincipalId::try_from(id)?; + match principal_id { + PostConditionPrincipalId::Origin => Ok((rem, Default::default())), + PostConditionPrincipalId::Standard => { + // we take 20-byte key hash + 1-byte hash_mode + 1-byte principal_id + let (raw, addr) = take(HASH160_LEN + 2usize)(bytes)?; + Ok((raw, addr)) + } + PostConditionPrincipalId::Contract => { + let (rem, _) = StacksAddress::from_bytes(rem)?; + let (_, name) = ContractName::from_bytes(rem)?; + // we take 20-byte key hash + 1-byte hash_mode + + // contract_name len + 1-byte len + 1-byte principal_id + let total_len = HASH160_LEN + name.len() + 3; + let (rem, contract_bytes) = take(total_len)(bytes)?; + Ok((rem, contract_bytes)) + } + } + } + + pub fn is_origin(&self) -> bool { + matches!(self, Self::Origin) + } + + pub fn is_standard(&self) -> bool { + matches!(self, Self::Standard(..)) + } + + pub fn is_contract(&self) -> bool { + matches!(self, Self::Contract(..)) + } + + pub fn origin_address( + ) -> Result, ParserError> { + let mut output: ArrayVec<[_; C32_ENCODED_ADDRS_LENGTH]> = ArrayVec::new(); + output.try_extend_from_slice(b"Origin".as_ref()).unwrap(); + Ok(output) + } + + pub fn get_principal_address( + &self, + ) -> Result, ParserError> { + match self { + Self::Origin => Self::origin_address(), + Self::Standard(ref address) | Self::Contract(ref address, _) => { + address.encoded_address() + } + } + } + + pub fn get_contract_name(&'a self) -> Option<&'a [u8]> { + match self { + Self::Contract(_, name) => Some(name.name()), + _ => None, + } + } +} diff --git a/app/rust/src/parser/spending_condition.rs b/app/rust/src/parser/spending_condition.rs index 341b19cf..93e9b887 100644 --- a/app/rust/src/parser/spending_condition.rs +++ b/app/rust/src/parser/spending_condition.rs @@ -163,7 +163,7 @@ impl<'a> SpendingConditionSigner<'a> { pub fn nonce_str(&self) -> Result, ParserError> { let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); let nonce = self.nonce()?; - let len = zxformat::u64_to_str(&mut output[..zxformat::MAX_STR_BUFF_LEN], nonce)? as usize; + let len = zxformat::u64_to_str(&mut output[..zxformat::MAX_STR_BUFF_LEN], nonce)?.len(); unsafe { output.set_len(len); } @@ -174,7 +174,7 @@ impl<'a> SpendingConditionSigner<'a> { pub fn fee_str(&self) -> Result, ParserError> { let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); let fee = self.fee()?; - let len = zxformat::u64_to_str(output.as_mut(), fee)? as usize; + let len = zxformat::u64_to_str(output.as_mut(), fee)?.len(); unsafe { output.set_len(len); } @@ -404,6 +404,7 @@ impl<'a> MultisigSpendingCondition<'a> { fn clear_as_singlesig(&mut self) { // TODO: check if it involves shrinking // the general transaction buffer + // function is not being called anywhere todo!(); } } diff --git a/app/rust/src/parser/structured_msg.rs b/app/rust/src/parser/structured_msg.rs index 46d10334..50731aa6 100644 --- a/app/rust/src/parser/structured_msg.rs +++ b/app/rust/src/parser/structured_msg.rs @@ -84,13 +84,12 @@ impl<'a> Domain<'a> { let id = value.value_id(); if id == ValueId::UInt { - // wont panic as this was checked by the parser - let chain_id = value.uint().unwrap(); + let chain_id = value.uint().ok_or(ParserError::UnexpectedValue)?; let num = chain_id.numtoa_str(10, &mut buff).as_bytes(); pageString(out_value, num, page_idx) } else { - let string = value.string_ascii().unwrap(); + let string = value.string_ascii().ok_or(ParserError::UnexpectedValue)?; pageString(out_value, string.content(), page_idx) } diff --git a/app/rust/src/parser/transaction.rs b/app/rust/src/parser/transaction.rs index f95a819d..2867d710 100644 --- a/app/rust/src/parser/transaction.rs +++ b/app/rust/src/parser/transaction.rs @@ -2,25 +2,23 @@ use core::fmt::Write; use nom::{ branch::permutation, bytes::complete::take, - combinator::iterator, number::complete::{be_u32, le_u8}, }; -use arrayvec::ArrayVec; - -use crate::parser::{ - error::ParserError, - parser_common::{ - HashMode, SignerId, TransactionVersion, C32_ENCODED_ADDRS_LENGTH, - NUM_SUPPORTED_POST_CONDITIONS, +use crate::{ + bolos::c_zemu_log_stack, + parser::{ + error::ParserError, + parser_common::{HashMode, SignerId, TransactionVersion, C32_ENCODED_ADDRS_LENGTH}, + transaction_auth::TransactionAuth, + transaction_payload::TransactionPayload, }, - post_condition::TransactionPostCondition, - transaction_auth::TransactionAuth, - transaction_payload::TransactionPayload, }; use crate::{check_canary, zxformat}; +use super::PostConditions; + // In multisig transactions the remainder should contain: // 32-byte previous signer post_sig_hash // 1-byte pubkey type @@ -35,33 +33,6 @@ pub enum TransactionAuthFlags { Sponsored = 0x05, } -#[repr(u8)] -#[derive(Clone, PartialEq, Copy)] -#[cfg_attr(test, derive(Debug))] -pub enum TransactionPostConditionMode { - Allow = 0x01, // allow any other changes not specified - Deny = 0x02, // deny any other changes not specified -} - -impl TransactionPostConditionMode { - #[inline(never)] - fn from_u8(v: u8) -> Option { - match v { - 1 => Some(Self::Allow), - 2 => Some(Self::Deny), - _ => None, - } - } - - #[inline(never)] - fn from_bytes(bytes: &[u8]) -> nom::IResult<&[u8], Self, ParserError> { - let mode = le_u8(bytes)?; - let tx_mode = Self::from_u8(mode.1).ok_or(ParserError::UnexpectedError)?; - check_canary!(); - Ok((mode.0, tx_mode)) - } -} - #[repr(u8)] #[derive(Clone, PartialEq, Copy)] #[cfg_attr(test, derive(Debug))] @@ -91,123 +62,6 @@ impl TransactionAnchorMode { } } -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct PostConditions<'a> { - pub(crate) conditions: ArrayVec<[&'a [u8]; NUM_SUPPORTED_POST_CONDITIONS]>, - num_items: u8, - current_idx: u8, -} - -impl<'a> PostConditions<'a> { - #[inline(never)] - fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { - let (raw, len) = be_u32::<_, ParserError>(bytes)?; - if len > NUM_SUPPORTED_POST_CONDITIONS as u32 { - return Err(nom::Err::Error(ParserError::ValueOutOfRange)); - } - let mut conditions: ArrayVec<[&'a [u8]; NUM_SUPPORTED_POST_CONDITIONS]> = ArrayVec::new(); - let mut iter = iterator(raw, TransactionPostCondition::read_as_bytes); - iter.take(len as _).enumerate().for_each(|i| { - conditions.push(i.1); - }); - let res = iter.finish()?; - let num_items = Self::get_num_items(conditions.as_ref()); - check_canary!(); - Ok(( - res.0, - Self { - conditions, - num_items, - current_idx: 0, - }, - )) - } - - fn get_num_items(conditions: &[&[u8]]) -> u8 { - conditions - .iter() - .filter_map(|bytes| TransactionPostCondition::from_bytes(bytes).ok()) - .map(|condition| (condition.1).num_items()) - .sum() - } - - pub fn get_postconditions(&self) -> &[&[u8]] { - self.conditions.as_ref() - } - - pub fn num_items(&self) -> u8 { - self.num_items - } - - #[inline(never)] - fn update_postcondition( - &mut self, - total_items: u8, - display_idx: u8, - ) -> Result { - // map display_idx to our range of items - let in_start = total_items - self.num_items; - let idx = self.map_idx(display_idx, in_start, total_items); - - let limit = self.get_current_limit(); - - // get the current postcondition which is used to - // check if it is time to change to the next/previous postconditions in our list - // and if that is not the case, we use it to get its items - let current_condition = self.current_post_condition()?; - - // before continuing we need to check if the current display_idx - // correspond to the current, next or previous postcondition - // if so, update it - if idx >= (limit + current_condition.num_items()) { - self.current_idx += 1; - // this should not happen - if self.current_idx > self.num_items { - return Err(ParserError::UnexpectedError); - } - } else if idx < limit && idx > 0 { - self.current_idx -= 1; - } - Ok(idx) - } - - #[inline(never)] - pub fn get_items( - &mut self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - num_items: u8, - ) -> Result { - let idx = self.update_postcondition(num_items, display_idx)?; - let current_postcondition = self.current_post_condition()?; - current_postcondition.get_items(idx, out_key, out_value, page_idx) - } - - fn map_idx(&self, display_idx: u8, in_start: u8, in_end: u8) -> u8 { - let slope = self.num_items / (in_end - in_start); - slope * (display_idx - in_start) - } - - fn get_current_limit(&self) -> u8 { - let current = self.current_idx as usize; - self.conditions[..current] - .iter() - .filter_map(|bytes| TransactionPostCondition::from_bytes(bytes).ok()) - .map(|condition| (condition.1).num_items()) - .sum() - } - - fn current_post_condition(&self) -> Result { - TransactionPostCondition::from_bytes(self.conditions[self.current_idx as usize]) - .map_err(|_| ParserError::PostConditionFailed) - .map(|res| res.1) - } -} - pub type TxTuple<'a> = ( TransactionVersion, // version number u32, // chainId @@ -219,6 +73,11 @@ pub type TxTuple<'a> = ( impl<'a> From<(&'a [u8], TxTuple<'a>)> for Transaction<'a> { fn from(raw: (&'a [u8], TxTuple<'a>)) -> Self { + let mut remainder = None; + if !raw.0.is_empty() { + remainder = Some(raw.0); + } + Self { version: (raw.1).0, chain_id: (raw.1).1, @@ -228,7 +87,7 @@ impl<'a> From<(&'a [u8], TxTuple<'a>)> for Transaction<'a> { payload: (raw.1).5, // At this point the signer is unknown signer: SignerId::Invalid, - remainder: raw.0, + remainder, } } } @@ -249,94 +108,106 @@ pub struct Transaction<'a> { // with them, we can construct the pre_sig_hash for the current signer // we would ideally verify it, but we can lend such responsability to the application // which has more resources - // If this is not a multisig transaction, this field should be an empty array - pub remainder: &'a [u8], + // If this is not a multisig transaction, this field should be None + pub remainder: Option<&'a [u8]>, } impl<'a> Transaction<'a> { fn update_remainder(&mut self, data: &'a [u8]) { - self.remainder = data; + if !data.is_empty() { + self.remainder = Some(data); + } else { + self.remainder = None; + } } #[inline(never)] pub fn read(&mut self, data: &'a [u8]) -> Result<(), ParserError> { - self.update_remainder(data); - self.read_header()?; - self.read_auth()?; - self.read_transaction_modes()?; - self.read_post_conditions()?; - self.read_payload()?; + c_zemu_log_stack("Transaction::read\x00"); + let rem = self.read_header(data)?; + let rem = self.read_auth(rem)?; + let rem = self.read_transaction_modes(rem)?; + let rem = self.read_post_conditions(rem)?; + let rem = self.read_payload(rem)?; let is_token_transfer = self.payload.is_token_transfer_payload(); let is_standard_auth = self.transaction_auth.is_standard_auth(); if is_token_transfer && !is_standard_auth { + c_zemu_log_stack("Transaction::invalid_token_transfer!\x00"); return Err(ParserError::InvalidTransactionPayload); } // At this point we do not know who the signer is self.signer = SignerId::Invalid; + + self.remainder = None; + + // set the remainder if this is mutltisig + if self.is_multisig() && !rem.is_empty() { + self.update_remainder(rem); + } + Ok(()) } #[inline(never)] - fn read_header(&mut self) -> Result<(), ParserError> { - let (next_data, version) = TransactionVersion::from_bytes(self.remainder) - .map_err(|_| ParserError::UnexpectedValue)?; + fn read_header(&mut self, data: &'a [u8]) -> Result<&'a [u8], ParserError> { + c_zemu_log_stack("Transaction::read_header\x00"); + let (rem, version) = + TransactionVersion::from_bytes(data).map_err(|_| ParserError::UnexpectedValue)?; - let (next_data, chain_id) = - be_u32::<_, ParserError>(next_data).map_err(|_| ParserError::UnexpectedValue)?; + let (rem, chain_id) = + be_u32::<_, ParserError>(rem).map_err(|_| ParserError::UnexpectedValue)?; self.version = version; self.chain_id = chain_id; check_canary!(); - self.update_remainder(next_data); - - Ok(()) + Ok(rem) } #[inline(never)] - fn read_auth(&mut self) -> Result<(), ParserError> { - let (next_data, auth) = TransactionAuth::from_bytes(self.remainder) - .map_err(|_| ParserError::InvalidAuthType)?; + fn read_auth(&mut self, data: &'a [u8]) -> Result<&'a [u8], ParserError> { + c_zemu_log_stack("Transaction::read_auth\x00"); + let (rem, auth) = + TransactionAuth::from_bytes(data).map_err(|_| ParserError::InvalidAuthType)?; self.transaction_auth = auth; - self.update_remainder(next_data); check_canary!(); - Ok(()) + Ok(rem) } #[inline(never)] - fn read_transaction_modes(&mut self) -> Result<(), ParserError> { + fn read_transaction_modes(&mut self, data: &'a [u8]) -> Result<&'a [u8], ParserError> { + c_zemu_log_stack("Transaction::read_transaction_modes\x00"); // two modes are included here, // anchor mode and postcondition mode - let (raw, _) = take::<_, _, ParserError>(2usize)(self.remainder) + let (rem, _) = take::<_, _, ParserError>(2usize)(data) .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let modes = arrayref::array_ref!(self.remainder, 0, 2); + let modes = arrayref::array_ref!(data, 0, 2); self.transaction_modes = modes; - self.update_remainder(raw); check_canary!(); - Ok(()) + Ok(rem) } #[inline(never)] - fn read_post_conditions(&mut self) -> Result<(), ParserError> { - let (raw, conditions) = PostConditions::from_bytes(self.remainder) - .map_err(|_| ParserError::PostConditionFailed)?; + fn read_post_conditions(&mut self, data: &'a [u8]) -> Result<&'a [u8], ParserError> { + c_zemu_log_stack("Transaction::read_post_conditions\x00"); + let (rem, conditions) = + PostConditions::from_bytes(data).map_err(|_| ParserError::PostConditionFailed)?; self.post_conditions = conditions; - self.update_remainder(raw); check_canary!(); - Ok(()) + Ok(rem) } #[inline(never)] - fn read_payload(&mut self) -> Result<(), ParserError> { - let (raw, payload) = TransactionPayload::from_bytes(self.remainder) + fn read_payload(&mut self, data: &'a [u8]) -> Result<&'a [u8], ParserError> { + c_zemu_log_stack("Transaction::read_payload\x00"); + let (rem, payload) = TransactionPayload::from_bytes(data) .map_err(|_| ParserError::InvalidTransactionPayload)?; self.payload = payload; - self.update_remainder(raw); check_canary!(); - Ok(()) + Ok(rem) } pub fn from_bytes(bytes: &'a [u8]) -> Result { @@ -368,9 +239,11 @@ impl<'a> Transaction<'a> { } pub fn num_items(&self) -> Result { + let num_items_post_conditions = self.post_conditions.num_items(); + // nonce + origin + fee-rate + payload + post-conditions 3u8.checked_add(self.payload.num_items()) - .and_then(|res| res.checked_add(self.post_conditions.num_items)) + .and_then(|res| res.checked_add(num_items_post_conditions)) .ok_or(ParserError::ValueOutOfRange) } @@ -381,6 +254,7 @@ impl<'a> Transaction<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("Transaction::get_origin_items\x00"); let mut writer_key = zxformat::Writer::new(out_key); #[cfg(test)] @@ -434,8 +308,9 @@ impl<'a> Transaction<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("Transaction::get_other_items\x00"); let num_items = self.num_items()?; - let post_conditions_items = self.post_conditions.num_items; + let post_conditions_items = self.post_conditions.num_items(); if display_idx >= (num_items - post_conditions_items) { if post_conditions_items == 0 { @@ -461,6 +336,7 @@ impl<'a> Transaction<'a> { out_value: &mut [u8], page_idx: u8, ) -> Result { + c_zemu_log_stack("Transaction::get_item\x00"); if display_idx >= self.num_items()? { return Err(ParserError::DisplayIdxOutOfRange); } @@ -527,21 +403,50 @@ impl<'a> Transaction<'a> { if self.signer != SignerId::Invalid { return ParserError::ParserOk; } + c_zemu_log_stack("Invalid transaction signer\x00"); ParserError::InvalidAuthType } // returns a slice of the last block to be used in the presighash calculation pub fn last_transaction_block(&self) -> &[u8] { - unsafe { - let len = - (self.remainder.as_ptr() as usize - self.transaction_modes.as_ptr() as usize) as _; - core::slice::from_raw_parts(self.transaction_modes.as_ptr(), len) + match self.remainder { + Some(remainder) => { + let remainder_ptr = remainder.as_ptr() as usize; + let tx_modes_ptr = self.transaction_modes.as_ptr() as usize; + + unsafe { + let len = remainder_ptr - tx_modes_ptr; + core::slice::from_raw_parts(self.transaction_modes.as_ptr(), len) + } + } + None => { + // If there's no remainder, return everything from transaction_modes to the end of payload + let payload = self.payload.raw_payload(); + unsafe { + let payload_end = payload.as_ptr().add(payload.len()); + let len = payload_end as usize - self.transaction_modes.as_ptr() as usize; + core::slice::from_raw_parts(self.transaction_modes.as_ptr(), len) + } + } } } + // pub fn last_transaction_block(&self) -> Option<&[u8]> { + // self.remainder.map(|remainder| { + // let remainder_ptr = remainder.as_ptr() as usize; + // let tx_modes_ptr = self.transaction_modes.as_ptr() as usize; + // + // unsafe { + // let len = remainder_ptr - tx_modes_ptr; + // core::slice::from_raw_parts(self.transaction_modes.as_ptr(), len) + // } + // }) + // } pub fn previous_signer_data(&self) -> Option<&[u8]> { - if self.is_multisig() && self.remainder.len() >= MULTISIG_PREVIOUS_SIGNER_DATA_LEN { - return Some(&self.remainder[..MULTISIG_PREVIOUS_SIGNER_DATA_LEN]); + let remainder = self.remainder?; + + if self.is_multisig() && remainder.len() >= MULTISIG_PREVIOUS_SIGNER_DATA_LEN { + return Some(&remainder[..MULTISIG_PREVIOUS_SIGNER_DATA_LEN]); } None } diff --git a/app/rust/src/parser/transaction_payload.rs b/app/rust/src/parser/transaction_payload.rs index 3e85613a..15df6cfb 100644 --- a/app/rust/src/parser/transaction_payload.rs +++ b/app/rust/src/parser/transaction_payload.rs @@ -1,604 +1,21 @@ -use core::fmt::Write; -use nom::{ - branch::alt, - bytes::complete::{tag, take}, - combinator::{flat_map, map}, - number::complete::{be_u32, be_u64, be_u8, le_u8}, - sequence::tuple, +mod arguments; +mod contract_call; +mod smart_contract; +mod token_transfer; +mod versioned_contract; + +use nom::number::complete::le_u8; + +use self::{ + contract_call::{TransactionContractCall, CONTRACT_CALL_BASE_ITEMS}, + smart_contract::TransactionSmartContract, + token_transfer::StxTokenTransfer, + versioned_contract::VersionedSmartContract, }; -use arrayvec::ArrayVec; -use numtoa::NumToA; - -use super::{ - utils::ApduPanic, ClarityName, ContractName, PrincipalData, StacksAddress, - C32_ENCODED_ADDRS_LENGTH, HASH160_LEN, TX_DEPTH_LIMIT, -}; +use super::{ContractName, C32_ENCODED_ADDRS_LENGTH}; use crate::parser::error::ParserError; -use crate::parser::c32; - -use super::value::{Value, ValueId}; -use crate::{check_canary, is_expert_mode, zxformat}; - -// The number of contract call arguments we can handle. -// this can be adjusted, but keep in mind that higher values could -// hit stack overflows issues. -pub const MAX_NUM_ARGS: u32 = 10; - -// The items in contract_call transactions are -// contract_address, contract_name and function_name -pub const CONTRACT_CALL_BASE_ITEMS: u8 = 3; - -pub const MAX_STRING_ASCII_TO_SHOW: usize = 60; - -#[repr(u8)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub enum TokenTranferPrincipal { - Standard = 0x05, - Contract = 0x06, -} - -impl TokenTranferPrincipal { - fn from_u8(v: u8) -> Result { - match v { - 5 => Ok(Self::Standard), - 6 => Ok(Self::Contract), - _ => Err(ParserError::InvalidTokenTransferPrincipal), - } - } -} - -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct StxTokenTransfer<'a>(&'a [u8]); - -impl<'a> StxTokenTransfer<'a> { - #[inline(never)] - fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { - let id = le_u8(bytes)?; - let (raw, _) = match TokenTranferPrincipal::from_u8(id.1)? { - TokenTranferPrincipal::Standard => PrincipalData::standard_from_bytes(id.0)?, - TokenTranferPrincipal::Contract => PrincipalData::contract_principal_from_bytes(id.0)?, - }; - // Besides principal we take 34-bytes being the MEMO message + 8-bytes amount of stx - let len = bytes.len() - raw.len() + 34 + 8; - let (raw, data) = take(len)(bytes)?; - Ok((raw, Self(data))) - } - - pub fn memo(&self) -> &[u8] { - let at = self.0.len() - 34; - // safe to unwrap as parser checked for proper len - self.0.get(at..).apdu_unwrap() - } - - pub fn amount(&self) -> Result { - let at = self.0.len() - 34 - 8; - let amount = self.0.get(at..).ok_or(ParserError::NoData)?; - be_u64::<_, ParserError>(amount) - .map(|res| res.1) - .map_err(|_| ParserError::UnexpectedBufferEnd) - } - - pub fn raw_address(&self) -> &[u8] { - // Skips the principal-id and hash_mode - // is valid as this was check by the parser - // safe to unwrap as this was checked at parsing - self.0.get(2..22).apdu_unwrap() - } - - pub fn encoded_address( - &self, - ) -> Result, ParserError> { - // Skips the principal-id at [0] and uses hash_mode and the follow 20-bytes - let version = self.0.get(1).ok_or(ParserError::NoData)?; - c32::c32_address( - *version, - self.0.get(2..22).ok_or(ParserError::InvalidAddress)?, - ) - } - - pub fn amount_stx(&self) -> Result, ParserError> { - let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); - let amount = self.amount()?; - let len = zxformat::u64_to_str(output.as_mut(), amount)? as usize; - unsafe { - output.set_len(len); - } - check_canary!(); - Ok(output) - } - - fn get_token_transfer_items( - &self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - let mut writer_key = zxformat::Writer::new(out_key); - - match display_idx { - // Fomatting the amount in stx - 0 => { - writer_key - .write_str("Amount uSTX") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let amount = self.amount_stx()?; - check_canary!(); - zxformat::pageString(out_value, amount.as_ref(), page_idx) - } - // Recipient address - 1 => { - writer_key - .write_str("To") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let recipient = self.encoded_address()?; - check_canary!(); - zxformat::pageString(out_value, recipient.as_ref(), page_idx) - } - 2 => { - writer_key - .write_str("Memo") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - check_canary!(); - zxformat::pageString(out_value, self.memo(), page_idx) - } - _ => Err(ParserError::DisplayIdxOutOfRange), - } - } -} - -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct Arguments<'a>(&'a [u8]); - -impl<'a> Arguments<'a> { - #[inline(never)] - fn from_bytes(bytes: &'a [u8]) -> Result<(&[u8], Self), nom::Err> { - check_canary!(); - - let (_, num_args) = be_u32::<_, ParserError>(bytes)?; - - if num_args > MAX_NUM_ARGS && !is_expert_mode() { - return Err(ParserError::InvalidTransactionPayload.into()); - } - let (raw, args) = take(bytes.len())(bytes)?; - - // take all bytes as there must not be more data after the arguments - // returning an empty remain data. NOTE: we use take(bytes.len()), to offset - // the remainder bytes as it is used to set the tx.remainder, which is use - // to calculate the last_tx_block during the transaction signing process - Ok((raw, Self(args))) - } - - pub fn num_args(&self) -> Result { - be_u32::<_, ParserError>(self.0) - .map(|res| res.1) - .map_err(|_| ParserError::UnexpectedError) - } - - pub fn argument_at(&self, at: usize) -> Result, ParserError> { - check_canary!(); - - let mut idx = 0; - let num_args = self.num_args()?; - - // skip the first 4-bytes - let mut leftover = &self.0[4..]; - - while idx < num_args as usize { - let (bytes, value) = Value::from_bytes::(leftover) - .map_err(|_| ParserError::InvalidArgumentId)?; - - leftover = bytes; - if idx == at { - return Ok(value); - } - idx += 1; - } - Err(ParserError::DisplayIdxOutOfRange) - } -} - -/// A transaction that calls into a smart contract -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct TransactionContractCall<'a>(&'a [u8]); - -impl<'a> TransactionContractCall<'a> { - #[inline(never)] - fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { - let (raw, _) = StacksAddress::from_bytes(bytes)?; - // get contract name and function name. - let (raw2, _) = tuple((ContractName::from_bytes, ClarityName::from_bytes))(raw)?; - let (leftover, _) = Arguments::from_bytes(raw2)?; - let len = bytes.len() - leftover.len(); - let (_, data) = take(len)(bytes)?; - check_canary!(); - Ok((leftover, Self(data))) - } - - pub fn contract_name(&'a self) -> Result, ParserError> { - let at = HASH160_LEN + 1; - ContractName::from_bytes(&self.0[at..]) - .map(|(_, name)| name) - .map_err(|e| e.into()) - } - - pub fn function_name(&self) -> Result<&[u8], ParserError> { - ContractName::from_bytes(&self.0[(HASH160_LEN + 1)..]) - .and_then(|b| ClarityName::from_bytes(b.0)) - .map(|res| (res.1).0) - .map_err(|_| ParserError::UnexpectedError) - } - - pub fn function_args(&self) -> Result, ParserError> { - ContractName::from_bytes(&self.0[(HASH160_LEN + 1)..]) - .and_then(|b| ClarityName::from_bytes(b.0)) - .and_then(|c| Arguments::from_bytes(c.0)) - .map(|res| res.1) - .map_err(|_| ParserError::InvalidArgumentId) - } - - pub fn num_args(&self) -> Result { - self.function_args().and_then(|args| args.num_args()) - } - - #[inline(never)] - pub fn contract_address( - &self, - ) -> Result, ParserError> { - let version = self.0[0]; - c32::c32_address(version, &self.0[1..21]) - } - - // change label if it is a stacking contract call - fn label_stacking_value(&self, key: &mut [u8]) -> Result<(), ParserError> { - let addr = self.contract_address()?; - let addr = addr.as_ref(); - let contract_name = self.contract_name()?; - if (addr == "SP000000000000000000002Q6VF78".as_bytes() - || addr == "ST000000000000000000002AMW42H".as_bytes()) - && contract_name.name() == "pox".as_bytes() - { - let name = self.function_name()?; - if name == "stack-stx".as_bytes() { - key.iter_mut().for_each(|v| *v = 0); - let mut writer = zxformat::Writer::new(key); - writer - .write_str("stacked uSTX") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - } else if name == "delegate-stx".as_bytes() { - key.iter_mut().for_each(|v| *v = 0); - let mut writer = zxformat::Writer::new(key); - writer - .write_str("delegated uSTX") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - } - } - Ok(()) - } - - fn get_contract_call_args( - &'a self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - if display_idx < CONTRACT_CALL_BASE_ITEMS { - return Err(ParserError::DisplayIdxOutOfRange); - } - let arg_num = display_idx - CONTRACT_CALL_BASE_ITEMS; - - let args = self.function_args()?; - - let value = args.argument_at(arg_num as _)?; - - { - let mut writer_key = zxformat::Writer::new(out_key); - let mut arg_num_buff = [0u8; 3]; - let arg_num_str = arg_num.numtoa_str(10, &mut arg_num_buff); - - writer_key - .write_str("arg") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - writer_key - .write_str(arg_num_str) - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - } - - // return the value content including the valueID - let payload = value.payload(); - - match value.value_id() { - ValueId::Int => { - let value = value.int().ok_or(ParserError::UnexpectedError)?; - let mut buff = [0u8; 39]; - - zxformat::pageString( - out_value, - value.numtoa_str(10, &mut buff).as_bytes(), - page_idx, - ) - } - ValueId::UInt => { - let value = value.uint().ok_or(ParserError::UnexpectedError)?; - let mut buff = [0u8; 39]; - - if arg_num == 0 { - self.label_stacking_value(out_key)?; - } - - zxformat::pageString( - out_value, - value.numtoa_str(10, &mut buff).as_bytes(), - page_idx, - ) - } - ValueId::BoolTrue => { - zxformat::pageString(out_value, "is bool: true".as_bytes(), page_idx) - } - ValueId::BoolFalse => { - zxformat::pageString(out_value, "is bool: false".as_bytes(), page_idx) - } - ValueId::OptionalNone => { - zxformat::pageString(out_value, "is Option: None".as_bytes(), page_idx) - } - ValueId::OptionalSome => { - zxformat::pageString(out_value, "is Option: Some".as_bytes(), page_idx) - } - ValueId::ResponseOk => { - zxformat::pageString(out_value, "is Result: Ok".as_bytes(), page_idx) - } - ValueId::ResponseErr => { - zxformat::pageString(out_value, "is Result: Err".as_bytes(), page_idx) - } - ValueId::StandardPrincipal => { - let (_, principal) = PrincipalData::standard_from_bytes(payload)?; - let address = principal.encoded_address()?; - zxformat::pageString(out_value, &address[0..address.len()], page_idx) - } - ValueId::ContractPrincipal => { - // holds principal_encoded address + '.' + contract_name - let mut data = [0; C32_ENCODED_ADDRS_LENGTH + ClarityName::MAX_LEN as usize + 1]; - - let (_, principal) = PrincipalData::contract_principal_from_bytes(payload)?; - let address = principal.encoded_address()?; - - // should not fail as this was parsed in previous step - let contract_name = principal.contract_name().apdu_unwrap(); - - data.get_mut(..address.len()) - .apdu_unwrap() - .copy_from_slice(&address[0..address.len()]); - - data[address.len()] = b'.'; - let len = address.len() + 1; - - // wont panic as we reserved enough space. - data.get_mut(len..len + contract_name.len()) - .apdu_unwrap() - .copy_from_slice(contract_name.name()); - - zxformat::pageString(out_value, &data[0..len + contract_name.len()], page_idx) - } - ValueId::Buffer => zxformat::pageString(out_value, "is Buffer".as_bytes(), page_idx), - ValueId::List => zxformat::pageString(out_value, "is List".as_bytes(), page_idx), - ValueId::Tuple => zxformat::pageString(out_value, "is Tuple".as_bytes(), page_idx), - ValueId::StringAscii => { - // 4 bytes encode the length of the string - let len = if payload.len() - 4 > MAX_STRING_ASCII_TO_SHOW { - MAX_STRING_ASCII_TO_SHOW - } else { - payload.len() - }; - zxformat::pageString( - out_value, - &payload[4..len], // omit the first 4-bytes as they are the string length - page_idx, - ) - } - - ValueId::StringUtf8 => { - zxformat::pageString(out_value, "is StringUtf8".as_bytes(), page_idx) - } - } - } - - pub fn num_items(&self) -> Result { - // contract-address, contract-name, function-name - // + the number of arguments - let num_args = self.num_args()? as u8; - num_args - .checked_add(CONTRACT_CALL_BASE_ITEMS) - .ok_or(ParserError::ValueOutOfRange) - } - - fn get_base_items( - &self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - if display_idx > CONTRACT_CALL_BASE_ITEMS { - return Err(ParserError::DisplayIdxOutOfRange); - } - let mut writer_key = zxformat::Writer::new(out_key); - match display_idx { - // Contract-address - 0 => { - writer_key - .write_str("Contract address") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let address = self.contract_address()?; - check_canary!(); - zxformat::pageString(out_value, address.as_ref(), page_idx) - } - // Contract.name - 1 => { - writer_key - .write_str("Contract name") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let name = self.contract_name()?; - check_canary!(); - zxformat::pageString(out_value, name.name(), page_idx) - } - // Function-name - 2 => { - writer_key - .write_str("Function name") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - let name = self.function_name()?; - check_canary!(); - zxformat::pageString(out_value, name, page_idx) - } - _ => Err(ParserError::DisplayIdxOutOfRange), - } - } - - fn get_contract_call_items( - &self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - // display_idx was already normalize - if display_idx < CONTRACT_CALL_BASE_ITEMS { - self.get_base_items(display_idx, out_key, out_value, page_idx) - } else { - self.get_contract_call_args(display_idx, out_key, out_value, page_idx) - } - } -} - -/// A transaction that deploys a versioned smart contract -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct VersionedSmartContract<'a>(&'a [u8]); - -impl<'a> VersionedSmartContract<'a> { - #[inline(never)] - fn from_bytes(input: &'a [u8]) -> Result<(&[u8], Self), ParserError> { - check_canary!(); - - // clarity version - // len prefixed contract name - // len prefixed contract code - let parse_tag = alt((tag(&[0x01]), tag(&[0x02]))); - let parse_length_1_byte = map(be_u8, |length| std::cmp::min(length, 128u8) as usize); - let parse_length_4_bytes = flat_map(be_u32, take); - - let mut parser = tuple(( - parse_tag, - flat_map(parse_length_1_byte, take), - parse_length_4_bytes, - )); - let (_, (_, name, code)) = parser(input)?; - - // 1-byte tag, 1-byte name_len, name, 4-byte code_len, code - let total_length = 1 + 1 + name.len() + 4 + code.len(); - let (rem, res) = take(total_length)(input)?; - - Ok((rem, Self(res))) - } - - pub fn contract_name(&'a self) -> Result, ParserError> { - // skip the tag. safe ecause this was checked during parsing - ContractName::from_bytes(&self.0[1..]) - .map(|(_, res)| res) - .map_err(|e| e.into()) - } - - #[inline(never)] - fn get_contract_items( - &self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - let mut writer_key = zxformat::Writer::new(out_key); - - match display_idx { - 0 => { - writer_key - .write_str("Contract Name") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - check_canary!(); - let name = self.contract_name()?; - zxformat::pageString(out_value, name.name(), page_idx) - } - _ => Err(ParserError::ValueOutOfRange), - } - } -} - -/// A transaction that instantiates a smart contract -#[repr(C)] -#[derive(Clone, PartialEq)] -#[cfg_attr(test, derive(Debug))] -pub struct TransactionSmartContract<'a>(&'a [u8]); - -impl<'a> TransactionSmartContract<'a> { - #[inline(never)] - fn from_bytes(bytes: &'a [u8]) -> Result<(&[u8], Self), ParserError> { - check_canary!(); - - // len prefixed contract name - // len prefixed contract code - let parse_length_1_byte = map(be_u8, |length| std::cmp::min(length, 128u8) as usize); - let parse_length_4_bytes = flat_map(be_u32, take); - - let mut parser = tuple((flat_map(parse_length_1_byte, take), parse_length_4_bytes)); - let (_, (name, code)) = parser(bytes)?; - - // 1-byte name_len, name, 4-byte code_len, code - let total_length = 1 + name.len() + 4 + code.len(); - let (rem, res) = take(total_length)(bytes)?; - - Ok((rem, Self(res))) - } - - pub fn contract_name(&'a self) -> Result, ParserError> { - ContractName::from_bytes(self.0) - .map(|(_, res)| res) - .map_err(|e| e.into()) - } - - #[inline(never)] - fn get_contract_items( - &self, - display_idx: u8, - out_key: &mut [u8], - out_value: &mut [u8], - page_idx: u8, - ) -> Result { - let mut writer_key = zxformat::Writer::new(out_key); - - match display_idx { - 0 => { - writer_key - .write_str("Contract Name") - .map_err(|_| ParserError::UnexpectedBufferEnd)?; - check_canary!(); - let name = self.contract_name()?; - zxformat::pageString(out_value, name.name(), page_idx) - } - _ => Err(ParserError::ValueOutOfRange), - } - } -} - #[repr(u8)] #[derive(Clone, PartialEq, Copy)] #[cfg_attr(test, derive(Debug))] @@ -753,6 +170,15 @@ impl<'a> TransactionPayload<'a> { } } } + + pub fn raw_payload(&self) -> &'a [u8] { + match self { + Self::TokenTransfer(token) => token.raw_data(), + Self::SmartContract(contract) => contract.raw_data(), + Self::ContractCall(call) => call.raw_data(), + Self::VersionedSmartContract(deploy) => deploy.raw_data(), + } + } } #[cfg(test)] diff --git a/app/rust/src/parser/transaction_payload/arguments.rs b/app/rust/src/parser/transaction_payload/arguments.rs new file mode 100644 index 00000000..e4375ec9 --- /dev/null +++ b/app/rust/src/parser/transaction_payload/arguments.rs @@ -0,0 +1,75 @@ +use nom::{bytes::complete::take, number::complete::be_u32}; + +use crate::{ + check_canary, is_expert_mode, + parser::{ParserError, Value, TX_DEPTH_LIMIT}, +}; + +// The number of contract call arguments we can handle. +// this can be adjusted, but keep in mind that higher values could +// hit stack overflows issues. +pub const MAX_NUM_ARGS: u32 = 10; + +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct Arguments<'a>(&'a [u8]); + +impl<'a> Arguments<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> Result<(&[u8], Self), nom::Err> { + check_canary!(); + + let (mut rem, num_args) = be_u32::<_, ParserError>(bytes)?; + + if num_args > MAX_NUM_ARGS && !is_expert_mode() { + return Err(ParserError::InvalidTransactionPayload.into()); + } + + // Parse all arguments so we can be sure that at runtime when each + // argument is retrieved it does not crashes + for _ in 0..num_args { + let (leftover, _) = Value::from_bytes::(rem) + .map_err(|_| ParserError::InvalidArgumentId)?; + + rem = leftover; + } + + let len = bytes.len() - rem.len(); + let (rem, args) = take(len)(bytes)?; + + // take all bytes as there must not be more data after the arguments + // returning an empty remain data. NOTE: we use take(bytes.len()), to offset + // the remainder bytes as it is used to set the tx.remainder, which is use + // to calculate the last_tx_block during the transaction signing process + Ok((rem, Self(args))) + } + + pub fn num_args(&self) -> Result { + be_u32::<_, ParserError>(self.0) + .map(|res| res.1) + .map_err(|_| ParserError::UnexpectedError) + } + + pub fn argument_at(&self, at: usize) -> Result, ParserError> { + check_canary!(); + + let mut idx = 0; + let num_args = self.num_args()?; + + // skip the first 4-bytes + let mut leftover = &self.0[4..]; + + while idx < num_args as usize { + let (bytes, value) = Value::from_bytes::(leftover) + .map_err(|_| ParserError::InvalidArgumentId)?; + + leftover = bytes; + if idx == at { + return Ok(value); + } + idx += 1; + } + Err(ParserError::DisplayIdxOutOfRange) + } +} diff --git a/app/rust/src/parser/transaction_payload/contract_call.rs b/app/rust/src/parser/transaction_payload/contract_call.rs new file mode 100644 index 00000000..e8aa51dc --- /dev/null +++ b/app/rust/src/parser/transaction_payload/contract_call.rs @@ -0,0 +1,302 @@ +use core::fmt::Write; + +use nom::{bytes::complete::take, sequence::tuple}; +use numtoa::NumToA; + +use crate::{ + check_canary, + parser::{ + c32, transaction_payload::arguments::Arguments, ApduPanic, ClarityName, ContractName, + ParserError, PrincipalData, StacksAddress, ValueId, C32_ENCODED_ADDRS_LENGTH, HASH160_LEN, + }, + zxformat, +}; + +pub const MAX_STRING_ASCII_TO_SHOW: usize = 60; +// The items in contract_call transactions are +// contract_address, contract_name and function_name +pub const CONTRACT_CALL_BASE_ITEMS: u8 = 3; +/// A transaction that calls into a smart contract +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct TransactionContractCall<'a>(&'a [u8]); + +impl<'a> TransactionContractCall<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { + let (rem, _) = StacksAddress::from_bytes(bytes)?; + // get contract name and function name. + let (rem, _) = tuple(( + ContractName::from_bytes, + ClarityName::from_bytes, + Arguments::from_bytes, + ))(rem)?; + + let len = bytes.len() - rem.len(); + let (rem, data) = take(len)(bytes)?; + + check_canary!(); + + Ok((rem, Self(data))) + } + + pub fn contract_name(&'a self) -> Result, ParserError> { + let at = HASH160_LEN + 1; + ContractName::from_bytes(&self.0[at..]) + .map(|(_, name)| name) + .map_err(|e| e.into()) + } + + pub fn function_name(&self) -> Result<&[u8], ParserError> { + ContractName::from_bytes(&self.0[(HASH160_LEN + 1)..]) + .and_then(|b| ClarityName::from_bytes(b.0)) + .map(|res| (res.1).0) + .map_err(|_| ParserError::UnexpectedError) + } + + pub fn function_args(&self) -> Result, ParserError> { + ContractName::from_bytes(&self.0[(HASH160_LEN + 1)..]) + .and_then(|b| ClarityName::from_bytes(b.0)) + .and_then(|c| Arguments::from_bytes(c.0)) + .map(|res| res.1) + .map_err(|_| ParserError::InvalidArgumentId) + } + + pub fn num_args(&self) -> Result { + self.function_args().and_then(|args| args.num_args()) + } + + #[inline(never)] + pub fn contract_address( + &self, + ) -> Result, ParserError> { + let version = self.0[0]; + c32::c32_address(version, &self.0[1..21]) + } + + // change label if it is a stacking contract call + fn label_stacking_value(&self, key: &mut [u8]) -> Result<(), ParserError> { + let addr = self.contract_address()?; + let addr = addr.as_ref(); + let contract_name = self.contract_name()?; + if (addr == "SP000000000000000000002Q6VF78".as_bytes() + || addr == "ST000000000000000000002AMW42H".as_bytes()) + && contract_name.name() == "pox".as_bytes() + { + let name = self.function_name()?; + if name == "stack-stx".as_bytes() { + key.iter_mut().for_each(|v| *v = 0); + let mut writer = zxformat::Writer::new(key); + writer + .write_str("stacked uSTX") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + } else if name == "delegate-stx".as_bytes() { + key.iter_mut().for_each(|v| *v = 0); + let mut writer = zxformat::Writer::new(key); + writer + .write_str("delegated uSTX") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + } + } + Ok(()) + } + + fn get_contract_call_args( + &'a self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + if display_idx < CONTRACT_CALL_BASE_ITEMS { + return Err(ParserError::DisplayIdxOutOfRange); + } + let arg_num = display_idx - CONTRACT_CALL_BASE_ITEMS; + + let args = self.function_args()?; + + let value = args.argument_at(arg_num as _)?; + + { + let mut writer_key = zxformat::Writer::new(out_key); + let mut arg_num_buff = [0u8; 3]; + let arg_num_str = arg_num.numtoa_str(10, &mut arg_num_buff); + + writer_key + .write_str("arg") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + writer_key + .write_str(arg_num_str) + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + } + + // return the value content including the valueID + let payload = value.payload(); + + match value.value_id() { + ValueId::Int => { + let value = value.int().ok_or(ParserError::UnexpectedError)?; + let mut buff = [0u8; 39]; + + zxformat::pageString( + out_value, + value.numtoa_str(10, &mut buff).as_bytes(), + page_idx, + ) + } + ValueId::UInt => { + let value = value.uint().ok_or(ParserError::UnexpectedError)?; + let mut buff = [0u8; 39]; + + if arg_num == 0 { + self.label_stacking_value(out_key)?; + } + + zxformat::pageString( + out_value, + value.numtoa_str(10, &mut buff).as_bytes(), + page_idx, + ) + } + ValueId::BoolTrue => { + zxformat::pageString(out_value, "is bool: true".as_bytes(), page_idx) + } + ValueId::BoolFalse => { + zxformat::pageString(out_value, "is bool: false".as_bytes(), page_idx) + } + ValueId::OptionalNone => { + zxformat::pageString(out_value, "is Option: None".as_bytes(), page_idx) + } + ValueId::OptionalSome => { + zxformat::pageString(out_value, "is Option: Some".as_bytes(), page_idx) + } + ValueId::ResponseOk => { + zxformat::pageString(out_value, "is Result: Ok".as_bytes(), page_idx) + } + ValueId::ResponseErr => { + zxformat::pageString(out_value, "is Result: Err".as_bytes(), page_idx) + } + ValueId::StandardPrincipal => { + let (_, principal) = PrincipalData::standard_from_bytes(payload)?; + let address = principal.encoded_address()?; + zxformat::pageString(out_value, &address[0..address.len()], page_idx) + } + ValueId::ContractPrincipal => { + // holds principal_encoded address + '.' + contract_name + let mut data = [0; C32_ENCODED_ADDRS_LENGTH + ClarityName::MAX_LEN as usize + 1]; + + let (_, principal) = PrincipalData::contract_principal_from_bytes(payload)?; + let address = principal.encoded_address()?; + + // should not fail as this was parsed in previous step + let contract_name = principal.contract_name().apdu_unwrap(); + + data.get_mut(..address.len()) + .apdu_unwrap() + .copy_from_slice(&address[0..address.len()]); + + data[address.len()] = b'.'; + let len = address.len() + 1; + + // wont panic as we reserved enough space. + data.get_mut(len..len + contract_name.len()) + .apdu_unwrap() + .copy_from_slice(contract_name.name()); + + zxformat::pageString(out_value, &data[0..len + contract_name.len()], page_idx) + } + ValueId::Buffer => zxformat::pageString(out_value, "is Buffer".as_bytes(), page_idx), + ValueId::List => zxformat::pageString(out_value, "is List".as_bytes(), page_idx), + ValueId::Tuple => zxformat::pageString(out_value, "is Tuple".as_bytes(), page_idx), + ValueId::StringAscii => { + // 4 bytes encode the length of the string + let len = if payload.len() - 4 > MAX_STRING_ASCII_TO_SHOW { + MAX_STRING_ASCII_TO_SHOW + } else { + payload.len() + }; + zxformat::pageString( + out_value, + &payload[4..len], // omit the first 4-bytes as they are the string length + page_idx, + ) + } + + ValueId::StringUtf8 => { + zxformat::pageString(out_value, "is StringUtf8".as_bytes(), page_idx) + } + } + } + + pub fn num_items(&self) -> Result { + // contract-address, contract-name, function-name + // + the number of arguments + let num_args = self.num_args()? as u8; + num_args + .checked_add(CONTRACT_CALL_BASE_ITEMS) + .ok_or(ParserError::ValueOutOfRange) + } + + fn get_base_items( + &self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + if display_idx > CONTRACT_CALL_BASE_ITEMS { + return Err(ParserError::DisplayIdxOutOfRange); + } + let mut writer_key = zxformat::Writer::new(out_key); + match display_idx { + // Contract-address + 0 => { + writer_key + .write_str("Contract address") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + let address = self.contract_address()?; + check_canary!(); + zxformat::pageString(out_value, address.as_ref(), page_idx) + } + // Contract.name + 1 => { + writer_key + .write_str("Contract name") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + let name = self.contract_name()?; + check_canary!(); + zxformat::pageString(out_value, name.name(), page_idx) + } + // Function-name + 2 => { + writer_key + .write_str("Function name") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + let name = self.function_name()?; + check_canary!(); + zxformat::pageString(out_value, name, page_idx) + } + _ => Err(ParserError::DisplayIdxOutOfRange), + } + } + + pub fn get_contract_call_items( + &self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + // display_idx was already normalize + if display_idx < CONTRACT_CALL_BASE_ITEMS { + self.get_base_items(display_idx, out_key, out_value, page_idx) + } else { + self.get_contract_call_args(display_idx, out_key, out_value, page_idx) + } + } + + pub fn raw_data(&self) -> &'a [u8] { + self.0 + } +} diff --git a/app/rust/src/parser/transaction_payload/smart_contract.rs b/app/rust/src/parser/transaction_payload/smart_contract.rs new file mode 100644 index 00000000..c04ea40f --- /dev/null +++ b/app/rust/src/parser/transaction_payload/smart_contract.rs @@ -0,0 +1,74 @@ +use core::fmt::Write; + +use nom::{ + bytes::complete::take, + combinator::{flat_map, map}, + number::complete::{be_u32, be_u8}, + sequence::tuple, +}; + +use crate::{ + check_canary, + parser::{ContractName, ParserError}, + zxformat, +}; + +/// A transaction that instantiates a smart contract +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct TransactionSmartContract<'a>(&'a [u8]); + +impl<'a> TransactionSmartContract<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> Result<(&[u8], Self), ParserError> { + check_canary!(); + + // len prefixed contract name + // len prefixed contract code + let parse_length_1_byte = map(be_u8, |length| std::cmp::min(length, 128u8) as usize); + let parse_length_4_bytes = flat_map(be_u32, take); + + let mut parser = tuple((flat_map(parse_length_1_byte, take), parse_length_4_bytes)); + let (_, (name, code)) = parser(bytes)?; + + // 1-byte name_len, name, 4-byte code_len, code + let total_length = 1 + name.len() + 4 + code.len(); + let (rem, res) = take(total_length)(bytes)?; + + Ok((rem, Self(res))) + } + + pub fn contract_name(&'a self) -> Result, ParserError> { + ContractName::from_bytes(self.0) + .map(|(_, res)| res) + .map_err(|e| e.into()) + } + + #[inline(never)] + pub fn get_contract_items( + &self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + let mut writer_key = zxformat::Writer::new(out_key); + + match display_idx { + 0 => { + writer_key + .write_str("Contract Name") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + check_canary!(); + let name = self.contract_name()?; + zxformat::pageString(out_value, name.name(), page_idx) + } + _ => Err(ParserError::ValueOutOfRange), + } + } + + pub fn raw_data(&self) -> &'a [u8] { + self.0 + } +} diff --git a/app/rust/src/parser/transaction_payload/token_transfer.rs b/app/rust/src/parser/transaction_payload/token_transfer.rs new file mode 100644 index 00000000..83e0d3b2 --- /dev/null +++ b/app/rust/src/parser/transaction_payload/token_transfer.rs @@ -0,0 +1,139 @@ +use core::fmt::Write; + +use arrayvec::ArrayVec; +use nom::{ + bytes::complete::take, + number::complete::{be_u64, le_u8}, +}; + +use crate::{ + check_canary, + parser::{ + c32, ApduPanic, ParserError, PrincipalData, AMOUNT_LEN, C32_ENCODED_ADDRS_LENGTH, MEMO_LEN, + }, + zxformat, +}; + +#[repr(u8)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub enum TokenTranferPrincipal { + Standard = 0x05, + Contract = 0x06, +} + +impl TokenTranferPrincipal { + fn from_u8(v: u8) -> Result { + match v { + 5 => Ok(Self::Standard), + 6 => Ok(Self::Contract), + _ => Err(ParserError::InvalidTokenTransferPrincipal), + } + } +} + +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct StxTokenTransfer<'a>(&'a [u8]); + +impl<'a> StxTokenTransfer<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { + let id = le_u8(bytes)?; + let (raw, _) = match TokenTranferPrincipal::from_u8(id.1)? { + TokenTranferPrincipal::Standard => PrincipalData::standard_from_bytes(id.0)?, + TokenTranferPrincipal::Contract => PrincipalData::contract_principal_from_bytes(id.0)?, + }; + // Besides principal we take 34-bytes being the MEMO message + 8-bytes amount of stx + let len = bytes.len() - raw.len() + MEMO_LEN + AMOUNT_LEN; + let (raw, data) = take(len)(bytes)?; + Ok((raw, Self(data))) + } + + pub fn memo(&self) -> &[u8] { + let at = self.0.len() - MEMO_LEN; + // safe to unwrap as parser checked for proper len + self.0.get(at..).apdu_unwrap() + } + + pub fn amount(&self) -> Result { + let at = self.0.len() - MEMO_LEN - AMOUNT_LEN; + let amount = self.0.get(at..).ok_or(ParserError::NoData)?; + be_u64::<_, ParserError>(amount) + .map(|res| res.1) + .map_err(|_| ParserError::UnexpectedBufferEnd) + } + + pub fn raw_address(&self) -> &[u8] { + // Skips the principal-id and hash_mode + // is valid as this was check by the parser + // safe to unwrap as this was checked at parsing + self.0.get(2..22).apdu_unwrap() + } + + pub fn encoded_address( + &self, + ) -> Result, ParserError> { + // Skips the principal-id at [0] and uses hash_mode and the follow 20-bytes + let version = self.0.get(1).ok_or(ParserError::NoData)?; + c32::c32_address( + *version, + self.0.get(2..22).ok_or(ParserError::InvalidAddress)?, + ) + } + + pub fn amount_stx(&self) -> Result, ParserError> { + let mut output = ArrayVec::from([0u8; zxformat::MAX_STR_BUFF_LEN]); + let amount = self.amount()?; + let len = zxformat::u64_to_str(output.as_mut(), amount)?.len(); + unsafe { + output.set_len(len); + } + check_canary!(); + Ok(output) + } + + pub fn get_token_transfer_items( + &self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + let mut writer_key = zxformat::Writer::new(out_key); + + match display_idx { + // Fomatting the amount in stx + 0 => { + writer_key + .write_str("Amount uSTX") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + let amount = self.amount_stx()?; + check_canary!(); + zxformat::pageString(out_value, amount.as_ref(), page_idx) + } + // Recipient address + 1 => { + writer_key + .write_str("To") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + let recipient = self.encoded_address()?; + check_canary!(); + zxformat::pageString(out_value, recipient.as_ref(), page_idx) + } + 2 => { + writer_key + .write_str("Memo") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + check_canary!(); + zxformat::pageString(out_value, self.memo(), page_idx) + } + _ => Err(ParserError::DisplayIdxOutOfRange), + } + } + + pub fn raw_data(&self) -> &'a [u8] { + self.0 + } +} diff --git a/app/rust/src/parser/transaction_payload/versioned_contract.rs b/app/rust/src/parser/transaction_payload/versioned_contract.rs new file mode 100644 index 00000000..97589d61 --- /dev/null +++ b/app/rust/src/parser/transaction_payload/versioned_contract.rs @@ -0,0 +1,82 @@ +use core::fmt::Write; + +use nom::{ + branch::alt, + bytes::complete::{tag, take}, + combinator::{flat_map, map}, + number::complete::{be_u32, be_u8}, + sequence::tuple, +}; + +use crate::{ + check_canary, + parser::{ContractName, ParserError}, + zxformat, +}; + +/// A transaction that deploys a versioned smart contract +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct VersionedSmartContract<'a>(&'a [u8]); + +impl<'a> VersionedSmartContract<'a> { + #[inline(never)] + pub fn from_bytes(input: &'a [u8]) -> Result<(&[u8], Self), ParserError> { + check_canary!(); + + // clarity version + // len prefixed contract name + // len prefixed contract code + let parse_tag = alt((tag(&[0x01]), tag(&[0x02]))); + let parse_length_1_byte = map(be_u8, |length| std::cmp::min(length, 128u8) as usize); + let parse_length_4_bytes = flat_map(be_u32, take); + + let mut parser = tuple(( + parse_tag, + flat_map(parse_length_1_byte, take), + parse_length_4_bytes, + )); + let (_, (_, name, code)) = parser(input)?; + + // 1-byte tag, 1-byte name_len, name, 4-byte code_len, code + let total_length = 1 + 1 + name.len() + 4 + code.len(); + let (rem, res) = take(total_length)(input)?; + + Ok((rem, Self(res))) + } + + pub fn contract_name(&'a self) -> Result, ParserError> { + // skip the tag. safe ecause this was checked during parsing + ContractName::from_bytes(&self.0[1..]) + .map(|(_, res)| res) + .map_err(|e| e.into()) + } + + #[inline(never)] + pub fn get_contract_items( + &self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + ) -> Result { + let mut writer_key = zxformat::Writer::new(out_key); + + match display_idx { + 0 => { + writer_key + .write_str("Contract Name") + .map_err(|_| ParserError::UnexpectedBufferEnd)?; + check_canary!(); + let name = self.contract_name()?; + zxformat::pageString(out_value, name.name(), page_idx) + } + _ => Err(ParserError::ValueOutOfRange), + } + } + + pub fn raw_data(&self) -> &'a [u8] { + self.0 + } +} diff --git a/app/rust/src/parser/tx_post_conditions.rs b/app/rust/src/parser/tx_post_conditions.rs new file mode 100644 index 00000000..f1cd8c8c --- /dev/null +++ b/app/rust/src/parser/tx_post_conditions.rs @@ -0,0 +1,169 @@ +use arrayvec::ArrayVec; +use nom::{ + combinator::iterator, + number::complete::{be_u32, le_u8}, +}; + +use crate::{bolos::c_zemu_log_stack, check_canary, parser::TransactionPostCondition}; + +use super::{ParserError, NUM_SUPPORTED_POST_CONDITIONS}; + +#[repr(u8)] +#[derive(Clone, PartialEq, Copy)] +#[cfg_attr(test, derive(Debug))] +pub enum TransactionPostConditionMode { + Allow = 0x01, // allow any other changes not specified + Deny = 0x02, // deny any other changes not specified +} + +impl TransactionPostConditionMode { + #[inline(never)] + fn from_u8(v: u8) -> Option { + match v { + 1 => Some(Self::Allow), + 2 => Some(Self::Deny), + _ => None, + } + } + + #[inline(never)] + fn from_bytes(bytes: &[u8]) -> nom::IResult<&[u8], Self, ParserError> { + let mode = le_u8(bytes)?; + let tx_mode = Self::from_u8(mode.1).ok_or(ParserError::UnexpectedError)?; + check_canary!(); + Ok((mode.0, tx_mode)) + } +} + +#[repr(C)] +#[derive(Clone, PartialEq)] +#[cfg_attr(test, derive(Debug))] +pub struct PostConditions<'a> { + pub(crate) conditions: ArrayVec<[&'a [u8]; NUM_SUPPORTED_POST_CONDITIONS]>, + // The number of items to display to the user + num_items: u8, + // The number of post_conditions in our list + num_conditions: usize, + current_idx: u8, +} + +impl<'a> PostConditions<'a> { + #[inline(never)] + pub fn from_bytes(bytes: &'a [u8]) -> nom::IResult<&[u8], Self, ParserError> { + let (raw, len) = be_u32::<_, ParserError>(bytes)?; + + if len > NUM_SUPPORTED_POST_CONDITIONS as u32 { + return Err(nom::Err::Error(ParserError::ValueOutOfRange)); + } + let mut conditions: ArrayVec<[&'a [u8]; NUM_SUPPORTED_POST_CONDITIONS]> = ArrayVec::new(); + let mut iter = iterator(raw, TransactionPostCondition::read_as_bytes); + iter.take(len as _).enumerate().for_each(|i| { + conditions.push(i.1); + }); + let res = iter.finish()?; + let num_items = Self::get_num_items(&conditions[..len as usize]); + check_canary!(); + Ok(( + res.0, + Self { + conditions, + num_items, + current_idx: 0, + num_conditions: len as usize, + }, + )) + } + + pub fn get_num_items(conditions: &[&[u8]]) -> u8 { + conditions + .iter() + .filter_map(|bytes| TransactionPostCondition::from_bytes(bytes).ok()) + .map(|condition| (condition.1).num_items()) + .sum() + } + + pub fn get_postconditions(&self) -> &[&[u8]] { + self.conditions.as_ref() + } + + pub fn num_conditions(&self) -> usize { + self.num_conditions + } + + #[inline(never)] + fn update_postcondition( + &mut self, + total_items: u8, + display_idx: u8, + ) -> Result { + // map display_idx to our range of items + let in_start = total_items - self.num_items; + let idx = self.map_idx(display_idx, in_start, total_items); + + let limit = self.get_current_limit(); + + // get the current postcondition which is used to + // check if it is time to change to the next/previous postconditions in our list + // and if that is not the case, we use it to get its items + let current_condition = self.current_post_condition()?; + + // before continuing we need to check if the current display_idx + // correspond to the current, next or previous postcondition + // if so, update it + if idx >= (limit + current_condition.num_items()) { + self.current_idx += 1; + // this should not happen + if self.current_idx > self.num_items { + return Err(ParserError::UnexpectedError); + } + } else if idx < limit && idx > 0 { + self.current_idx -= 1; + } + Ok(idx) + } + + #[inline(never)] + pub fn get_items( + &mut self, + display_idx: u8, + out_key: &mut [u8], + out_value: &mut [u8], + page_idx: u8, + num_items: u8, + ) -> Result { + c_zemu_log_stack("PostConditions::get_items\x00"); + + let idx = self.update_postcondition(num_items, display_idx)?; + let current_postcondition = self.current_post_condition()?; + current_postcondition.get_items(idx, out_key, out_value, page_idx) + } + + fn map_idx(&self, display_idx: u8, in_start: u8, in_end: u8) -> u8 { + let slope = self.num_items / (in_end - in_start); + slope * (display_idx - in_start) + } + + fn get_current_limit(&self) -> u8 { + let current = self.current_idx as usize; + self.conditions[..current] + .iter() + .filter_map(|bytes| TransactionPostCondition::from_bytes(bytes).ok()) + .map(|condition| (condition.1).num_items()) + .sum() + } + + fn current_post_condition(&self) -> Result { + let raw_current = self + .conditions + .get(self.current_idx as usize) + .ok_or(ParserError::ValueOutOfRange)?; + + TransactionPostCondition::from_bytes(raw_current) + .map_err(|_| ParserError::PostConditionFailed) + .map(|res| res.1) + } + + pub fn num_items(&self) -> u8 { + self.num_items + } +} diff --git a/app/rust/src/zxformat.rs b/app/rust/src/zxformat.rs index 6f78ea2a..6b133926 100644 --- a/app/rust/src/zxformat.rs +++ b/app/rust/src/zxformat.rs @@ -3,9 +3,7 @@ use core::fmt::{self, Write}; use crate::parser::ParserError; - -#[cfg(not(any(test, fuzzing)))] -use crate::parser::fp_uint64_to_str; +use lexical_core::Number; pub const MAX_STR_BUFF_LEN: usize = 30; @@ -39,59 +37,46 @@ impl<'a> fmt::Write for Writer<'a> { } macro_rules! num_to_str { - ($name: ident, $number: ty) => { - pub fn $name(output: &mut [u8], number: $number) -> Result { - if output.len() < 2 { + // we can use a procedural macro to "attach " the type name to the function name + // but lets do it later. + ($int_type:ty, $_name: ident) => { + pub fn $_name(output: &mut [u8], number: $int_type) -> Result<&mut [u8], ParserError> { + if output.len() < <$int_type>::FORMATTED_SIZE_DECIMAL { return Err(ParserError::UnexpectedBufferEnd); } - let len; - - #[cfg(any(test, fuzzing))] - { - let mut writer = Writer::new(output); - core::write!(writer, "{}", number).map_err(|_| ParserError::UnexpectedBufferEnd)?; + if number == 0 { + output[0] = b'0'; + return Ok(&mut output[..1]); + } - len = writer.offset; + let mut offset = 0; + let mut number = number; + while number != 0 { + let rem = number % 10; + output[offset] = b'0' + rem as u8; + offset += 1; + number /= 10; } - #[cfg(not(any(test, fuzzing)))] - { - // We add this path here because pic issues with the write! trait - // so that it is preferable to use the c implementation when running on - // the device. - unsafe { - len = fp_uint64_to_str( - output.as_mut_ptr() as _, - output.len() as u16, - number as _, - 0, - ) as usize; - } + // swap values + let len = offset; + let mut idx = 0; + while idx < offset { + offset -= 1; + output.swap(idx, offset); + idx += 1; } - Ok(len) + + Ok(&mut output[..len]) } }; } -num_to_str!(u64_to_str, u64); -num_to_str!(i64_to_str, i64); - -/// Fixed point u64 number -/// -/// Converts an u64 number into its fixed point string representation -/// using #decimals padding zeros -/// # Arguments -/// * * `out`: the output buffer where the conversion result is written -/// * `value`: The number to convert to -/// * `decimals`: the number of decimals after the decimal point -/// # Returns -/// The number of bytes written if success or Error otherwise -pub fn fpu64_to_str(out: &mut [u8], value: u64, decimals: u8) -> Result { - let mut temp = [0u8; MAX_STR_BUFF_LEN]; - let len = u64_to_str(temp.as_mut(), value)?; - fpstr_to_str(out, &temp[..len], decimals) -} +num_to_str!(u64, u64_to_str); +num_to_str!(u32, u32_to_str); +num_to_str!(u8, u8_to_str); +num_to_str!(i64, i64_to_str); /// Fixed point u64 number with native/test support /// @@ -105,29 +90,22 @@ pub fn fpu64_to_str(out: &mut [u8], value: u64, decimals: u8) -> Result Result { - let len = fpu64_to_str(out, value, decimals)? as usize; - Ok(len) -} - -/// Fixed point i64 number -/// -/// Converts an u64 number into its fixed point string representation -/// using decimals padding zeros -/// # Arguments -/// * * `out`: the output buffer where the conversion result is written -/// * `value`: The number to convert to -/// * `decimals`: the number of decimals after the decimal point -/// # Returns -/// The number of bytes written if success or Error otherwise -pub fn fpi64_to_str(out: &mut [u8], value: i64, decimals: u8) -> Result { - let mut temp = [0u8; MAX_STR_BUFF_LEN]; - let len = i64_to_str(temp.as_mut(), value)?; - fpstr_to_str(out, &temp[..len], decimals) +pub fn fpu64_to_str(out: &mut [u8], value: u64, decimals: u8) -> Result { + #[cfg(any(test, fuzzing))] + { + let mut temp = [0u8; u64::FORMATTED_SIZE_DECIMAL]; + let value = u64_to_str(temp.as_mut(), value)?; + fpstr_to_str(out, value, decimals) + } + #[cfg(not(any(test, fuzzing)))] + unsafe { + Ok(crate::parser::fp_uint64_to_str( + out.as_mut_ptr() as *mut i8, + out.len() as u16, + value, + decimals, + ) as usize) + } } pub(crate) fn fpstr_to_str( @@ -177,8 +155,11 @@ pub(crate) fn fpstr_to_str( } let fp = in_len - decimals as usize; - let left = str.get(0..fp).unwrap(); - let right = str.get(fp..in_len).unwrap(); + let left = str.get(0..fp).ok_or(ParserError::UnexpectedBufferEnd)?; + let right = str + .get(fp..in_len) + .ok_or(ParserError::UnexpectedBufferEnd)?; + write!(&mut writer, "{}.{}", left, right) .map(|_| writer.offset) .map_err(|_| ParserError::UnexpectedBufferEnd) @@ -226,61 +207,12 @@ mod test { #[test] fn test_u64_to_str() { - let mut output = [0u8; 10]; - assert!(u64_to_str(output.as_mut(), 125_550).is_ok()); - assert_eq!(&output[..6], b"125550"); - // overflow - assert!(u64_to_str(output.as_mut(), 12_521_547_982).is_err()); - } - - #[test] - fn test_i64_to_str() { - let mut output = [0u8; 10]; - assert!(i64_to_str(output.as_mut(), -125_550).is_ok()); - assert_eq!(&output[..7], b"-125550"); + let mut output = [0u8; u64::FORMATTED_SIZE_DECIMAL]; + let value = u64_to_str(output.as_mut(), 125_550).unwrap(); + std::println!("value: {}", core::str::from_utf8(value).unwrap()); + assert_eq!(&value, b"125550"); // overflow - assert!(i64_to_str(output.as_mut(), -1_234_567_890).is_err()); - } - - #[test] - fn test_fpi64_8decimals() { - let mut output = [0u8; 15]; - let len = fpi64_to_str(output.as_mut(), -1_234_567, 8).unwrap(); - let result = core::str::from_utf8(&output[..len]).unwrap(); - assert_eq!(result, "-0.01234567"); - } - - #[test] - fn test_fpi64_10decimals() { - let mut output = [0u8; 15]; - // With 10 decimals - let len = fpi64_to_str(output.as_mut(), -1_234_567, 10).unwrap(); - let result = core::str::from_utf8(&output[..len]).unwrap(); - assert_eq!(result, "-0.0001234567"); - } - - #[test] - fn test_fpi64_0decimals() { - let mut output = [0u8; 15]; - let len = fpi64_to_str(output.as_mut(), -1_234_567, 0).unwrap(); - let result = core::str::from_utf8(&output[..len]).unwrap(); - assert_eq!(result, "-1234567"); - } - - #[test] - fn test_fpi64_4decimals() { - let mut output = [0u8; 15]; - let len = fpi64_to_str(output.as_mut(), -1_234_567, 4).unwrap(); - let result = core::str::from_utf8(&output[..len]).unwrap(); - assert_eq!(result, "-123.4567"); - } - - #[test] - fn test_fpi64_overflow() { - let mut output = [0u8; 5]; - // overflow wit zero decimals - let result = fpi64_to_str(output.as_mut(), -102_123_456, 0); - assert!(result.is_err()); + assert!(u64_to_str(&mut output[..10], 12_521_547_982).is_err()); } #[test] diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index 33f5c38d..0172a430 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit 33f5c38d8153534cf572d1ca7a7e09be7d55058b +Subproject commit 0172a430279045bfd5103e51d3975a3fbb9dc4b4 diff --git a/tests_zemu/snapshots/fl-call_with_string_args/00002.png b/tests_zemu/snapshots/fl-call_with_string_args/00002.png index 9767177add1dbeea3e1c049dcb64ad444090b3ec..351e0432d484f66315ae687e136fd03a70ade025 100644 GIT binary patch delta 1928 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 Ri$VYZ002ovPDHLkV1ic=4yFJA diff --git a/tests_zemu/snapshots/fl-call_with_string_args/00003.png b/tests_zemu/snapshots/fl-call_with_string_args/00003.png index f581eeec55a51837d193d6bdf298782d8d9182f7..898907cc7a7784a6294d4b5a4f6e46d2be3f5932 100644 GIT binary patch delta 2016 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 A-2eap diff --git a/tests_zemu/snapshots/fl-contract_call_long_args/00000.png b/tests_zemu/snapshots/fl-contract_call_long_args/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e24a40d7ecd209a20cd49c8508e5823da8b44fdb GIT binary patch literal 8851 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-contract_call_long_args/00002.png b/tests_zemu/snapshots/fl-contract_call_long_args/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..c80edadb5ec08132dc9fdae134e2ee82b8b3f203 GIT binary patch literal 16903 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 HoD!M<4qh20 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-contract_call_long_args/00005.png b/tests_zemu/snapshots/fl-contract_call_long_args/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..b41fcc297b17fc313d138fee88ba2c7ffe5f5746 GIT binary patch literal 6681 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-contract_call_long_args/00006.png b/tests_zemu/snapshots/fl-contract_call_long_args/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..639a00386a9a7ee4d2ef9bf3f3b34cd09aa97223 GIT binary patch literal 9530 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 XZa3V${G@<8Q6Mv8E2Bn(yGj26R}@@F literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-contract_call_long_args/00007.png b/tests_zemu/snapshots/fl-contract_call_long_args/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..25476f9e10849ebf2c5ff8b7b609741ce23675e6 GIT binary patch literal 12845 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 diff --git a/tests_zemu/snapshots/fl-mainmenu/00002.png b/tests_zemu/snapshots/fl-mainmenu/00002.png index 2729ed9f41f64fda1f62345f1dfa4cac047b7f78..b959b8183e5de4be63012b475fb59a29e6ab7427 100644 GIT binary patch delta 42 xcmX@FdtP@#H~-`Z{OdM%^WSIQEFrR(N#ycG^UaZ4Os+5hfv2mV%Q~loCIE(a5RU)= delta 42 xcmX@FdtP@#H~(f!f&0vp69m_7mJnIYByvW`eDfndmpBF>@O1TaS?83{1OQt14z~aR diff --git a/tests_zemu/snapshots/fl-mainmenu/00003.png b/tests_zemu/snapshots/fl-mainmenu/00003.png index 5fd9d2b40ed4cdc03a666de3fa237f1045880aa3..2b93e7056bb1d5a43246fd96976c2f6ac770edb9 100644 GIT binary patch delta 42 xcmdm`w@YusH~z^5g6lSa^)w5K906 diff --git a/tests_zemu/snapshots/fl-mainmenu/00004.png b/tests_zemu/snapshots/fl-mainmenu/00004.png index 8da83c6cbd9a6a6404164bf1f155650f9032c71e..bb07351a8e04186314dbf5469cc0bf8946eadd99 100644 GIT binary patch delta 6640 zcma)gc{o&U`2SdkLf%NSS1PiF$vU$(Bm5 zu@44gO$^2~qnWWy!}rwn`~CC%>wB*2xz2N4&$*xTocrAO=l*=|`s?Es|DIKn&$YN_ zax*-SGDpd-gc9SI2Cy}}@2$Fz*KsRz{Qq0*@gi;&j+Zu)Tq_YWFa0yn4)Er%6CmRw zCLAaosW9x^I?@??1|;_+J=Rc4h(vc%4287}cieqP@WVr3_}xw_D@Ll%&%rlqkAAdwWQQH9#P#d!Fr65=iJpPL z9IE;6mMY`wvz{0GpeZwL8|_*XxCVd92I$bS@p)Veoun(1ik+)P78_&CknH*c zovc1jr+9ZC>Kr93GA{}aT)I&lj2hvQH}rB114%nkCYr82Og}te*&0o9%!TH6KKDsc z@1d|dNfB)OoAA=q9h4E@lOB(}i__W{Wjnw=sk@uURDE;I7WgKbSJL7Lw|CExXI5emW3a_WSCMtVls60YrtQ{e-9Pjs)gnTYtl*xvwxcaKr@Ito%TO|Ksrwm#Y|A?-o26Fb;2jm{Fy?^sw9R;EKtJ+Gz2<1=@hJ}9pw`>p%5cT9 zBQ|>EdGTHwbb0GFLLVLaxVK}gEaSa}&%%lELw_TK*;kUORWvB|VcX_TR22LQDz#Q2 zsdq^j6To%yRAuErQ3nJ@IU3)2bIs^;eW(ai!8jz^DFc(wb&?BvM-|h`B`jLMD&>ioQc{gKX;V>_FZvveyOY!f3rNkEeOKO|j(a7KIw#LNDXS8%#tY8DCzi&S+=suCl*i=3qkm}P?I2BZ%Q;qyF(;VQ}>PUHc z+Ji_DdnDBtxx9Gogtu`kiX7xmV+PE7^DUlMQl7FkLsuTq=snED^Q)_hrO;vgas^YB z_3oTNuQIMd*$O{?3a2ji$+AL@uUO$>WD*#wgWkk_nYw=^3M=DPUT!$Ef(O5Fa3V>< zzpmL{*5MwsAjKT|qo?B74(gM#_YP0!dQ?$jz8kU@6F;YI{_xiiDeo(+69eD%X@2+N zOo`E}g3>Wt)wu)dsEiQIAkt(uKBEC2@@up6uM0&$paEI!d(G}U!^#@HGU3=dFm)pW z{p;LvbLUTJ7ja|nbUFUNjI$o>R4WoIL1!)i8#|-5ia_9W yf1prW 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 delta 6456 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 O4_j-b74gE2l>Y%=(+)ZS diff --git a/tests_zemu/snapshots/fl-multisigTest/00000.png b/tests_zemu/snapshots/fl-multisigTest/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 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 delta 2001 zcmV;?2QK)qd$W6xBmsJ{CH*uBr>1G@y8iW7uahe^HGff-W!tuG+sav;B*`}0t?Rld z3RNhH<9OatYMQ1fia3trI9}^3`3R@eDF^~}M->Et&u7JJ1oYR}m*u}<81DD`y> zdESlV%bm2R)9EGZI$om$t%PByqO)yVy}r0@+pn*$%jGhAAtynl54pM3G(6WM@bqnhWrGNf~OO&HuETEGlF=`&Fs`~o+ zlJl&ps;a7%oX}E(wsbG?RIifGf%b5vyOYP`QEK+evV3%LAq>MMFPGwH9LG)5yjD5G z|BQaIfbNpW{`~xuUx!K@bzRHZ6NaJXA%-dlL{Zdx);g|7*Zhcn=>KioR{pF0qOLJR z`+oq77fRzGGfAK$GeDhlA90Wm-;%$`P#P<twRFq}p9NX=7QiPvz#8grJ z7aZ-t+j8{ze7<{6?QNQ--T&%ArhmU3m6&lH8!u7+(pPx9-PC$cr_=29-0yew^$5f8 zcDw1DQ2)|j^8Nj-HhnxECmfn*^Wpr_E2CcP=nc8uZfTmPX{w)xc3GCCX_{r(q_xSb zW*oHd?{8VBege#1n?HOzmtL#{trup4AgJrQsw!3ErZ(Rry`vp6lPU=n*%l+1L4yHtdy4VlJr3Ca^ zZQxX?<#!x#gOSnCeUHE7A%9_#B)8j5k4shTZJOr4j`#QX?vlM`tVb`=ukq&ahe-dF zAPA1fqx<=z9t;jGpvo5Zv)z$g4?G`p<9B$yfIj}v|0qw}^uM^Di1uQ|jPRUB!Ws(;fW%d+?PcZtP3 z&yCY1iXv4zVQ<=LZ-qKzJ?bT^lvZFTpSv35H+b3mZq>>@P1DsI@T^t2p&CAiVc30s zBU`EKTK<(J$;;hD`u0fU#R6I<*KqkxN=tkFXsQCp!bX}i)}u~J=_S}L3Q@#f*DuKE zq9`Qzq-FHfm&++&R=vz7muUN&Q)7yKh$~&RXjNXx4 z+P0Oi#AqRR#(MOVvU}6L+wI=p-{0TgjShrZV!z+NZe2%NmQt&$4<|o~-gv2Z0afgs zyN~~0ILugP`L?#?VLAuF>$ii}s~wF0>V;puG4lO>*E3Z8aeuTOwBvg2T07_<2rie4 z`n%rFL~pXHw}VcSWby%e9M>#CugijAHV7I^HZL8 z8)b0)B~s#0V}J6!y}boNaJgI{w`Ef6VOw=Rz|B_P#v;+xeQ#k2Nbr--=^VUz9kkG& zddrZ|>R(xwU9Z<}!9g&dcAy4ZI2_IA5Y!I~yWOtW>-Bp5{{9|XKphs#7zm^5>3zxNaxv4CVtw?ACY^GBlehKGy5CU6;b^oXPj98<(kW}wrrlpfNoN(WRoAh)6=%Eu zm0qCi90bAdsNz^fUDx{D;hfyRz@M$_fZeO4bMQMJ60SmTl`NxwJ#lBSmOoyOM%N3a zb3h5YD~h5eQ-i}dMmhQw=by$}^qDmLPv?MuRvlDJewR5`@LE(xACE`wjs7xe=n}k0 jItM}UpLArC>pZa(^BWH#Q--()00000NkvXXu0mjfzB)U! diff --git a/tests_zemu/snapshots/fl-order_independent_multisigTest/00000.png b/tests_zemu/snapshots/fl-order_independent_multisigTest/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 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 delta 2001 zcmV;?2QK)qd$W6xBmsJ{CH*uBr>1G@y8iW7uahe^HGff-W!tuG+sav;B*`}0t?Rld z3RNhH<9OatYMQ1fia3trI9}^3`3R@eDF^~}M->Et&u7JJ1oYR}m*u}<81DD`y> zdESlV%bm2R)9EGZI$om$t%PByqO)yVy}r0@+pn*$%jGhAAtynl54pM3G(6WM@bqnhWrGNf~OO&HuETEGlF=`&Fs`~o+ zlJl&ps;a7%oX}E(wsbG?RIifGf%b5vyOYP`QEK+evV3%LAq>MMFPGwH9LG)5yjD5G z|BQaIfbNpW{`~xuUx!K@bzRHZ6NaJXA%-dlL{Zdx);g|7*Zhcn=>KioR{pF0qOLJR z`+oq77fRzGGfAK$GeDhlA90Wm-;%$`P#P<twRFq}p9NX=7QiPvz#8grJ z7aZ-t+j8{ze7<{6?QNQ--T&%ArhmU3m6&lH8!u7+(pPx9-PC$cr_=29-0yew^$5f8 zcDw1DQ2)|j^8Nj-HhnxECmfn*^Wpr_E2CcP=nc8uZfTmPX{w)xc3GCCX_{r(q_xSb zW*oHd?{8VBege#1n?HOzmtL#{trup4AgJrQsw!3ErZ(Rry`vp6lPU=n*%l+1L4yHtdy4VlJr3Ca^ zZQxX?<#!x#gOSnCeUHE7A%9_#B)8j5k4shTZJOr4j`#QX?vlM`tVb`=ukq&ahe-dF zAPA1fqx<=z9t;jGpvo5Zv)z$g4?G`p<9B$yfIj}v|0qw}^uM^Di1uQ|jPRUB!Ws(;fW%d+?PcZtP3 z&yCY1iXv4zVQ<=LZ-qKzJ?bT^lvZFTpSv35H+b3mZq>>@P1DsI@T^t2p&CAiVc30s zBU`EKTK<(J$;;hD`u0fU#R6I<*KqkxN=tkFXsQCp!bX}i)}u~J=_S}L3Q@#f*DuKE zq9`Qzq-FHfm&++&R=vz7muUN&Q)7yKh$~&RXjNXx4 z+P0Oi#AqRR#(MOVvU}6L+wI=p-{0TgjShrZV!z+NZe2%NmQt&$4<|o~-gv2Z0afgs zyN~~0ILugP`L?#?VLAuF>$ii}s~wF0>V;puG4lO>*E3Z8aeuTOwBvg2T07_<2rie4 z`n%rFL~pXHw}VcSWby%e9M>#CugijAHV7I^HZL8 z8)b0)B~s#0V}J6!y}boNaJgI{w`Ef6VOw=Rz|B_P#v;+xeQ#k2Nbr--=^VUz9kkG& zddrZ|>R(xwU9Z<}!9g&dcAy4ZI2_IA5Y!I~yWOtW>-Bp5{{9|XKphs#7zm^5>3zxNaxv4CVtw?ACY^GBlehKGy5CU6;b^oXPj98<(kW}wrrlpfNoN(WRoAh)6=%Eu zm0qCi90bAdsNz^fUDx{D;hfyRz@M$_fZeO4bMQMJ60SmTl`NxwJ#lBSmOoyOM%N3a zb3h5YD~h5eQ-i}dMmhQw=by$}^qDmLPv?MuRvlDJewR5`@LE(xACE`wjs7xe=n}k0 jItM}UpLArC>pZa(^BWH#Q--()00000NkvXXu0mjfzB)U! diff --git a/tests_zemu/snapshots/fl-sign-structured_data_big_list_tuple/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_big_list_tuple/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_big_tuple/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_big_tuple/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_empty_list/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_empty_list/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah zq{4T+?MCIB1f%CKxd4nMN4yo{Xs`=q&^Mr5o zjuhs~=+VhUS51EiV1m+rGsIhKDYsL}57`#G)E1wB2l-#k4%iV(aug?OQOC*5vPDll z2Ui2QXy7CVf+%{{a37x)gBXAy^0o#N-=-y|=w(!4s@VXaO9$vyka1$?(_g{47&hH+ zRk|4eGnmwU>*yudDO#$7>+b5*5vlu#U_&NP<7SkuHFmA+8n!}Fc}dYp$HMzqRUcuf z(JFp?qb*1&#xm@qjSfD_SI$m_A^fTCzQRG8?%ZGfwHP1xtmJc3bo~pvWZmC2rk-we zy}h6b&=YSIWiP8ntv)>vspde=OeroN2rpdodDi@DlKXS=L$hVP(hUaPzqyYrmGl5L*~* z`Y!NzVK5r>GLi+fhgD;7>oE%`Lwv(U8dY>}9-a0imx^J_Ny6S2UkOa!1eCo)2Ow+y zbtR#|SS7}1gJMb6iD{?pQpfUwyXRug!q48S=adZbBy-n&hbR<^fBA+^e}<{ARzmxo z%6nExj&WZjEm|+SsxgGaE+^lW&Pt!1VD=;aCe+4@MhZhLa?+*tA7Ktr%NjqBs=UFG zA;sXl%~#{r9=+sJ@{UjN9n==vJICP3?oHFw3#c+wsY}to_q$Wtd=KQbV|bRqt)m@i z_qf~TthS4up?q2TgQM&9oNiNF!c;+HFw_Mr2o797gV3+MP=pF2U6OB>h2{MmGZk9J zLg)WUpR~soY-=TqT_Kp9kQ2IY7 z&t~UAG(7J=uKqyo^8Ce!K0Jd4JE?TFDTA$$o5L?gMPQ*Z)(yz0f^L7^H$t#5R05m} zOL$M*Au$z`DN#~C&)2g{LBG)i=>x3METyGbm^x9l7fWgg@=$XqT?4G$*v9D^3c(c6=V@;K z)$$D(!V{N(eKe!ZueqE5L3MG+?)fl&O-EC+*4oauHcN^H`>ZK2R1H4jbh3;2^#h1RI5EeTCM&zzhdCywit{M&xki@v#Lr0-{@ z0kh{Md(PVRpl2t#k}X<6N^%=Du$~r5=|WF(M(*5<@?4w;4%q$0UXgG;NH$le-frgL zoChM&I;-R1b3I<_cyjG-?#i1=1P~3NVjtVLM1b}`+$}R<_ESz*a|H!gWUWq4Hvdjt zE3)XZa{kem0f-B~-!U|*w?0!NRW-I8J+mc|h(pt?KuR~f1;3S^9n>RsoBR0(`@`mE z(wy2VQ%9;eXp0b19kGUoptD|0JGy#XYx$$%50A93jB@S;)N|@iAWLpf0cNG&rSnE9 z+wb|@K4&!tiPN^iex(%qS;{M^*$uZNz18uxY0-US>bI3i*u8nj4rLi+hDKa=U!sBm z7|uEA0%?HNuzj>**(Hu?_?F`i&jR5YiQkXCw3Zh8##9gto_r|fZ>&c`*LwPxJuU$H zPx!HoxHaLN;Bju7U&8{>?{(tQ&_C2r4@8j`GY+k9bSEOA+IYsKFxHmBun5;>wj59? zsXD!x)jZy-N!P(jPL&I1-FC!reZo1px_O@sg?HL9>y6DSjH{lG!d>Gl*lV{r6}+v| z+|IbiL@i!yjogoAiMZiBADtG5*ULzu@-z1FUXxWJGk+$OW!biE+qUwpj-qIp{nm9| z6oo5F!Z5t=Q)-%~D2gx)!!Uf*Kgpkv=eaS){h~6)X#Q5bMnJFE>xpNBAV|~n`=4@E zRg%uem@Lco`~5c?#B;q$I+tbHFF}f;NRs5IW4dXYP8E6g9wqFWrfHf+?ME$MD5KwD zh@)-W?SFRr_wV0t4o&za^J4XjXxsMh7yUoGUcxJ;a~OtE6uIwVQ4~Kt^Thv%_WS*Q zzrXK?yH<=ZM$Bt4~N6ujazGv$75aBK@h}o{DAJ> zf`RV`dX;o;+g8%KKd`XfZe`HmM{5Q7)_rrFP=Cg+AJ?gcyhI)SVgVgRQD@|#s;c#R zE#I@Ms;a8`&KFun(7xMCJk_hDv++)@^gFrR?PO%HEX$uR7lI)8&da6z48yQ#n%Al` z^k?*o1$3W8_G-0~{~W70>bjP1PY?tXCoxp>#IJ$p81Tn!s9nU*t(i+qSK>HVnhDZ?gHSp#2i~)&eEVGHE1D)6HgcYgeC6 zc}Bl{K%0NZi~HZ^vMjSK>-+=@!!XbD&UdkCn$OQq`P(0&y0slgCSCSlvfJ%kpZ%S> zSIHy#^F^E2N@rtC6h&>@KJZ6dRaG(@#D9O#TAQY+AJcVR`=hRH+q(a}>D;(W_T`5J zA4qdXzr#tw3ES;mq7 zNqs&4S5#S+Zo-_*)sxpYO|#i-{9kGP`Kg0H@2-+qx7NONKpVy94Bw%G?tJsy-)U0w z%HP)7BuV5qV^I|HlJ$ChI-Rb5Deq{fswzK%lOzelP$rzpBb&`e=DJ#Ice|am=C7|8 zYa}TGpGT9HBp`q0bUMXx9LKT$J)D*#NgT&XlHAmqyy}h*?R-8xr{8ceLY&b^jk&p6BkDCcf`o)7jh-4enq+7MBvxkD3GLs+RZoz&kn_{oMEXCMOA_ zC_0@^eq6e;w`rO`Js%$*{VfOG(T-oyKjO{d7m@WT#+co1H~;(NP7IE1;A)HMZ~IJg zJWzhkjrV`>dI7!r;y);7+x$o7e-Wq4iaXkIFX8LE0QXH$b@Kf_S(eF{M@~dPu;mBV z3NrCoE`al>HdW~inmxBOFE+#x$FcibBuVn|@gcF8Wm)IzVy$(f6Vp>Wr)Qzw(T;n` zL#h=_lmGATBERNke|NiC_Hi6Pd;-s-1~=Tq=OBLw`sZ(CFLhnZQ&AMX+>c0Yr!-zH zpnY--mw%Ho)879yT>1c3jC{FV{0wyuUY!R$vz?1K584=WI2_#L{yY%Y@=@b~sJbv3byk!=ZmaXIVUU=JM;#gVr|v*?Hk14iU$35Crn$ zt}IJ`&fI>#mnyYsnvahUx2D#g+C1ktc}F|`^_y0!m7MSH)ZqS0q~dVb?td<~$D{hpgME+N+{YTI_R*`#UeUgEAd{eE+nA4O^HY>av7F=&4$ z&vSRnmF;%xs#Lj>k-NfH|JR=!?XR|fM>|mz`7i0O5jY$Uoqu)yyKqTOK;P=MGTP;W zTaZ0y&IOEuAV`u#uEiluxkJAE{qzY5I%!U4^Xg;J!awURmxOjtB}sBT9{YuZWbXV6 zciquWk|eUkw%^;+>C`_>FTX(ju@QeJf!yb%$D_X^iXwmIs!L}n7hY~qcmc}O*_am@ zgMNt9>2y3EkH_Qrd>-4teJm5#K)Bk@;7bmNLudSY%=ydA#-B^=_vaPIqaWy|uiWpX zcHG(b4nrI>T^-2tXDQ8Dly%dt=f8?d=OJEetmEMxc(?nv^a8cBG3GsnI39nZu516^ z;e5H@z^@(az_eFMXY(E>2_M3rl`L2PdSYkrD8IapM&Apiv!R0Sv(|p+*5J^lQ%Aqz z{ipFL{+%@Rr?VlT9XFGI&OKJ}T3kl&b~}C>{bn-J#k@#58)N>+LZ)YT1Fxzq%UAjS zOkemLzsC!G6R4o^TfEA@N&E%07y2d;lkp2#lkf{M7u5d(lxUxNLMf!m00000NkvXX Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_simple_number/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_simple_number/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_some_tuple/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_some_tuple/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_string/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_string/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign-structured_data_tuple/00000.png b/tests_zemu/snapshots/fl-sign-structured_data_tuple/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00001ah 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 Hu0mjfoZ&B3 diff --git a/tests_zemu/snapshots/fl-sign/00000.png b/tests_zemu/snapshots/fl-sign/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 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 delta 1894 zcmV-s2buVpMwv#ic^U@+rS0=W4qcOg8Z&=+nx@%oHdR$kCX>-<^r_3*Znvw|DmO>Q z~A%ID|j^?H5g47skGOXt;UmD0JYs=BT}wTZCX?ON@}$z*cK7n`PeetvHC=5K#C zo4T$Si^V02_-Sq^qrXEJN7FR(`TXC1|2?y7qTC-2tgM&PG|j(%#Xs%33AdHbyWMU+ zpXYS`0x6!Vs#+`->-BoQULSHi*zI$;vyCb{jLKKj%$U(j;7yotV!+h{>& z>0~OsZknd-FK(LV;o;%+_4VYL*L8pW_V%{jZbzfhbUM92agU+n`+{yOoy&&vWHR}h zm`?TW*dD?ZWa*r>{NiS_Nxdbj)hY*Ha5vG8zOjIwOeU?Khs|d5@bHjo+h()bY&PdK ze#hgnuIF2KTj`uCZBgLX!&aHH=s%kQsZ2!7&5kFJ>jJ|)dfbL3> zeSd$S{<~VOdINg9-R^d~rfEi_(ZEidt5;puy><7%`IL5l)qjmSLxpiP4kH^d9vQ;B@yWM}?-CcTJc2ONWpDYc!?0#jjSmZL73(en3?<^LJP<17~ zTTJKiczlt|(VNZY<>jSS|LeMbdU`5jdb{10{jKSWUwZvvF;b87`9+N;az=lLi-ZH_ z^ZCQWL-(|6yWQU1-R&E_caix#K0e;x-}ipy{{B8+qTy0*F`cU;I~jlWd3kxs1Lo4$ z(=^-inqFR9>ol(S#O?%X#6do23)L{O051W4Z{QdmhW_({QD4*;@G|H=52DvD@uZ6QR{! zP9sCAs(OBYPL0IsZ%-F@RaK9Vk4@7YHTHSHYPCw+|Ld==UrLk29W4Qqlky!Se-^#J zzfY&r>2&(`_IBV`X0zFJI-SjC19L0ubNQ`vD%*0oTrQW3#UjnBcPTfg?AVO3C*D{K zx@^o=Rkhu2^OfbQs>#uTPzmo=9dq9IZl{QS)|2c(K?-+PN(T8{goH% zzptz?Zttd0ms89vUnC`h@wEVci`Qn%W)v7RRxE zaynNENq$zS<_4Z5$F53Xs5`gIEv(ATsQCX-3Z>(rF~ zf+c>Q$H&L=KKSbv=Ehpk)9ExHw`a52uV24XEIvO!x6VZBy3QxR!vj2r$LF6gpZpbh z@dbax}?*1`*LgMy)<2yJ9#N5 z%qO>5(p`exywJqHte>3Gsj>~EaCs5s>V*j|S~^#^*u_yQM}5xc^YYN0!?e80pQRJA zLr#iMm`|DG-4XAPkB`58{rdImSL+5s&QX6pobyNZb(F)FdMCKx{UeW$j}H$I16S!k z>=2JEU^-W~9?;d_ORh;-b;@h{4-XHmJ@)bO@$vET?(Xi_uV2ISKVd%Qqt?p@l~w<} zfn{HN-0-{8{Md|6^|QCyeE#d#uiV@?)U<4$x+gCoU8rMSx!9|>2>#UqleF@ z_bd5%&>v2GTlcxVyu8G$KR@;s@S`f*Ir3fRWe432iJ#8Z_vqp{(1-Q493FJYtyxDc z`tWbvVqFjD2ljO&Ul7g7jpj0PauexXeUC1Vi`Z_r<=+nfAv^Q;_5=GmIK-`_bM>QI z(8J16$@M4y#e2TYk8MY@&yzPIA0iXS(-Yq{vc8#|(N2thxHR0Qx{-9Qba7-C`NN%r g^<|gNlXxPH6dd#KNYbyLEdT%j07*qoM6N<$f}(jk;Q#;t diff --git a/tests_zemu/snapshots/fl-sign_jwt/00001.png b/tests_zemu/snapshots/fl-sign_jwt/00001.png index 12c24c9c737ccdfe8ba5c55c611b077bf21c8ec7..b58243f9774eb96c91170861a49fc21ae8dcee8f 100644 GIT binary patch literal 15583 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 literal 15585 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 O%_q8Q)sO#u{l5S&TRtZM diff --git a/tests_zemu/snapshots/fl-sign_message/00000.png b/tests_zemu/snapshots/fl-sign_message/00000.png index ca12c0651399f154e6dc307dce5d8995ae46c3f1..b3f451fe52c542ff8c8cb87ee32a0c0a9d7dc800 100644 GIT binary patch delta 1986 zcmV;z2R-<`MZ86jBmsl5B~uy)#FRGCPdIv$e;PD@s%e_dW>ZzwWHK3zMxVN@?RL9f zuXBrJJRZ;I^CRZ7+wIot^>{pvzmZp~RaI5%^}4F6)S5nSmA}Sy1oYkA-N2`#(P%!O zpT3pLKFWuOhsVdq6KBX}U1K`0*XxwdRaMn>{i&^l-EP-vLQW==<7SnTZnxX*cDu-V zmt0YQMqfuj4{MqxovpmSzMj(JD0haVYwB^Drn$MfNw3dxu;J>`IWuG+%(PI-QDx^^U*V}>-y#8WxL&uMx*I;dWPbD zgpThsy1H~O8_tu-B)|Stsmh($Nmy>`>v9!;8GU5|J()~eJrA4B=I-t;Rkh7#v)OD; zY5b;6v{OsTMO|Gwr+QmeRbAK1BR9ht^rxcsyRMR;}u|+wFe+`juX>4-gCQmrC6`)`q~4!`ny3EYJBu}XhF9sUw)n1yyFCR&A z)vh<4&tkXRrB*_#y}aA)Qj_rE;UTpXt3N&6RaM>J-#1Nj+}P*bRFBixJW z@9=VIr_*Wo(=y1))yaG5csy=@eI!PPcM++|$#4Q*K#zd)AiA zWxDz0-Cm9(=2I4_HNrHV52mB^S6-?A#(sF)xvHwBX;OXbJ>^Q53eS5dciIOpG8*-> zMQcZ2SwL5Rwpy=p5Og^nqr20Vm-V*W?ZCzBBj!_vb?ZuFRaL9iDxYj}x*wj-RdJ-> z7ndoZ&ou@vH(5gT0DOXfRz_cTHNVM4!pUUv`ubYNWp4KFcDsK%@@;$7-(A>UN6e>e z(Vt`GU`W0&xNm}d+&ar`is^XpV-JU4?D|^J>H0?XcT+lDZ7U}`ye z1yb{{`qPxQ&AZOnP)Gxx)6;LxHP2}7@9)c-;4fR4D+}o9bed~_#%wmbxw%QP`0()1 zsxft4=ab*z(VfGC^N*NM{))%Le}R<9GJ3$dIyZ86|7bMoUc5<5*>1P#qc3-mYm&JcL_0nS~^$P-UnR{`CKd(Wu?iLqxWGhP1CH`>vZ4t@FI?wPgyU!Bi`@t z?{98yZf-BUx&EucS8(8+WFE*P^ zkjimgesViHRng66)2&qbDd(r(_msvy@B8$W+g>g%W;$2b-h!^GYC4_f!}ZhCQ`yMP zVZGb!Zff77fU%!6c-QE5A^(#Nrsr8kz(XrWV z{`>F0|Ni@b?@FKIctJn59i8e@(=@HSy3_sN)i)ipd@fBgsb=YPa}CX-3|mF{fder7v*G#brjv-B*EbX6vw!==|3 zAB_-J9!qG<{tik?5-o`Gn>uQUAEoQzP`S8&o|SJ zvt{Sq&uIXj*UxN6PbQP{w$+@@sjYC0ox)!rcsf^A_0Qwu;}1Fa$qy9Y_nhU_gOOf$ zA2)jVe0slMefzQEr*ri^x;PH>Ze=Y8DjjlP)`u2- z__wZqBA4U)nSC9JXnxmKq;vH>x;V~ayWN(5J6!$#27YE=2k*L;bgq6>3wl^ND*3bj z+&y3BC%2>Nbw%l1X+d|@b$!a81}BUlgYIX9ICaTfuH4C(zz1Q0AZ7{0dyAizqydP Uf}HhZ82|tP07*qoM6N<$f`yG|!vFvP delta 1988 zcmV;#2Rrz@MZHCkBmso6B~uy)1eCVV4>@#`e;PD@r)iqaW>ZzwWHK3zMxVN@?RL9f zuXA%`JRZ;I^CRZ7+wIot^>{qKiY>fat*WY8uh&&orPlOuYyCB@BcSi@?gl;`jYjkN z{Pe9{_EA1OJUl)=o;X7;>*~^ZyrZVW>~_0W`*AXv95<^JbGzMcx7$Sy zyX=a8GWt3KdRWsm>1^fo_4SlSN4Y;7U0ILQG|kP;O?rKngALb}&Z!almDey+JXKY- zTrN-9IPrT4dRpeRn>L9TrSgaz%N_+iQU|(`8*zvce~v+wlLyn^pyp4SBmW0 z+uQWt^?KbK(A(`c)uGX7G_cd=9lNgU-nx6>d`i1N>Oaa)o2E&h=6CWjW?vZ?a9!zt zoXuvlv-GN^)o+?6bz$$T!_}V_^eIDJ9v&XjOy=|X{r&x^MZb{X8GZEuUH#o(+&zpx zJv}`4#^dp7wQAMK-EQ~m*RS+?wOZxjI3Jx)mIhsRzp`8|bD7J9=5M8Umdj0F)M$&frfJ>>y& zY3ym5?QXZbzrQcf&$=U1dr$1%m14cF>u(Uy)!z-WP~)S&Lkqf9|MKh9=1s4E>$;xJ zW_4Ycm&@<&?p|MC->sTQ%xAONlo33e&Bo(#8g`oAxxc@!>v}Sonr)Aa)z(3uX#SJ)#~W^{Qmtr?=x0}r-_q&zDo^s2&+qt$} zF4N5~@Ah&WF`u$XtwE;glrSBozw%=JH};d;&Q(=4O_M5H@A+1`RCwMyxzi4Kk)fzx zAX+>6$^yFjv(6(Q*VorFE_1VYx7+>Gk#F0p{_eu=I$}O$ zi~bxd2YclUgZn1P2d%T*rkIWgKl5045!cs(PM0{UznjwOYFjzk;ni`tadE_a@>f*i zFOXV@)t{!cZQgRmRze#1oF091u6YJ@e}7-z2Y=bZTve__{tKi;meKp1t8*jw^^ZoQ?vHPc;!-MrAmKChpg(W$Zxq;Po=<&*{G z`Lu3)ZOPevjh7IAqos3o?S0VYsL#b>QP!JWKYE|%(lpI_y-xRS4=>_~`IJ?&JL3KR z{{H6X=H}+6bps)%C?C#w$j|z1l*5*KC&=9A9vQln;nyw&Kyn$t36JxX4 z1gRX?<;S+8Q~lg*Hr*PPA8~&AO;2g;^S)0{x$Px_nCVLI_x5%Vc~t8Z^_fBpJ(cX#*e*RT9gr`A`>cE@J3 z`R~8~{`>ELzw3RFQ486SKoKc^0|af=jt1@psP+JI**1o&OQ@nM@|-SGso!v|8e=wa8CT_3YD+`ho4}(P%WA&C;_t(j}RE0+(K2 zd?-R>k<+>Q1}*5Ss#<*r^XI z&X)amKcoS8c0aHkJ(*0(dscHgr-s6nb_#!i;OSgd)jyAqk3Zz}CqGks-*c8z4@P?3 zecb5b^XdIcejfC@6JOVTE>BNSG3(Edy#@S3mF*{spU&0y=;AogyY;mkt8~b%Ssz;T z;orJ{id>HG2ljO&qWKV4kLS43|~jh!8)WD*>J5XOJKAH&(bVIisBz z{cvfxOLZmbT~9ZsQ(3L WtGR;R41z8I00009%d9j^yZHB)x0fwr$&xt-T?Q z{)Q=zuItW!=kuRGeTj_qk z-|zQvW5;dP+p;V-G1sw;9<(5iVeF+UDuI1s}l?7^O+_MX6-Ie#hW-)Nb}c!{t~qWo9IVxOrWzYlV%>Os`~l) zp-NU&RaI3}YBNorO-&_Ol?|zL#MW2TbY3nOn%sLl9&`5?;y9jiJM}=*G;P~ATk(l_$C%Op zENn}EoueqCqBnI5k|Y@?dDNxtx-LnQG)+yFIr`g!=3U^SeU$6mCJf0!hH$?0_BGTk%{pLp%MPW*S!^0-j;q!y=)D^ZESq^P|p=HBGbM?@iu&UY9*=yWrn;zVM|i!EtS3pbU4f1QUNiiL9<)^L#NX8CrN5JZ zBq@r528_4cjc)n*`FXuwy)|;gbE>N15?mBTnx^D!N}n8$M{;yclH_u^(9^{Am&+wu z+>>O}Y*d}?h#Wa;U)#3SSCIP4ZQD}E@Or&cZ;`H{YIZyxsS7{CXrinB1qKhaAAP^y zKfxnXo9DUuEf+GL9ifAMB9kt`1N}6pAcX1Ti)-t z`02~#GQc!z6GHvrlTq8Uo`u)zmFIb$=e#P~DT*S`^P(sQJ&o=fVYm1DP0!?YVD!@h zA+)-*u^u$<%tlevG)+}iV!DmH$2}eo(X&?P)cE>%?=KF04o}kMa*;-nd7jgMTN=UD zyzrHM=jd-Ijz(-Q*V7in$T0Atr9!_uxv3?t;*&Zbq4lFTCeYDet7+j*(A*zGoy6d4 zGELK1mS{#ihl{n^y2`Q?!%Q%pFIMMhh&qV(y-6-fpndtkiH^(H*jylK^tu`Rl10KS z%U-V+mrK#@ZQJ%gh23taUa4h&#B+F$-bd!Z?}GNHL{W6PT->XWSQs>2Ai5X!3hxNL z4?>Q)@f~bWpf7*nAJS?Y|HQo(+WQnEo+EBS-CY1t6M|ZNAIaU82lIP@z`)6iF0mThYs8QPM@#sr!}FK}v; zo5p{hBkh2d z5Zb+=CB)FwIojeB2ZuX}}*fjnhu^H)_>A$rY0jhHpZQl=?PdiB8^3E@J zM*e(0Ttmf&y?)S+&-pMv=qQSw&!_mD`IWT~`?FxfQyfH|=W!g<$nNoYaG$yR{Z75qwrzL2 zo!C&zU7KCrlOvwP<2M}+2U_fw`r!N)>TZabe1HD@iK6KFd?K{oAhtNyL7_9EzjJ7& zA)U*-1jQ=qy6$*?Jf2P`af^sI{bfGOz6iAM97WNl=b!~;S&Ac9&gZk}rBWm#5nf9j z`q8Vt_xU59lVusdMcp9qd_JWn$8#Z+8Uj6(&1tld2C*Sqi%S5bIF5^=pjaIADDl>( zzgPE32#}D~IokRhG{Kj=DI~P`swj%OuGL-xX|8+Jt`X0FDT;#j*Q%*~y+p_$#{=)bj}7#lqbT~0DGo0*O~cO)N6r2Me)C)hu&@<%j=p1&&Z9 zm>A#-^rL~qhSWJi4_YNjk|{@ngV2!r(VIJb8hC`Cq!GS4M-XU%aN~D5V+Cvrq0yJi z1!JS%40*Xk8&T&divFWrOlv0tY?a63v6cE`5Bv=heh(X}3FtwC-@;bfB$%5G)dZ74 cUA7kgAD2&AA&e2Q(f|Me07*qoM6N<$f;XHUIRF3v delta 1998 zcmV;<2Qm2D(E;Ak0gxmCrLiR|U43}Szt4NSa>`hUDtJ8N3}Z3vSog^ zX`0*ZCORc)nvSzl+qSpcEltxjO?@@VIVj6AiXt(hilQjwTCoj*{`vW_d>hB{>2#WI z<*KSkoueqaUa$B2ec}Vbx@<+AACHIH1-adBMN!Nx({0;Iy~xqONMhHvZQHiNnwr>< zMt{Q;N7r?K=kxi`pFb0)CU}>5vHlCub={x8gg@-s1Y1<+G)=QC6ZP2E$oHS{?Ga=KJ+xm+$H&HP8j zUGz!#`Vt!3Qs*d&vMlSm&f}o1sw(mZ;U6Y{Npd=!xJ)-q!)IN)t`q+qv^Fl3efcRt zkA$qz->^t%;e0;-{QRgBWKGlT_j{A~o|os))-~-dhr>bW2=K+`)H#ZxEX(pdH;u!n zf9*bsdORM&VUB$D=-#$%kH;e)rK$d@+TmR*pfTg^cB5NJ0d%d+Sj%%brhuja@)4lE4*H>)K#QwsE!?vN9w|lu$btoe}T25VEfVc z`~4FiRYAMIr=%D&qp+mIF4Vh7yk+I6~E>E zev6;JTrLAlvo;~rA3hniE$f+hyn3JnQyh7oi)v96#csDFS-f7aQgum^M9fauT|4c6UZ^9UBX051 zTLE^c+(nSzXtU#P;bouaxpxO1Uy~cc@i~rTb^V5ZrD+=aD$BCX4I)EZ(%6_lbLbsT zZIV3gxiv)xWTKPii06n(NxKBqt`NG|e)$58zTIvleB>ED^meLp78T}8DPz<4&vT^h zuM$GLx3z>AnmR{YoZ{eraDPuRc}Iwvp^fCybsaT{-cIg_=kQ9Y4!V!W<8HUx?RL@z zLNJBX>9pOsj>qFcv${N-{2;jVlJ)}8?H!xO|06adT{Hc+mLx!Rj-u`RLGx(`>093U z<<7{T&xdQM_^{Ux+VMFb<_8@`(ewEfpL0JG?y}1LptCF+Y@qdj2&(?@8N(2qSY5c^ z@8nQCF~O(P$>az9d_Gm5Wx}uL@^<~8Lvw!?Yd-BKT%-$FeO5tHxFpFdF)J)cj6)*Hm;<~k^JM)Y?A z%`~2KnU|ngMP1i_9goM;=_GCu@ut7eXW18l_MM|B+VmW>pe##q;yFc8&=y-YwXfGpU8biI zD4!dF6UaC=Js&-VEX(-LRiVz*UD({D@B##`&QY|HIcP7uUaz{Y>$-lw-=+(MSu8OS zdY_}c<@tO{^VcTce{p>Hx&&K)wm2W{kwI1NcM|NpGv^zoI2`Gn$m3p0E}OCj{j~dC z=;?T2TXP+M-tli~APqR!EGEE0NwdnHr! zuN4ymeDTZs(LiNG>Kvg5t&$|kl%v5xXh{9&EuKFOe8ErB2w$Be2(&s g0+V50wHK8C51%VpAzXAu#Q*>R07*qoM6N<$f+oHi`Tzg` diff --git a/tests_zemu/snapshots/fl-sign_standard_contract_call_tx/00002.png b/tests_zemu/snapshots/fl-sign_standard_contract_call_tx/00002.png index a262e9910d63d292452c0508cad5e65dfdb46886..feb044abf8c2125176e505635ec9e1a9a9b8bf4d 100644 GIT binary patch delta 1888 zcmV-m2cP)(fdTk|0kHKq3D3H&YuomNk71MkH#8>KbzRdm(mn{oFplF#eYP)Z+qNuA zZJI<;bk)An_l98@MUl_nos(ENENhL@x$pbkZl@nV(KL-QrYMSMuf6L!r!5)B@xu3( zW$9dfZJH(w!=fm{Fnm}QAL@-V`V+c1`o7Qe{Qv&%|L*LXun+soKcElM_x=C<@c*>y zExb`WcU`yLZY7xGg+gV>H6%U`g3itc{Tl96jM+;iXd6N@4A%CAg z&2Q(8(m4nMNe4L*wEHxgrjf3LvMe=CoeA)d`nRjT197j zrTQ-U&Aa4_Ki)B&rN{ZPWj0My*R}IqFvetAX2*2fwszmET&R?vFJ2*+PxVZW``o$V z@HwMD;UeLTJkK|q&F~D9jXD^AcTDGt-92@N=nn^Wn|ULBT3%cN2YUGmJ-m*FIjh8C(Q+?z1(%3v<-JEyPdXebqt@3 zxVUQUvm5}TD3WWKc0)vZ|DJkP^BMeXM}I;<+vAYzkFt|aI~Faoxf{ySf!kpi9*;-O z?kvl`zP{wcE#2jE?Os0RvdqWi%W6I;on=Gh%7lDQlaV_b67BvF9%l5L1+?9m4Svq5 z^z&hpy*n9yg-nt}J^|cZ?IAuXorA%rB2Clf>D>3dX8Q0|xm5VrF(J~IBJE}ENZIXn zG6eS7qXVD8w~T(jKIq)yTnVuULEGaohMgGp#f|yT>kZ}DVLkkS?)Ure@9*#L@ALUQ zvtBIpN$DK?4D{5FuFZ%<_-m ze1qbKa`Y{pj{yA)`bqHW;`>9yaV+s?U!u6j!&?kf!|cK^)H&aeUE>OzPP5lm=FR$` zlO)k2cABPt{``?oz;3s5j^xG|?Q@vFe+)Q3CjW+V^et~Xnph9oy}8v)Rn_GGFXjR`w94(FJap_A*7z7pE?;>lnc| zy0eXk=^VU!KnMTMD78Q3_Kh+&n~f91+wFF{-F|(2*;n~S-B6B;l0?(6 zu50^{u3g4m*ZukPN7^ZQp8xstN1GT+{t`EoWA|47{rmUp>ua;we0_cCO`V*#=tY$v z2%4sm8$*BalZT$<9W&Y<(Pcl=L{82mHNr4lIG|WBDmt^eW&U^Y?_7aW<%S+w z?Y3=oTp;Ouzc=oKR{Q;4XYS>BuA`ylPDVP3xuXj#FD*?|33@40I*V^8>Y_AFWkQOCvh(V@%=Y#< zor4c(K?gyQB#9oYosW2$P^QP@aoA*#%w7Ias~gHm)AV#Y4d0R^$?0?&HZGDRsjABE zA7l{7ZQiaOZH$qJm^i(|(n{5N9}C5CY|mfSbiSdei?S@!IfP0M622wfD3ez|Gk+=; zMe*wDEOkDgPp8xAbb81K;HnSaJ$GJv+?5-E)qV3Jt|r5`}M-g;8EW0njxO; zjnX;zjEjViWsJG!(ctin(~f5F;!1C3PekxPodW_|B}pRVD3&~91@A>Ox+n_Hjeav3 z;u5?`ItM}UUsY8P8Muz$sjlmH`TVqPOFAQXt4{(gX#5uM@}0!9z0oIulYu~Bli({a a7XKfGZvkC-iXEE(0000iq5i delta 1888 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 M07*qoM6N<$g6}q83;+NC delta 2054 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00001.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1e7a88c1cedc9fc05010716ad827aff0cd2ebe GIT binary patch literal 16354 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 WvH1HGVPNk*NMGlncKyA_PyZLT+zCYh literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00002.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..df715a431abd1c9ab678c9df5718ee7c8cc01cc7 GIT binary patch literal 17038 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00003.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc9c77a3e4598721db86ba3987cbf09462f8075 GIT binary patch literal 18002 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00004.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..d934817f8dfb6667b2b0ce17d77f4a25eb857c9a GIT binary patch literal 19950 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 N!fjUqQrqSD#M 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 CpiHR% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00009.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..93166da5cb793888af19f15953eb11499e402b55 GIT binary patch literal 9690 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-swap_with_post_conditions/00005.png b/tests_zemu/snapshots/st-swap_with_post_conditions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..113de2d3c7c4cee1d540d582865effb1f57e38f8 GIT binary patch literal 24160 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 a4YySt$7dDY4*UUz%}C$uM(s7X`2PZbgtQI- literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-swap_with_post_conditions/00008.png b/tests_zemu/snapshots/st-swap_with_post_conditions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbde52bcca0f7d0b98c71462549ad7a1392b5ca GIT binary patch literal 11174 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 j`MiQ#r5}f literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00000.png b/tests_zemu/snapshots/x-contract_call_long_args/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..e51f0f6faba9b7ea8280d1f1456e52740e7a61c7 GIT binary patch literal 486 zcmV@P)(!N(pGDIk3?eBAI|R zctGfuRmY^=;&gLLE z$plQVchMXuC7=e^sWvtTDw&`ex0zT1swcIh0pMfC;u&ZS=q5Mrv!0=pV&6`<$IvIm zdMf8^FEz1Ngq`}hA!x~4Ke$EBL7hXmJHXM(QCFS1BaQuhcsh0$TZO{i0Y{YU4kQ_Ax`CR)me+*t{Hnd@+X4A2pu##y7Jp zRx@t;eYZvas89`2D^>zJ_b$>Pm-eDSC8#-ypkKcIQ7LMFG-3jhiS?zY%zL8%00000 c004Z2KLb7>Q)!EXga7~l07*qoM6N<$f_u5vy#N3J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00001.png b/tests_zemu/snapshots/x-contract_call_long_args/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c60d92397c735f9b8caf50b03ced9ce7e71572 GIT binary patch literal 748 zcmVtssF zD5gF26aWG_=XwB0@{|1E?SPk@b4ux+*YyPFgTxEmIajb{@w3~34(!!%cdOXHWegs1 zYmQ@9Kp|!)&T!HSusL+sJ!}OS9M|=QSOZYD$~xBjyEWz>`+ZJ7xqfF4IFxWV;Q^eN zX8-^I1lJxwPIy|(5efsP%V?V4CcR6puVH?058@>F$B9<#W^*6GO25AUd7*!32#8VnC zPabI}MdLK-^q+jfY#O(%*%qu9-EKxD44VOghC*Qoz<4#T<_k z=@(ozYo2_MBzzO%CM>E2r6q5QfUEAtU3OezT)iHNbvs5arz`03%z&Ei><_be)E477 zXRJGnuUg!PCftX5w$0$T;~D@il}zFvo>kLU)VLxnhz)x{gq9mVyu1@kg&>KKU&L0?)b}-+e&bH?_zGD5Ex~5^1W7ibF(Uu~ e00000oWU=^PW%L6L4zUy0000?{cJUiB6K08SxZn3Jvu|zI)Y*AUs%>JAvdJvFb9GMZ z59d^uDP48JCEQi5LDv4kg{(Tx5y@rgnRfA!E*IH)=Go8Kc52)69%TlG59NJRXMX!{ z_~hIZ`(-~BzpXP-n8~JcxgkX=;7p8q*UP?z`_GiE<2PP;dBW2AnawMf)*ITMND)8v i#CDG79-#N2;DZsr;)iyLbyoy4K_Z^6elF{r5}E+0w|go8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00003.png b/tests_zemu/snapshots/x-contract_call_long_args/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3007712ee1ac8bbe590808efa3fd36bd796ce187 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2}AYZcrPebCi zH)?nOd)!IoS6QOT;kQ)w$^UyUteKt%1%O%@iuF$)4D$M9bgW|M{C~T%7O35HuCqI4 z@#bft{ON<6W*f_}ZFkvxc}9@d#&!9T&kiUucJZv}ak^XaB`9%L`ez+SE#A4u;(zORmc-mr|2ciZgis_xAd(|#6|he~@E|E^3bn!RfCCa>qeXUuBwv}I=4 z(E4l5p_fPdY&M*pw&9uNv7hd5n$G^4bj|xfnn#1N(1RY9KQlx5gu3ON+2wa0kqIl8 yNLiG>OfYLveveGWBCg6L`EM>2j36%~Kttv}cZFxlk0exbK!TpGelF{r5}E*IPnsqG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00004.png b/tests_zemu/snapshots/x-contract_call_long_args/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd52883d3c6d9d9e1df1f14c3e41119b38e5829 GIT binary patch literal 539 zcmV+$0_6RPP)`*U+ZZ;~@{cHfjTDNq|LqEmB;zZHqDH@>EU{%yn{waExy*FNBtwvw0!O zoly;XBz}G`X;-kE-XAIbOywA3o~K+PRmp7SwS^H+bIV~Vm;I`K%C3#@n2dP?tiO`q zf|?9Va@7-$nslbfpK3wAWXs-wAr$|($;~Z_H?JP_OMjOzDgp9=2Zo^2l-k^5v!XL< z{0U>1q3R?YvZ+{N7eO(d2ioX)09 zwi7UeO!TLrgqrA2h8(PfQD`O1!z+>DZTu*IslU#1M0M9)Jc(KrKiBRGmx@hgu(z4g zw>L5T9I>;iuI6$34%i7VX5{7EhtP9Sm=9U<&e9#cCINCZwFRhohW>>Sra4gdfE0000000000 d0001V{sH%;kg{D(3aEaktG3V{f)4fL&cpNsb ze%bQRd(m{;lvbT)S*AA6CExud56I_m94VFoYGPox{gd;`)MCB!noAwd7WkfvR7==g zv0&2KmbVSX&%Peg7u1Zkd_HATPI#bowAXGa1z(GYVTY$2J$z&Rv{=gpnMpJ5SBml( zX8YuvN%2Y4-iwO40))T&v1Uw^EO z(qW&&HTAK-%GpgJ>5rd!ab8?p#r|iDPXr&&`-bHrkJ;1;wr{gKyem0Bo=H#JsZQ0s zGg|d`>5*y4+`okkBv&r0`1wA^?Q{7>&K;)n=N%5n`sQA?@7h}DtA#lS{Qu7im|eg! zRVe?!BJ;aXDn(20*s?tR?_O5()MvIyRpr52saIQn{+Hcg^=q;qzt0Wl43y@SKZGJ@+ND>(Ggh=^nI7yA}3YVujUA0*@H>gTe~DWM4f$8Oyx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00006.png b/tests_zemu/snapshots/x-contract_call_long_args/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4dfd1622600e23f14395022f830b0146c17a GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2#?xbb~o`%G2 zmuFY}S1z3Xub}NDQ)j~A<5#}_+*+D>LExej2T<36lKQyDq@GWY3uWRa1{d6)v0v@j zjNXHG7t6lMiCaxwyXL+`vXziaVEE{J~x}HDY)0&2ZDc+Ifzev*ON`ALw25Vpq?mjdRP_*QHk9-&y!T zWQ*}zv#f`|^&Z%;-n~$2oBB9&y<4-DlpTX^u*<3=UpOYZZ#nj`dx^xy-RFdXuJr%H z{J!aReMjoCrzPhv7TxCG;k(WvExY$t)6$#;x^rUP%=Z1ziAzopr0M5O~mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00007.png b/tests_zemu/snapshots/x-contract_call_long_args/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..db320aacd3750402a291aa8cf928c90fcaf3dc25 GIT binary patch literal 323 zcmV-J0lfZ+P)5u=m{`Q0yj2|`MvdG358cYF#r7pnq=|4J(W92Qt9kO527T_k?Uyx*4 zXoK0q$8E1Z3G^hAJc0gWt4Wsq(=4P~_D`k;k#wO*?%_z%3jhEB000000001o`36qk Vwu|6ptx^C0002ovPDHLkV1mltk_i9+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00008.png b/tests_zemu/snapshots/x-contract_call_long_args/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1f95cf228589972c4400e9c4f24de22882e527db GIT binary patch literal 822 zcmV-61Ihe}P)Pc=PSVigaiWQBqaa<00000z_a9>bIz-^u=u-L zfr)Hx`kSBC3OLk8ysoPhUe|R$Dj#aZ!ado21zaD}w=+be*B?r)%{gfW5RR~~%hoHP z1eu7fi|}-{9%c6x5a&44-)!xGdoK-cr$y{gPn-(z(EbO1!q$7h|G=Ns3OoRr@(4iy z01(951IWQn47K9nkKBpGe2!RtCwXcC(umOu(Om3Zl;@oqdZy3enCmGH$LQBVJIuM| z#s^Z!n<6Eo1>TOR3_q9}%4@=+@`i3&<6_;KmB-Ndq~MZTT{1UqnuI4|-GqbsJ)49X zxkhOUYjINaYj8NCB=5+*pQ{e2qnND?58uXOj0}v|8ic$^FeHnBC`qg##(ko;J6Oy^V+ z#6ua6?D4mo#)&*hfqF<$(2Z(jSpPKyQ^Wc%10SpeQD`NOk>P`>becDk-pU_%Me&iQ zQ!T9BsExj~Hn~3H(CQMg5i)koELuqqd{o*v-KSznd<@3Z5hWvzH0E4zXd3<5&^&yB z9B;v(T=d)*0DX_SsUYveqhIT3>q-~#{v0N{)F z{vS|p!sOU0mL%mxHa}AuKP58WkMk0)&+o*|k{apB`e`Kb8F^%syujPP4YgA`8coT7 zvpD!aVyzj_;35d-@sA|9>a~bO(pya-sC;!xG_5A_-U{doKF`9tTfW(z6oP)`PVnlF zbKQfWOYMWm?>LQ)#+3mUzi+La2Ydhk0001;f1k*lRlAigcK`qY07*qoM6N<$f*@ms AlK=n! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00009.png b/tests_zemu/snapshots/x-contract_call_long_args/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b603f27299361beaff4d344081c05cf14960b645 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QvW?&978JRyuIPrcgTQ;^}@M~ zyh*?1HOptZx{5Hha$UUD_&rSY)uF$hZ#q&L85%DCbrCO^67~95fLG_*CmZj-VB*`j zY`@$6Fs0@DUogqN+?*}F^IDWwrr`Z&(O#bWURSU5ci0)RPW*A+i^GR?mRT}3+d6*l z)mXbneZkT1QP)mJ*H8Y%@@D&1kCWT~Px>Qe_2yBX#24er*K;4b-&=ppisyNxmH*^& zwwlf>x*7a;*&d|MH)byRpKv+WA$;A!gE|cF4Kn}Fy!zH&pz&zU?wgn8(+~9A57uAA zUHQ&)VsOpjH)hV${$;*%(fvC)ve{!-fJ(8&qzXo$w;|wx!T*KaEs}w{^5;PUp00i_ I>zopr0Keyo;Q#;t literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00010.png b/tests_zemu/snapshots/x-contract_call_long_args/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..22822ee2621172d3ba3def746922c173ba60aacf GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Eba4!+nDh2#^twX|0u6~K z>FRIlJ>MKlfHCExaVGG7Mgxl>e937o`RI3 zFW(w2)K#y_?>-i{WEcCF+Z$im?&bU-oby~t?anlRiQmuCm_6IR=vx(6J#TQ%*)Qxj z%Z8bc;fwHW<|?x}haYdfl4lmVcAjdy!nWx>kGQ?&YKLs>jmTKSyjJJF`Oo}E%IAMf z(be2vm~rd>i>S5|gL0%2*Cu~R zX*c@G((*lI26OOF{^xm|K?i44x(ixm$1mK%Zj--rtEE9G;q?y3hw?w99^&Y8xr*nr*rq6OF7$BQPNJQxz9 e4-7$MU~rbbFi4y))Nn^VNZ8ZW&t;ucLK6T6J-z1u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00011.png b/tests_zemu/snapshots/x-contract_call_long_args/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0c71d1d93df800f6bc6218460017ff4cf1fc84b1 GIT binary patch literal 921 zcmV;K17`e*P)K@+xzYDMHDucpDp-4Jf!A&1$_X@Zk zq}J3cV?_KUs;y^qX~kiiXvtDet^mT)SxGzu3OBQL1(Xh3`bS&gflR}1j|o8#1j|5sK#9fTA&(T+ky^Y%X<|eh5dg=3aBAcgMFY4nXsFg8+9`Gi zwA;XbrY7a!LsAalnsTCn>(P>KT9!#{Q8Q1gVwbcWYEK?R?URB_f~=ffZI|#OP%6S` z-`or2$W=%)Sc{XQUya=nC3!<)(>1CC_=}6Cq!xB9b`Wiv9v_y3HW3gddD2^q@?D|7 z5rTXzt4yf1QUD8~$M9f(6c7{DP zjbIODJhF?gNO3D*S7YGLH3AOD@y$2$Z}U6Mh$jvospV zuQtuqlh^{XRO#il{-%m=-5iVW!5D!s$Wsga!p}<_j5@$K{crdp=*leBoi7Oqu_P&D zG$pA%Qaug+Jbh&JXMyK6uGp341WHD_eE4sw<3sT7222P+_XqdBL^e0F2Y{4n*DeY| vInUktEVop7Z(jdQ`T2wof*=TjAeh8IGA}8z(ji(e00000NkvXXu0mjfPtmFV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00012.png b/tests_zemu/snapshots/x-contract_call_long_args/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..d99fa0b21734c5b25386928b1110a512648536a8 GIT binary patch literal 461 zcmV;;0W$uHP)HGY&$VY;RGz0(u003PnrIb?bCsC{{dAwMb zsnxvBk8^t$H3C$|F~+Fga=c!aan8Z7XJg@Wc<;f#FUA;iL~0?ktCd$mI)iINcSr@=EfY@ORlbD$iuz^8fHyf z=js3QY|Kc^!LMEr003}xdLy{Qm+h#vyPzBq@u4I>Yt=I0^JG+xF-KIx7V?Tx(vhP_?Y3|5R)V5-Yo1B2vXDRmcdP`46PybhpYjOhi zSseH2Nt;YS<6oyy;ytFm)@o|=w>+g#-}A;H3@s@`{cp6`y7!6OxW}mmndrMwLQV9Y zk%K$23f-v_WOA?+;ROHy0000000000000000G9a!jVoVnuHG%CpU#%bfl#&pZ5;=Lfs>AECUynhS{x46l#Q zW<2{k?eBzl`=^9G+QHFsJs?@+K*SZMDf?O0EZ*UGf+=V6Uy+Rr)~Wwn{)=<2G~wr6 zEL9?y((zv4?s=8Te^dQ}e7}h=W}EiHY1)j#(>(NnK0yWsXQi*b?0$Y_Pn07_*wfX| JWt~$(6999(hO__x literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00014.png b/tests_zemu/snapshots/x-contract_call_long_args/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..35f106cdc659c2f1b8b19b89972c4ac1bc9c95db GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2#B44utPg~-) zH)?nOd+a@3H^YRb@R7*RU3<^#PnHah)-VVL>B{>)L-v3}+P0V{bDq0>>OXUad%+u1 z>jwW*Jij!|HqZI|X>$COKj#FP?cKOPl`IbpUFEgrz2~i|9LCIAww7O$bS6JLbzT;mCD$9$wAZu!4%?lt_h3iF*6Tf+zUsVO$5`*Qi}fqV zmd7j%rdrtt-X(rbSs!l4kg4{}jcnpTFU&z{>Y5TC5s#&!66< zwJvgbrwD)2;$Y>{glV%G?QD*JWp6$ASR~y+==8;auRJsM#ai!jGMjy}y?si&;rsf_ zbHBVQIc9w1ev+}x#~r_4?)Ol3`n%wFYsGZ=^^H63zjr!SHpz##O=&MM5RkzEgM7A& VyW{PTukZy4d%F6$taD0e0sw1>rJ?`; literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00015.png b/tests_zemu/snapshots/x-contract_call_long_args/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..404a33596b07383dda8943c0ee6b42968b0a51dc GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9gba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_p@f%5!Jc-#_vBFCWbGaT?|!$njVyxzvtpnRC=0q?&fN>|9&p3j&(eH z7|ZBAbMCyON|TD?%w9TWuKWD=9Z;yw^L=k(i(UAy%tdkmH-)!+o22}@WXld)hsV2p zuEj2_K2T@uw!h;x!)b=ypXJ=TrzV%q+L`z)U~9mi+2_LU7(Vd#`LA-uS)ZZiY&}oJ zv$8i#PhZVDbf-t|J#V&RpTgKeCJ!!i$ zKYKg>{CDZ2eN;PNMdzM*S0{M>H<`P_^MA^gM)h@0^UR!<@wO?&0RsUUB+O8^kAM33 Sw(w6*kg%t#pUXO@geCxpX{74_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00016.png b/tests_zemu/snapshots/x-contract_call_long_args/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4be69934787c368c2b5ed677cc7f5a2470be3b GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-contract_call_long_args/00017.png b/tests_zemu/snapshots/x-contract_call_long_args/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..0425466580963a2bef09ca2320cb40d8843caf4e GIT binary patch literal 511 zcmVxy1gt*>D?pb7$J^uQ z6u**uQJ}E>hp-u-86aK-Z1@Wygb+dqA%qYg$1gOyHfEUU(MbRR002ovPDHLkV1hoO B;)(zO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index d8ed08de1a07e8baf8ebcf8b80a7659fbeacb3d0..66e6ea9b2f48d3740547646f827ed287ff294b26 100644 GIT binary patch delta 362 zcmeyv)XF?TrQXNW#WAE}&fA;Oe9a01t%^Q z3A>qOmWnL4`dU4^>659#v5Xr>Us=u67+n+y3{W7?jHmA<-R*>!e=MTPpQk}EZ zSZ3PW_9qPbtjQkxL)x9+#6`S&I2nPtP#8YQ?^C<^`Iw66eRhzjr>mdKI;Vst E08mM*CjbBd delta 353 zcmZo={=+murQX@o#WAE}&f6P-e9a01u7S5o)Zf*6zF8{2jD=l7M6m7Iy!FRcsphw6 zTCp=AfZWGfwhSk$^Q z3A>qOmWnL4`dU4^>659#v5Xr>Us=u67+n+y3{W7?jHmA<-R*>!e=MTPpQk}EZ zSZ3PW_9qPbtjQkxL)x9+#6`S&I2nPtP#8YQ?^C<^`Iw66eRhzjr>mdKI;Vst E08mM*CjbBd delta 353 zcmZo={=+murQX@o#WAE}&f6P-e9a01u7S5o)Zf*6zF8{2jD=l7M6m7Iy!FRcsphw6 zTCp=AfZWGfwhSk$@P)(!N(pGDIk3?eBAI|R zctGfuRmY^=;&gLLE z$plQVchMXuC7=e^sWvtTDw&`ex0zT1swcIh0pMfC;u&ZS=q5Mrv!0=pV&6`<$IvIm zdMf8^FEz1Ngq`}hA!x~4Ke$EBL7hXmJHXM(QCFS1BaQuhcsh0$TZO{i0Y{YU4kQ_Ax`CR)me+*t{Hnd@+X4A2pu##y7Jp zRx@t;eYZvas89`2D^>zJ_b$>Pm-eDSC8#-ypkKcIQ7LMFG-3jhiS?zY%zL8%00000 c004Z2KLb7>Q)!EXga7~l07*qoM6N<$f_u5vy#N3J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00001.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c60d92397c735f9b8caf50b03ced9ce7e71572 GIT binary patch literal 748 zcmVtssF zD5gF26aWG_=XwB0@{|1E?SPk@b4ux+*YyPFgTxEmIajb{@w3~34(!!%cdOXHWegs1 zYmQ@9Kp|!)&T!HSusL+sJ!}OS9M|=QSOZYD$~xBjyEWz>`+ZJ7xqfF4IFxWV;Q^eN zX8-^I1lJxwPIy|(5efsP%V?V4CcR6puVH?058@>F$B9<#W^*6GO25AUd7*!32#8VnC zPabI}MdLK-^q+jfY#O(%*%qu9-EKxD44VOghC*Qoz<4#T<_k z=@(ozYo2_MBzzO%CM>E2r6q5QfUEAtU3OezT)iHNbvs5arz`03%z&Ei><_be)E477 zXRJGnuUg!PCftX5w$0$T;~D@il}zFvo>kLU)VLxnhz)x{gq9mVyu1@kg&>KKU&L0?)b}-+e&bH?_zGD5Ex~5^1W7ibF(Uu~ e00000oWU=^PW%L6L4zUy0000?{cJUiB6K08SxZn3Jvu|zI)Y*AUs%>JAvdJvFb9GMZ z59d^uDP48JCEQi5LDv4kg{(Tx5y@rgnRfA!E*IH)=Go8Kc52)69%TlG59NJRXMX!{ z_~hIZ`(-~BzpXP-n8~JcxgkX=;7p8q*UP?z`_GiE<2PP;dBW2AnawMf)*ITMND)8v i#CDG79-#N2;DZsr;)iyLbyoy4K_Z^6elF{r5}E+0w|go8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00003.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3007712ee1ac8bbe590808efa3fd36bd796ce187 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2}AYZcrPebCi zH)?nOd)!IoS6QOT;kQ)w$^UyUteKt%1%O%@iuF$)4D$M9bgW|M{C~T%7O35HuCqI4 z@#bft{ON<6W*f_}ZFkvxc}9@d#&!9T&kiUucJZv}ak^XaB`9%L`ez+SE#A4u;(zORmc-mr|2ciZgis_xAd(|#6|he~@E|E^3bn!RfCCa>qeXUuBwv}I=4 z(E4l5p_fPdY&M*pw&9uNv7hd5n$G^4bj|xfnn#1N(1RY9KQlx5gu3ON+2wa0kqIl8 yNLiG>OfYLveveGWBCg6L`EM>2j36%~Kttv}cZFxlk0exbK!TpGelF{r5}E*IPnsqG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00004.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd52883d3c6d9d9e1df1f14c3e41119b38e5829 GIT binary patch literal 539 zcmV+$0_6RPP)`*U+ZZ;~@{cHfjTDNq|LqEmB;zZHqDH@>EU{%yn{waExy*FNBtwvw0!O zoly;XBz}G`X;-kE-XAIbOywA3o~K+PRmp7SwS^H+bIV~Vm;I`K%C3#@n2dP?tiO`q zf|?9Va@7-$nslbfpK3wAWXs-wAr$|($;~Z_H?JP_OMjOzDgp9=2Zo^2l-k^5v!XL< z{0U>1q3R?YvZ+{N7eO(d2ioX)09 zwi7UeO!TLrgqrA2h8(PfQD`O1!z+>DZTu*IslU#1M0M9)Jc(KrKiBRGmx@hgu(z4g zw>L5T9I>;iuI6$34%i7VX5{7EhtP9Sm=9U<&e9#cCINCZwFRhohW>>Sra4gdfE0000000000 d0001V{sH%;kg{D(3aEaktG3V{f)4fL&cpNsb ze%bQRd(m{;lvbT)S*AA6CExud56I_m94VFoYGPox{gd;`)MCB!noAwd7WkfvR7==g zv0&2KmbVSX&%Peg7u1Zkd_HATPI#bowAXGa1z(GYVTY$2J$z&Rv{=gpnMpJ5SBml( zX8YuvN%2Y4-iwO40))T&v1Uw^EO z(qW&&HTAK-%GpgJ>5rd!ab8?p#r|iDPXr&&`-bHrkJ;1;wr{gKyem0Bo=H#JsZQ0s zGg|d`>5*y4+`okkBv&r0`1wA^?Q{7>&K;)n=N%5n`sQA?@7h}DtA#lS{Qu7im|eg! zRVe?!BJ;aXDn(20*s?tR?_O5()MvIyRpr52saIQn{+Hcg^=q;qzt0Wl43y@SKZGJ@+ND>(Ggh=^nI7yA}3YVujUA0*@H>gTe~DWM4f$8Oyx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00006.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4dfd1622600e23f14395022f830b0146c17a GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2#?xbb~o`%G2 zmuFY}S1z3Xub}NDQ)j~A<5#}_+*+D>LExej2T<36lKQyDq@GWY3uWRa1{d6)v0v@j zjNXHG7t6lMiCaxwyXL+`vXziaVEE{J~x}HDY)0&2ZDc+Ifzev*ON`ALw25Vpq?mjdRP_*QHk9-&y!T zWQ*}zv#f`|^&Z%;-n~$2oBB9&y<4-DlpTX^u*<3=UpOYZZ#nj`dx^xy-RFdXuJr%H z{J!aReMjoCrzPhv7TxCG;k(WvExY$t)6$#;x^rUP%=Z1ziAzopr0M5O~mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00007.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..db320aacd3750402a291aa8cf928c90fcaf3dc25 GIT binary patch literal 323 zcmV-J0lfZ+P)5u=m{`Q0yj2|`MvdG358cYF#r7pnq=|4J(W92Qt9kO527T_k?Uyx*4 zXoK0q$8E1Z3G^hAJc0gWt4Wsq(=4P~_D`k;k#wO*?%_z%3jhEB000000001o`36qk Vwu|6ptx^C0002ovPDHLkV1mltk_i9+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00008.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1f95cf228589972c4400e9c4f24de22882e527db GIT binary patch literal 822 zcmV-61Ihe}P)Pc=PSVigaiWQBqaa<00000z_a9>bIz-^u=u-L zfr)Hx`kSBC3OLk8ysoPhUe|R$Dj#aZ!ado21zaD}w=+be*B?r)%{gfW5RR~~%hoHP z1eu7fi|}-{9%c6x5a&44-)!xGdoK-cr$y{gPn-(z(EbO1!q$7h|G=Ns3OoRr@(4iy z01(951IWQn47K9nkKBpGe2!RtCwXcC(umOu(Om3Zl;@oqdZy3enCmGH$LQBVJIuM| z#s^Z!n<6Eo1>TOR3_q9}%4@=+@`i3&<6_;KmB-Ndq~MZTT{1UqnuI4|-GqbsJ)49X zxkhOUYjINaYj8NCB=5+*pQ{e2qnND?58uXOj0}v|8ic$^FeHnBC`qg##(ko;J6Oy^V+ z#6ua6?D4mo#)&*hfqF<$(2Z(jSpPKyQ^Wc%10SpeQD`NOk>P`>becDk-pU_%Me&iQ zQ!T9BsExj~Hn~3H(CQMg5i)koELuqqd{o*v-KSznd<@3Z5hWvzH0E4zXd3<5&^&yB z9B;v(T=d)*0DX_SsUYveqhIT3>q-~#{v0N{)F z{vS|p!sOU0mL%mxHa}AuKP58WkMk0)&+o*|k{apB`e`Kb8F^%syujPP4YgA`8coT7 zvpD!aVyzj_;35d-@sA|9>a~bO(pya-sC;!xG_5A_-U{doKF`9tTfW(z6oP)`PVnlF zbKQfWOYMWm?>LQ)#+3mUzi+La2Ydhk0001;f1k*lRlAigcK`qY07*qoM6N<$f*@ms AlK=n! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00009.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b603f27299361beaff4d344081c05cf14960b645 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QvW?&978JRyuIPrcgTQ;^}@M~ zyh*?1HOptZx{5Hha$UUD_&rSY)uF$hZ#q&L85%DCbrCO^67~95fLG_*CmZj-VB*`j zY`@$6Fs0@DUogqN+?*}F^IDWwrr`Z&(O#bWURSU5ci0)RPW*A+i^GR?mRT}3+d6*l z)mXbneZkT1QP)mJ*H8Y%@@D&1kCWT~Px>Qe_2yBX#24er*K;4b-&=ppisyNxmH*^& zwwlf>x*7a;*&d|MH)byRpKv+WA$;A!gE|cF4Kn}Fy!zH&pz&zU?wgn8(+~9A57uAA zUHQ&)VsOpjH)hV${$;*%(fvC)ve{!-fJ(8&qzXo$w;|wx!T*KaEs}w{^5;PUp00i_ I>zopr0Keyo;Q#;t literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00010.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..22822ee2621172d3ba3def746922c173ba60aacf GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Eba4!+nDh2#^twX|0u6~K z>FRIlJ>MKlfHCExaVGG7Mgxl>e937o`RI3 zFW(w2)K#y_?>-i{WEcCF+Z$im?&bU-oby~t?anlRiQmuCm_6IR=vx(6J#TQ%*)Qxj z%Z8bc;fwHW<|?x}haYdfl4lmVcAjdy!nWx>kGQ?&YKLs>jmTKSyjJJF`Oo}E%IAMf z(be2vm~rd>i>S5|gL0%2*Cu~R zX*c@G((*lI26OOF{^xm|K?i44x(ixm$1mK%Zj--rtEE9G;q?y3hw?w99^&Y8xr*nr*rq6OF7$BQPNJQxz9 e4-7$MU~rbbFi4y))Nn^VNZ8ZW&t;ucLK6T6J-z1u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00011.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0c71d1d93df800f6bc6218460017ff4cf1fc84b1 GIT binary patch literal 921 zcmV;K17`e*P)K@+xzYDMHDucpDp-4Jf!A&1$_X@Zk zq}J3cV?_KUs;y^qX~kiiXvtDet^mT)SxGzu3OBQL1(Xh3`bS&gflR}1j|o8#1j|5sK#9fTA&(T+ky^Y%X<|eh5dg=3aBAcgMFY4nXsFg8+9`Gi zwA;XbrY7a!LsAalnsTCn>(P>KT9!#{Q8Q1gVwbcWYEK?R?URB_f~=ffZI|#OP%6S` z-`or2$W=%)Sc{XQUya=nC3!<)(>1CC_=}6Cq!xB9b`Wiv9v_y3HW3gddD2^q@?D|7 z5rTXzt4yf1QUD8~$M9f(6c7{DP zjbIODJhF?gNO3D*S7YGLH3AOD@y$2$Z}U6Mh$jvospV zuQtuqlh^{XRO#il{-%m=-5iVW!5D!s$Wsga!p}<_j5@$K{crdp=*leBoi7Oqu_P&D zG$pA%Qaug+Jbh&JXMyK6uGp341WHD_eE4sw<3sT7222P+_XqdBL^e0F2Y{4n*DeY| vInUktEVop7Z(jdQ`T2wof*=TjAeh8IGA}8z(ji(e00000NkvXXu0mjfPtmFV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00012.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..d99fa0b21734c5b25386928b1110a512648536a8 GIT binary patch literal 461 zcmV;;0W$uHP)HGY&$VY;RGz0(u003PnrIb?bCsC{{dAwMb zsnxvBk8^t$H3C$|F~+Fga=c!aan8Z7XJg@Wc<;f#FUA;iL~0?ktCd$mI)iINcSr@=EfY@ORlbD$iuz^8fHyf z=js3QY|Kc^!LMEr003}xdLy{Qm+h#vyPzBq@u4I>Yt=I0^JG+xF-KIx7V?Tx(vhP_?Y3|5R)V5-Yo1B2vXDRmcdP`46PybhpYjOhi zSseH2Nt;YS<6oyy;ytFm)@o|=w>+g#-}A;H3@s@`{cp6`y7!6OxW}mmndrMwLQV9Y zk%K$23f-v_WOA?+;ROHy0000000000000000G9a!jVoVnuHG%CpU#%bfl#&pZ5;=Lfs>AECUynhS{x46l#Q zW<2{k?eBzl`=^9G+QHFsJs?@+K*SZMDf?O0EZ*UGf+=V6Uy+Rr)~Wwn{)=<2G~wr6 zEL9?y((zv4?s=8Te^dQ}e7}h=W}EiHY1)j#(>(NnK0yWsXQi*b?0$Y_Pn07_*wfX| JWt~$(6999(hO__x literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00014.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..35f106cdc659c2f1b8b19b89972c4ac1bc9c95db GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2#B44utPg~-) zH)?nOd+a@3H^YRb@R7*RU3<^#PnHah)-VVL>B{>)L-v3}+P0V{bDq0>>OXUad%+u1 z>jwW*Jij!|HqZI|X>$COKj#FP?cKOPl`IbpUFEgrz2~i|9LCIAww7O$bS6JLbzT;mCD$9$wAZu!4%?lt_h3iF*6Tf+zUsVO$5`*Qi}fqV zmd7j%rdrtt-X(rbSs!l4kg4{}jcnpTFU&z{>Y5TC5s#&!66< zwJvgbrwD)2;$Y>{glV%G?QD*JWp6$ASR~y+==8;auRJsM#ai!jGMjy}y?si&;rsf_ zbHBVQIc9w1ev+}x#~r_4?)Ol3`n%wFYsGZ=^^H63zjr!SHpz##O=&MM5RkzEgM7A& VyW{PTukZy4d%F6$taD0e0sw1>rJ?`; literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00015.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..404a33596b07383dda8943c0ee6b42968b0a51dc GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9gba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_p@f%5!Jc-#_vBFCWbGaT?|!$njVyxzvtpnRC=0q?&fN>|9&p3j&(eH z7|ZBAbMCyON|TD?%w9TWuKWD=9Z;yw^L=k(i(UAy%tdkmH-)!+o22}@WXld)hsV2p zuEj2_K2T@uw!h;x!)b=ypXJ=TrzV%q+L`z)U~9mi+2_LU7(Vd#`LA-uS)ZZiY&}oJ zv$8i#PhZVDbf-t|J#V&RpTgKeCJ!!i$ zKYKg>{CDZ2eN;PNMdzM*S0{M>H<`P_^MA^gM)h@0^UR!<@wO?&0RsUUB+O8^kAM33 Sw(w6*kg%t#pUXO@geCxpX{74_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00016.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00018.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fecc41ede4831c9c119eb9b75aea4caf0e7b72ab GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#w9p|19*2vs z!fyPZv`O54!%Uw3CcoJW_CD`+)G!hBD!mQV!%)sYKheeIw5IBO$B$}CW{hWNEv@i7 zpUnDX_C@`=_xFOleoc&3J$qGI>DIoR8^e>UMXzh>g`R)Hb>4e@-c>=*-HTEKlV{(2 z@#Mx$C&RG2OU(^$@11e)$=%ws%8bVM|E`VF@G6^p_^NLBy?1lM4j8c8&YD_ZTk<>C zk=^c=VOv}Etsonr1oH_p+`V55@;B-}celB5`4#)I$Y!929vqjE`H@z4!g}?yWkn*h zHeT>*cbf9U{NdF2VA&(;51x5A7zhdUu;{403JLggHTCrW5+2zei8{62&3O|#_sw=& s(YepKNT4%TL+JcNj}~!|Z;`-`Gu*uzopr0Bi1%=>Px# literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00019.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00021.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fecc41ede4831c9c119eb9b75aea4caf0e7b72ab GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#w9p|19*2vs z!fyPZv`O54!%Uw3CcoJW_CD`+)G!hBD!mQV!%)sYKheeIw5IBO$B$}CW{hWNEv@i7 zpUnDX_C@`=_xFOleoc&3J$qGI>DIoR8^e>UMXzh>g`R)Hb>4e@-c>=*-HTEKlV{(2 z@#Mx$C&RG2OU(^$@11e)$=%ws%8bVM|E`VF@G6^p_^NLBy?1lM4j8c8&YD_ZTk<>C zk=^c=VOv}Etsonr1oH_p+`V55@;B-}celB5`4#)I$Y!929vqjE`H@z4!g}?yWkn*h zHeT>*cbf9U{NdF2VA&(;51x5A7zhdUu;{403JLggHTCrW5+2zei8{62&3O|#_sw=& s(YepKNT4%TL+JcNj}~!|Z;`-`Gu*uzopr0Bi1%=>Px# literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00022.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00024.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..fa031397692662561fd5332adc1546163d7269ea GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|8K2Eu z>%ym>#5zYjIRDSZty6c{?+Yhg{>6T5w-qbUbMY7QUfg*hedAB& zrp;IKf19MLy}ff?lH+sl?s;Eie6lK~&P@8RTJyR3gL*YXenQ#||BoMqAKZWTImhY9 zX@5t``cwI=`o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00025.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4be69934787c368c2b5ed677cc7f5a2470be3b GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/x-swap_with_post_conditions/00026.png b/tests_zemu/snapshots/x-swap_with_post_conditions/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..0425466580963a2bef09ca2320cb40d8843caf4e GIT binary patch literal 511 zcmVxy1gt*>D?pb7$J^uQ z6u**uQJ}E>hp-u-86aK-Z1@Wygb+dqA%qYg$1gOyHfEUU(MbRR002ovPDHLkV1hoO B;)(zO literal 0 HcmV?d00001 diff --git a/tests_zemu/tests/standard.test.ts b/tests_zemu/tests/standard.test.ts index 55ed80cd..614a5a32 100644 --- a/tests_zemu/tests/standard.test.ts +++ b/tests_zemu/tests/standard.test.ts @@ -39,6 +39,18 @@ import { uintCV, stringAsciiCV, stringUtf8CV, + tupleCV, + intCV, + bufferCV, + listCV, + responseOkCV, + responseErrorCV, + someCV, + noneCV, + trueCV, + falseCV, + FungibleConditionCode, + makeStandardSTXPostCondition, } from '@stacks/transactions' import { StacksTestnet } from '@stacks/network' import { AnchorMode } from '@stacks/transactions/src/constants' @@ -57,6 +69,28 @@ const defaultOptions = { jest.setTimeout(180000) +const BIG_TUPLE = tupleCV({ + hello: uintCV(234), + a: intCV(-1), + b: bufferCV(Buffer.from('abcdefgh', 'ascii')), + m: listCV([intCV(-1), intCV(-1), intCV(-1), intCV(-1)]), + result_call: responseOkCV(stringAsciiCV('done')), + error_msg: responseErrorCV(stringUtf8CV('unknown URI')), + nested: someCV(listCV([noneCV(), someCV(intCV(-100))])), + principal: standardPrincipalCV('SP2JXKMSH007NPYAQHKJPQMAQYAD90NQGTVJVQ02B'), + l: tupleCV({ + a: trueCV(), + b: falseCV(), + }), + contractPrincipal: contractPrincipalCV('SP2JXKMSH007NPYAQHKJPQMAQYAD90NQGTVJVQ02B', 'test'), + xxxx: tupleCV({ + yyyy: intCV(123), + ddd: tupleCV({ + ggg: uintCV(123), + }), + }), +}) + describe('Standard', function () { test.concurrent.each(models)('can start and stop container', async function (m) { const sim = new Zemu(m.path) @@ -128,7 +162,6 @@ describe('Standard', function () { const response = await app.getAddressAndPubKey("m/5757'/0'/5'/0/0", AddressVersion.MainnetSingleSig) console.log(response) expect(response.returnCode).toEqual(0x9000) - } finally { await sim.close() } @@ -324,7 +357,7 @@ describe('Standard', function () { console.log(pkResponse) expect(pkResponse.returnCode).toEqual(0x9000) expect(pkResponse.errorMessage).toEqual('No errors') - const devicePublicKey = publicKeyFromBuffer(pkResponse.publicKey); + const devicePublicKey = publicKeyFromBuffer(pkResponse.publicKey) const devicePublicKeyString = pkResponse.publicKey.toString('hex') const recipient = standardPrincipalCV('ST2XADQKC3EPZ62QTG5Q2RSPV64JG6KXCND0PHT7F') @@ -389,7 +422,7 @@ describe('Standard', function () { // Add Ledger signature to transaction tx.auth.spendingCondition.fields[1] = createTransactionAuthField(PubKeyEncoding.Compressed, { data: signature.signatureVRS.toString('hex'), - type: StacksMessageType.MessageSignature + type: StacksMessageType.MessageSignature, }) // For full tx validation, use `stacks-inspect decode-tx ` @@ -443,7 +476,7 @@ describe('Standard', function () { console.log(pkResponse) expect(pkResponse.returnCode).toEqual(0x9000) expect(pkResponse.errorMessage).toEqual('No errors') - const devicePublicKey = publicKeyFromBuffer(pkResponse.publicKey); + const devicePublicKey = publicKeyFromBuffer(pkResponse.publicKey) const devicePublicKeyString = pkResponse.publicKey.toString('hex') const recipient = standardPrincipalCV('ST2XADQKC3EPZ62QTG5Q2RSPV64JG6KXCND0PHT7F') @@ -471,7 +504,7 @@ describe('Standard', function () { // @ts-ignore // Use order-independent multisig P2SH // TODO: Replace with constant once support is added in Stacks.js - tx.auth.spendingCondition.hashMode = 5; + tx.auth.spendingCondition.hashMode = 5 const sigHashPreSign = makeSigHashPreSign( tx.signBegin(), @@ -627,6 +660,99 @@ describe('Standard', function () { } }) + test.concurrent.each(models)(`sign_contract_call_long_args`, async function (m) { + const sim = new Zemu(m.path) + const network = new StacksTestnet() + const senderKey = '2cefd4375fcb0b3c0935fcbc53a8cb7c7b9e0af0225581bbee006cf7b1aa0216' + const my_key = '2e64805a5808a8a72df89b4b18d2451f8d5ab5224b4d8c7c36033aee4add3f27f' + const path = "m/44'/5757'/0'/0/0" + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new StacksApp(sim.getTransport()) + // Get pubkey and check + const pkResponse = await app.getAddressAndPubKey(path, AddressVersion.TestnetSingleSig) + console.log(pkResponse) + expect(pkResponse.returnCode).toEqual(0x9000) + expect(pkResponse.errorMessage).toEqual('No errors') + const devicePublicKey = pkResponse.publicKey.toString('hex') + + const recipient = standardPrincipalCV('ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5') + const contract_principal = contractPrincipalCV('ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5', 'some-contract-name') + const fee = new BN(10) + const nonce = new BN(0) + const [contract_address, contract_name] = 'SP000000000000000000002Q6VF78.long_args_contract'.split('.') + const txOptions = { + anchorMode: AnchorMode.Any, + contractAddress: contract_address, + contractName: contract_name, + functionName: 'stack-stx', + functionArgs: [ + uintCV(20000), + recipient, + intCV(-2), + someCV(listCV([noneCV(), someCV(intCV(-100))])), + contract_principal, + uintCV(20), + BIG_TUPLE, + bufferCV(Buffer.from('abcdefgh', 'ascii')), + ], + network: network, + fee: fee, + nonce: nonce, + publicKey: devicePublicKey, + } + + const transaction = await makeUnsignedContractCall(txOptions) + const serializeTx = transaction.serialize().toString('hex') + + const blob = Buffer.from(serializeTx, 'hex') + const signatureRequest = app.sign(path, blob) + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-contract_call_long_args`) + + const signature = await signatureRequest + console.log(signature) + + expect(signature.returnCode).toEqual(0x9000) + + // compute postSignHash to verify signature + + const sigHashPreSign = makeSigHashPreSign( + transaction.signBegin(), + // @ts-ignore + transaction.auth.authType, + transaction.auth.spendingCondition?.fee, + transaction.auth.spendingCondition?.nonce, + ) + console.log('sigHashPreSign: ', sigHashPreSign) + const presig_hash = Buffer.from(sigHashPreSign, 'hex') + + const key_t = Buffer.alloc(1) + key_t.writeInt8(0x00) + + const array = [presig_hash, key_t, signature.signatureVRS] + const to_hash = Buffer.concat(array) + const hash = sha512_256(to_hash) + console.log('computed postSignHash: ', hash.toString('hex')) + + // compare hashes + expect(signature.postSignHash.toString('hex')).toEqual(hash.toString('hex')) + + //Verify signature + const ec = new EC('secp256k1') + const signature1 = signature.signatureVRS.toString('hex') + const signature1_obj = { r: signature1.substr(2, 64), s: signature1.substr(66, 64) } + // @ts-ignore + const signature1Ok = ec.verify(presig_hash, signature1_obj, devicePublicKey, 'hex') + expect(signature1Ok).toEqual(true) + } finally { + await sim.close() + } + }) + test.concurrent.each(models)(`sign_message`, async function (m) { const sim = new Zemu(m.path) const senderKey = '2cefd4375fcb0b3c0935fcbc53a8cb7c7b9e0af0225581bbee006cf7b1aa0216' @@ -831,4 +957,111 @@ describe('Standard', function () { await sim.close() } }) + + test.concurrent.each(models)(`sign_contract_and_post_conditions`, async function (m) { + const sim = new Zemu(m.path) + const network = new StacksTestnet() + const senderKey = '2cefd4375fcb0b3c0935fcbc53a8cb7c7b9e0af0225581bbee006cf7b1aa0216' + const my_key = '2e64805a5808a8a72df89b4b18d2451f8d5ab5224b4d8c7c36033aee4add3f27f' + const path = "m/44'/5757'/0'/0/0" + try { + await sim.start({ ...defaultOptions, model: m.name }) + const app = new StacksApp(sim.getTransport()) + // Get pubkey and check + const pkResponse = await app.getAddressAndPubKey(path, AddressVersion.TestnetSingleSig) + console.log(pkResponse) + expect(pkResponse.returnCode).toEqual(0x9000) + expect(pkResponse.errorMessage).toEqual('No errors') + const devicePublicKey = pkResponse.publicKey.toString('hex') + + const recipient = standardPrincipalCV('ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5') + const contract_principal = contractPrincipalCV('ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5', 'some-contract-name') + const fee = new BN(10) + const nonce = new BN(0) + const [contract_address, contract_name] = 'SP000000000000000000002Q6VF78.long_args_contract'.split('.') + + const postConditionAddress = 'SP2ZD731ANQZT6J4K3F5N8A40ZXWXC1XFXHVVQFKE' + const postConditionAddress2 = 'ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5' + const postConditionAddress3 = 'ST39RCH114B48GY5E0K2Q4SV28XZMXW4ZZTN8QSS5' + const postConditionCode = FungibleConditionCode.GreaterEqual + const postConditionAmount = new BN(1000000) + const postConditionAmount2 = new BN(1005020) + const postConditions = [ + makeStandardSTXPostCondition(postConditionAddress, postConditionCode, postConditionAmount), + makeStandardSTXPostCondition(postConditionAddress2, postConditionCode, postConditionAmount), + makeStandardSTXPostCondition(postConditionAddress3, postConditionCode, postConditionAmount2), + ] + + const txOptions = { + anchorMode: AnchorMode.Any, + contractAddress: contract_address, + contractName: contract_name, + functionName: 'stack-stx', + functionArgs: [ + uintCV(20000), + recipient, + intCV(-2), + someCV(listCV([noneCV(), someCV(intCV(-100))])), + contract_principal, + uintCV(20), + BIG_TUPLE, + bufferCV(Buffer.from('abcdefgh', 'ascii')), + ], + network: network, + fee: fee, + nonce: nonce, + publicKey: devicePublicKey, + postConditions, + } + + const transaction = await makeUnsignedContractCall(txOptions) + const serializeTx = transaction.serialize().toString('hex') + + const blob = Buffer.from(serializeTx, 'hex') + const signatureRequest = app.sign(path, blob) + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()) + + await sim.compareSnapshotsAndApprove('.', `${m.prefix.toLowerCase()}-swap_with_post_conditions`) + + const signature = await signatureRequest + console.log(signature) + + expect(signature.returnCode).toEqual(0x9000) + + // compute postSignHash to verify signature + + const sigHashPreSign = makeSigHashPreSign( + transaction.signBegin(), + // @ts-ignore + transaction.auth.authType, + transaction.auth.spendingCondition?.fee, + transaction.auth.spendingCondition?.nonce, + ) + console.log('sigHashPreSign: ', sigHashPreSign) + const presig_hash = Buffer.from(sigHashPreSign, 'hex') + + const key_t = Buffer.alloc(1) + key_t.writeInt8(0x00) + + const array = [presig_hash, key_t, signature.signatureVRS] + const to_hash = Buffer.concat(array) + const hash = sha512_256(to_hash) + console.log('computed postSignHash: ', hash.toString('hex')) + + // compare hashes + expect(signature.postSignHash.toString('hex')).toEqual(hash.toString('hex')) + + //Verify signature + const ec = new EC('secp256k1') + const signature1 = signature.signatureVRS.toString('hex') + const signature1_obj = { r: signature1.substr(2, 64), s: signature1.substr(66, 64) } + // @ts-ignore + const signature1Ok = ec.verify(presig_hash, signature1_obj, devicePublicKey, 'hex') + expect(signature1Ok).toEqual(true) + } finally { + await sim.close() + } + }) })

W5dKQXo1WBCyVOla&Rz~86tE@SS4D}26vcg#zE}L@)5z6QK2?TaqN^Gts@e7z z1P2sx_I_6hJ+F7$O4iBiB$RdlrH&YXzr9>kW@M4H`x6f7S%(_}aqqccD)hp(`qRA| zA|K%BiS{ei4s$OTF;eolrtNnGSssC;M5ShS*}U_%+Uh(`_@E_4mIv(aHIWoVU>w0V z4!t!PMltu@c7~zdm1Vd{%qUc$6h5YiFbRlL1_*-NW=xRIfdMh}8`U%?8k0qX-ISTm zqin&^D@gdbw?2H)h3s&?Aa&p{pZO(lty3p&1dBl>qoQWq8l1E|Z3WH7CDfjruoOmh zxX6@EM?ZAZ@uv05w>6NDxQt}=4b4o1xFZNmwr(1N)ZSne+D>4xch?>*Hx>eHf+vlv z%fo3neQocgr7(%vrw(kxU%Cr*dDtcC&c~2UmHZbGD?`#zGaJVd6_GO~Mekn+(&ow( z*FJOtM-^Q7IeXnJTfx#fTP+o_a_iT0s*SJy_7TqM6tbPw)Fkus(OFp@04i^>0Dw^E zxcw23hOZ1y!h^AVGaG-vab6U>od77Nh~>qVFvCYE72JopWJ&AGem>_^Buz^$w2^sa zh$+BD;+mjEFqRZxvE5~S@hQO)U9clUxnFpB{ZSgVyS7&}L*E!047m$dO7|r7nffi@ z-P5EAjmg)z7hXS}yA?j6>A7V9k9S?ROZ%jx1w zn*zrQwHQj5W0GljRpz-Tz!ZI*-(2(n0Iq$6eiIHB{18WK=NBI5I9uIu#_?o1g?~Y? z1Mt3nu#xTLQEk8!+^o^SZ;W-jeT_71^KM^AdMRl%BU>7v%GYN2j%)Be5fgW^%R7bx zv5DI)$4vX~RkG|BjN;+J)z);0hquzW42gHY^>$TQ-!e)iuAG9ZUUo%spuq}p*LatH zJ}Ue8qQC!67m(AjaR$=L)$M=5gxR$E;c_xhUvS<&x(Ak9=l^t-naHe-zPls z-L#E~C%CqfyT$&K^kFZ-UvHuqFjO7aolFJG%-54atTP_vzz#U6wokI{_iQ}_g3`5i z>WfeMwusF-sMU!HPa1Zw-J6cy$-S;t^@6P(OtUztRXEPg6(M4Nioap9miY0UTfe#8 zYsXrk!jkBKu@cy-S(l_(N=?H+GbvT*`1-Pa2Sj}${z#TcawY#&mN*OL5-er_( zsA!Z&-dY?$R#nCr72EtkMNKXMzNd5Ecpc?#?cLLdE_=V5PK5-6Yt5Oa64m&D&ocx% z(^tF2ec?orO`E1{~6Ep^SWW7XGa+hOIzcKoJDv-BFCTP>&v zw+_#W*^x|#gxlOwdd9c@M&{hr;bm(Gk?Ua{ku_W0yq%(&mR5w}*l3+s)oOBwQ&)yv zE~?_%-(mzRpYI-hRN8jxbbhN>5VOj>;_uF;voX*;*xRo$zzNC^@BKLH^2|B605 cwg(da_C)@&?Nu+}KU*M6bK8scW}XTE3yvd^%>V!Z literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/fl-swap_with_post_conditions/00010.png b/tests_zemu/snapshots/fl-swap_with_post_conditions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..25476f9e10849ebf2c5ff8b7b609741ce23675e6 GIT binary patch literal 12845 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00001.png b/tests_zemu/snapshots/s-contract_call_long_args/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..033f3e4baa530e7fd4b8031b0583ea46add99873 GIT binary patch literal 412 zcmV;N0b~A&P)6CHD%3qO4aHgcd`PWpUni;Aq#pH0eLXLQj$%(h_vi;iA7Z%q z(+f zipB1Fb^`k^ptP=E@^}TAG@)lo000000000000000!}0?uO5w9gzY5&|0000qjv*Cu-d;b=*PVlm^f42F3RBtRYlf(MKAIr|EY)93U*1#vxH{an^LB{Ts5vQ1#9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00003.png b/tests_zemu/snapshots/s-contract_call_long_args/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..5c15e9f9e2264184d4ad4af52d423d98c986fcb2 GIT binary patch literal 309 zcmV-50m}Y~P)Gk|Q5c&vUpTU;o8j+@Hai$F#m3 zm1#j%ET^{D#`3;t3i1Mdwshq_NY2!1P7c4c<^xNmw|3h#AiwpGrk!L7$u%Gn^hWv` zU@Crq|4fX1`;dApna+Ai<^+$c+gUle$)K&ap`9r7rM8#=hV(4}9!CD1#sAlEC)d#G z-tmQf@WM5quZ_wJJD@LgKx1@3V{`znVH*kn000000N|7_{g|O6PDUf400000NkvXX Hu0mjfC-9BM literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00004.png b/tests_zemu/snapshots/s-contract_call_long_args/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..14870b0c26af5c0be078b9108825b2eade368cfd GIT binary patch literal 461 zcmV;;0W$uHP)lOH-QLzS8Y(Z;{kZmQrbMI|_j$SHYD-Ww3JVqL!vJhTA6Kh;_aK;%k+z^+K{K zP|A1PV3Zd&Sr_@J?;(6%H}e-T2-_1L7*B9hV3f>*mMQLU(KUU5!_+vfT06MecmZzp zlq$Evz|8q@QSju{^z6uCdr@rr0%9k?qy%PEv0G#{@NBqEQjyW(g&JG6TP0VEF^=Q> zH=A4~AugjpO_v-DnHS@0zX;S=Rk+DjoRKs-;D7S{S?qF^1etpG>`6Io4v5tDDIF6& z2b@fI8p@mmTqhCyku=nC9OqzK<^Vl|;whQ(;>~AVL>@Oq3BPv@Os^5yCoJnbi}-3x zodN4mPeV_peId3GJ*)IQWTm(?AOtPw0R1^QK08ctU;HZ(X;E)l&1w!9Fa-2j^sM=I zsX1WcxJ+ZsG_)oZ8w|*cq*KY96*uJ+_*upIEa-z500000NkvXXu0mjf D%$3lp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00005.png b/tests_zemu/snapshots/s-contract_call_long_args/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9660ff01d5603d4df28d1d597a28332ff4e94c GIT binary patch literal 429 zcmV;e0aE^nP)=13_znp?|)zyc40+60iuRPY~FOyLGmd95;Fw|Sr=eoU5<|tQdT9ZI*>vg!A!~@WL zSE@G&5^+CSEC!725CBjJK#w=cAsSf)I0A5?%}|+1yw*!ewc?meJLI`g+V}m$pNeV{ zZdRp=+N7A;Qy4+(Xfbiacpc+s0@*8w7rT-48UF-WH&hu5fHD>UWyTM{&A*}=hM~z9 Xh363G9{KR@00000NkvXXu0mjfAlbHy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00006.png b/tests_zemu/snapshots/s-contract_call_long_args/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b2091a00109f4bd71112afe13e39d3e11a599bbf GIT binary patch literal 368 zcmV-$0gwKPP)$|558{h#k28}V4&tfj}S-hVXic)=%HlnggI6aHM zFZ;9FSw}t4p_b#CE`s(?I^E8pNHCC76Ix?qU=e1y?x@g9O~aO2j_a)P^uWRe)GBj} zJk74-jEO=_NqSQrlM{Z_4b$B-ZZj#~gJGQ>5NDo}{@3ySJb4rR>$x`$QItEcxl!;I z-q-l(TmRBkC6C9ZtJ0nKDd_V8JcPqA@~5FVN>>J!Y}o;K@bvo?;K5YS zfcUDF6#uWF!kv3o)ekY80iDr+&a@ja(EYZRa06a2`=;A~cg(&G@EK~wKN$E71poj5 d0001R(+>FsbCTRako5on002ovPDHLkV1lV0cf$Yx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00008.png b/tests_zemu/snapshots/s-contract_call_long_args/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e5c5d4f8c9e69d107cc1e1026a673bdf26e524 GIT binary patch literal 695 zcmV;o0!aOdP)qNtqH3`c@~ z!uw?C$%!hP6%T859KL1k2X%YSQ$nheq-VZBUu?#~(?4@^gR-OFAA;_tb5?Pe%agx)=b&>wX+}@;)7h zaKhcH5I>W9M9BKnzik_S<}h=cNX*|UZX$M{J`ao zwfU-uf}z+1NGX(8rK|i>DA1F%u08$49;>eY*0<@>!9zjB;{myYJ8w{T#v=!dSydkB zW^L}_;c^T_JSiln^=?&{d4oGPJcNV#wVi%=x8`@Pij-j0w~Sm#Tys=TDadPi?Evs9 zhP9F98+?or!{l3?;EG`dGK0!lctfrGL^{!cSArVyI$d9j7f0M_3-ED2dBLk<&KO|A z+4rc$Lq$Q(R{)r<|x>Gr}KYO$n0L#?8Z5|9Bd@43PxK#j5t^C5@^ngO#HQ-Yrxm zSLfCLszffjBl$CN$JI&AHLD+0Wyx#+8e&Z>M>jyqjcala+K$$R dGqGY2zz4LoFs;cGZae@0002ovPDHLkV1gs3N09&k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00009.png b/tests_zemu/snapshots/s-contract_call_long_args/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..86c174ca820d3a4d908b0f917bbd36745a53f811 GIT binary patch literal 385 zcmV-{0e=38P)(1k*dotBL(bL>PEnWUHdrtq5S$ksdM zN@zQLPQ@&KhS7N@g;GIpt;hdZ?vl2D_rs~k_mOSNvRU`eO#IS*YjH&VBF{Ofv_yDq zKQKNeuz_RuO{wbm;fmzy`WiJDef^50%eO%fEXQ8BQ~Fb8cAqW-P(K?el*RpVcAu^! z?6DSwifcrc%w_y3>-IgvBr|51q-(zP-F~j`(ki2HcSg&33QWt=b8vaoB9W$8HA%!< zWe=nt@f69V$Z#M1NT6IO%6FqgB|TWvD(x{?5Ld&b0it-TTPQV;)M(!$3_U-dg z2s&?*l4w5-8OH+(kiKFs*%~&$9GSrOL5%&tVr6LbpMmF56=csX24n(XF%N7200000 f000000FdAVZo11`!WV4800000NkvXXu0mjfZjY=J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00010.png b/tests_zemu/snapshots/s-contract_call_long_args/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..ead445f50676390ce9b10f1316cafae6d43025af GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsgs^Ajv*Cu-rhLP*JL2j`f#P@ z`~L@Y3L39n>K4krWc;H(@$i91U;GSC=dO-Du+2`-@qJLHn%u&hi;`FUSk;#5G|TwY zk?Ip6oZdH2Z(8f|?M(ZeS;kAJ6+LU5eKgMXxN)>ec3NW4|^F;s4z4$wG&i8+KP)L36~1!s(Yr>X(`Z+BtT+}&oY|_u*}~VASqRtifh2MXs>GA zTJ3a!ni71)t4P;kr|>DmTH#nV?{s2%ip1&k1;-k}jrz$OjZxPGi35+)1q!B7x-eLm zkv=Y+T@{aM(O%WCeU$s@U9c0Vr%QzIkGr2?%}9HOefx_7ecWnD0`EbJ7EskXW%{eGl?PIlt=Kg+Y^@Eztoh zjMOYi?T{YQs!fGOwu_4)Bv^FxzzjqZrc zg{<#wfOr;U-hOzqldxy>_>OMRMG|N^3hO$uJ*7FSY(>tdu@>u+LXm$b;ctDPhk}kl zJ?o8}H$>WT4{5fjz6wc${2+hkg^3@>IRd}>XE`(ylte0J- z0J<>)n>zyvC38?*l0-6r@yNt#-es%38~D5a&=f!u14euWQ%-ELboBQQW^)`oh{1U2 zq*G6jjEa?UwdE1xqAy4p2yTB(iiwCjg{JhrO{JJ8NW0-B9F(u`>cgvbf9pl0f@U#M zBS}*olTtHk<-7g{@F<3*(cv2$#)xA2t3ilf9zZ29DTOu6xKCscI%tKU4!-3Bd5s< z-nen&Mi-n`gzhEiXB_hM6sPerHt&C{X2T=Z8!#8a4GCb7rc&kzLa?a-==BsIY4!#p zvne4#|Kt6Nu8G&jmhne2t%&h-ZEC_-)2i221~6IkL!(^lL@0gw_V&maNzVE{gV@rc9=j)=PG-Jh1Wl__SpXeLqUO%wo1ZD zPC&fe=^X2mej41n1UfoWYiEF^UtiIXbA4Qz34E-F7IfeONNTIwcMj`wZ9Vmn9+H~e z5p4!#L1*+fRTP4Ea?RvyfUTUo7^99|9*|>$&4a#ak--mQI<%~ zA0%ZLk_I+8k+OJWR!*5UNuscu?5mN?$f7qY$r29LSr9!0;ni|D;Fj^vlEle2s@!Em zL)OSlPE%qgFS?SqYtjfL>&kYyv|nuDfH;T3g&kUpwN16eLFmx_2M^t#{p zLB`H@D8hX5pe-i&Ak+4r7tA&^#7*D;$HfW>mg>en8|*&_b2z|`$A#%R96*T*mW4N3 jKP#jZuooK}8_n-2TG^O&x%wzu;V_X{*qqt(-|JpmueRI z&2fI^;qm=t+ghimXMFuWs4g~1m)#-na#|%uc5Hv|yZu{ovDCJnpQl#LKlwLaqhVrQQFhNk>mL>MoD-81%Nt4$ z>)P>G-A+7sHr~JYfpLPdS%UFqUWb2Wn+~Nh?>Vz?Moz=xo8q_EFT7OyqvVQ&5)Ay> Z%--IXov&2RxD)7A22WQ%mvv4FO#oZ9cIE&8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00015.png b/tests_zemu/snapshots/s-contract_call_long_args/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffe03626c35d513ada7a454dd7e65884c5040ac GIT binary patch literal 332 zcmV-S0ki&zP)@23`D`w`ybeav%rbrGbma}!}KdxsMw?vK#b9Bs~LlB-7hq9k^tr21AHL9y!mLg zO9M4m(2AW%X|YQfZrD)>PP3;IJY@vYsRhT4GXEft>#J=xCg}+hH{uu+3K}Zf)7})< zG8A^n<%dgl*aQmjrB25Ua1S!%?SUdn6x&Kk0m(&Jh7sSD#$H_Mn4n}ktl;VV5kdwA zW(_#q#ytGt>S&t;&Fxtpb$OW2A9)AKP<_mB{jFpVzd9-UL}g$M&^(Vz?23@|sU48J zpxU89Iwr!afcRId(kC#0tN_#Vxkw>+6;QfDCVk3uqOCA}5rH7%RQ7y#4&`R{&z2hCnE=p?iqb zHo22hJ&xH50EI1JnS;dpjasAnkxkN5M_W(LBl2;%x;&2qAIF8>~K zzhRaAS`H?-=QM1i=Tu6{1-oD!M<5AJP1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-contract_call_long_args/00018.png b/tests_zemu/snapshots/s-contract_call_long_args/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fe668c89ac31671418758bb5384eb8629e0d39bf GIT binary patch literal 452 zcmV;#0XzPQP)j`#CA+SY?0?js`ZvC_eo0Hu9F(I*C;&h&5t?MiHQu9ofT~hQoEyKArBGeS7}N zk>Hwg1vHW=$bUoM2RYB|o1q<9`6P(UV0!WICL93~{~FDib4*7^GxbC1&V*|Kd)7!z z{?!!1tdp`Zn8{r~sEf8!z!8WUpev!;2HiNC3MY~*!e+lQox6*fE~v9Xss9o!PFk*b zhlkke4_N7MC}(wzv$0NPnCHR-7-gc&D!U@)D#9;k!16TmAFGk^%8+6JP% znhIYe8HCMzquX}_+W@|l!Ujx~d@tu7$GhP4y002ovPDHLkV1mb_&?Nu> delta 429 zcmV;e0aE_S1IGi9B!7-cL_t(|ob8#*j>8}fMQJtt{}0Y0U1Ve-zpzP4pV>D>yQcY*AiW2Z zgWsF*35e`3tIyoVbaYf*e<|IGa15ZGWvNL|RUyJO3Pcydvq!Wx4T*USY!j-6gVc)vdS4U=~Z!~n^m zr$|zsyaypO6Mt|9P5qY3f+G7mTNM~)kWOYboU1~KB9jHNYJvQpJuxJZ70I11QsZHw*=k4$000000OGs> X@S6oirT?f!00000NkvXXu0mjf_Ql9D diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index 222e09f806c2f083f0f451e0d56298273d140a8e..0f3fa1e0f073152512e6fa175ff1c293adcbdd3b 100644 GIT binary patch delta 431 zcmV;g0Z{(O1IYuBB!7@eL_t(|ob8$24#F@9g{RT?f8brriy1e4_N7MC}(wzv$0NPnCHR-7-gc&D!U@)D#9;k!16TmAFGk^%8+6JP% znhIYe8HCMzquX}_+W@|l!Ujx~d@tu7$GhP4y002ovPDHLkV1mb_&?Nu> delta 429 zcmV;e0aE_S1IGi9B!7-cL_t(|ob8#*j>8}fMQJtt{}0Y0U1Ve-zpzP4pV>D>yQcY*AiW2Z zgWsF*35e`3tIyoVbaYf*e<|IGa15ZGWvNL|RUyJO3Pcydvq!Wx4T*USY!j-6gVc)vdS4U=~Z!~n^m zr$|zsyaypO6Mt|9P5qY3f+G7mTNM~)kWOYboU1~KB9jHNYJvQpJuxJZ70I11QsZHw*=k4$000000OGs> X@S6oirT?f!00000NkvXXu0mjf_Ql9D diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00000.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..3eca54f84e9c8e3676541f153310b9dfb1ef6159 GIT binary patch literal 597 zcmV-b0;>IqP)_o) z$!7*0V%AJ!C9GYk=4j?ZZzXp?4}9JfjR6vfs)bQ)wRi;@h`WgOKHpp9FML(z4&h}d z5Li>nfsN%UH=GCnV069K#70pyOsXJ*WYN(~G64chpi@wz@A_>ZEZJi5!k0p=z~_*0 z;T5{Pmd_AKq@ZdmfkA4O28fFE3RH?xvMZHes_`gSaXFIVh{wK>&c}|y#sJV%giM9S zy3HEG^vS9h`6(FC11>_s`mPDSOJ`Fc<FX(S_!X=nJDUo2CG zs?~a$%&;mVsxbA);i!o0{~(zHoTFml%6PJIy^1j6gN)4D;J+kyRCokX%F=)$qygtE zCQh^*Iso#j(g;30As$f~p#?U?q%&apQw^-&Kw j*}2F}gwstM8~+VIXl18$@`orE00000NkvXXu0mjf=d2fG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00001.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..033f3e4baa530e7fd4b8031b0583ea46add99873 GIT binary patch literal 412 zcmV;N0b~A&P)6CHD%3qO4aHgcd`PWpUni;Aq#pH0eLXLQj$%(h_vi;iA7Z%q z(+f zipB1Fb^`k^ptP=E@^}TAG@)lo000000000000000!}0?uO5w9gzY5&|0000qjv*Cu-d;b=*PVlm^f42F3RBtRYlf(MKAIr|EY)93U*1#vxH{an^LB{Ts5vQ1#9 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00003.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..5c15e9f9e2264184d4ad4af52d423d98c986fcb2 GIT binary patch literal 309 zcmV-50m}Y~P)Gk|Q5c&vUpTU;o8j+@Hai$F#m3 zm1#j%ET^{D#`3;t3i1Mdwshq_NY2!1P7c4c<^xNmw|3h#AiwpGrk!L7$u%Gn^hWv` zU@Crq|4fX1`;dApna+Ai<^+$c+gUle$)K&ap`9r7rM8#=hV(4}9!CD1#sAlEC)d#G z-tmQf@WM5quZ_wJJD@LgKx1@3V{`znVH*kn000000N|7_{g|O6PDUf400000NkvXX Hu0mjfC-9BM literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00004.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..14870b0c26af5c0be078b9108825b2eade368cfd GIT binary patch literal 461 zcmV;;0W$uHP)lOH-QLzS8Y(Z;{kZmQrbMI|_j$SHYD-Ww3JVqL!vJhTA6Kh;_aK;%k+z^+K{K zP|A1PV3Zd&Sr_@J?;(6%H}e-T2-_1L7*B9hV3f>*mMQLU(KUU5!_+vfT06MecmZzp zlq$Evz|8q@QSju{^z6uCdr@rr0%9k?qy%PEv0G#{@NBqEQjyW(g&JG6TP0VEF^=Q> zH=A4~AugjpO_v-DnHS@0zX;S=Rk+DjoRKs-;D7S{S?qF^1etpG>`6Io4v5tDDIF6& z2b@fI8p@mmTqhCyku=nC9OqzK<^Vl|;whQ(;>~AVL>@Oq3BPv@Os^5yCoJnbi}-3x zodN4mPeV_peId3GJ*)IQWTm(?AOtPw0R1^QK08ctU;HZ(X;E)l&1w!9Fa-2j^sM=I zsX1WcxJ+ZsG_)oZ8w|*cq*KY96*uJ+_*upIEa-z500000NkvXXu0mjf D%$3lp literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00005.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9660ff01d5603d4df28d1d597a28332ff4e94c GIT binary patch literal 429 zcmV;e0aE^nP)=13_znp?|)zyc40+60iuRPY~FOyLGmd95;Fw|Sr=eoU5<|tQdT9ZI*>vg!A!~@WL zSE@G&5^+CSEC!725CBjJK#w=cAsSf)I0A5?%}|+1yw*!ewc?meJLI`g+V}m$pNeV{ zZdRp=+N7A;Qy4+(Xfbiacpc+s0@*8w7rT-48UF-WH&hu5fHD>UWyTM{&A*}=hM~z9 Xh363G9{KR@00000NkvXXu0mjfAlbHy literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00006.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b2091a00109f4bd71112afe13e39d3e11a599bbf GIT binary patch literal 368 zcmV-$0gwKPP)$|558{h#k28}V4&tfj}S-hVXic)=%HlnggI6aHM zFZ;9FSw}t4p_b#CE`s(?I^E8pNHCC76Ix?qU=e1y?x@g9O~aO2j_a)P^uWRe)GBj} zJk74-jEO=_NqSQrlM{Z_4b$B-ZZj#~gJGQ>5NDo}{@3ySJb4rR>$x`$QItEcxl!;I z-q-l(TmRBkC6C9ZtJ0nKDd_V8JcPqA@~5FVN>>J!Y}o;K@bvo?;K5YS zfcUDF6#uWF!kv3o)ekY80iDr+&a@ja(EYZRa06a2`=;A~cg(&G@EK~wKN$E71poj5 d0001R(+>FsbCTRako5on002ovPDHLkV1lV0cf$Yx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00008.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e5c5d4f8c9e69d107cc1e1026a673bdf26e524 GIT binary patch literal 695 zcmV;o0!aOdP)qNtqH3`c@~ z!uw?C$%!hP6%T859KL1k2X%YSQ$nheq-VZBUu?#~(?4@^gR-OFAA;_tb5?Pe%agx)=b&>wX+}@;)7h zaKhcH5I>W9M9BKnzik_S<}h=cNX*|UZX$M{J`ao zwfU-uf}z+1NGX(8rK|i>DA1F%u08$49;>eY*0<@>!9zjB;{myYJ8w{T#v=!dSydkB zW^L}_;c^T_JSiln^=?&{d4oGPJcNV#wVi%=x8`@Pij-j0w~Sm#Tys=TDadPi?Evs9 zhP9F98+?or!{l3?;EG`dGK0!lctfrGL^{!cSArVyI$d9j7f0M_3-ED2dBLk<&KO|A z+4rc$Lq$Q(R{)r<|x>Gr}KYO$n0L#?8Z5|9Bd@43PxK#j5t^C5@^ngO#HQ-Yrxm zSLfCLszffjBl$CN$JI&AHLD+0Wyx#+8e&Z>M>jyqjcala+K$$R dGqGY2zz4LoFs;cGZae@0002ovPDHLkV1gs3N09&k literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00009.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..86c174ca820d3a4d908b0f917bbd36745a53f811 GIT binary patch literal 385 zcmV-{0e=38P)(1k*dotBL(bL>PEnWUHdrtq5S$ksdM zN@zQLPQ@&KhS7N@g;GIpt;hdZ?vl2D_rs~k_mOSNvRU`eO#IS*YjH&VBF{Ofv_yDq zKQKNeuz_RuO{wbm;fmzy`WiJDef^50%eO%fEXQ8BQ~Fb8cAqW-P(K?el*RpVcAu^! z?6DSwifcrc%w_y3>-IgvBr|51q-(zP-F~j`(ki2HcSg&33QWt=b8vaoB9W$8HA%!< zWe=nt@f69V$Z#M1NT6IO%6FqgB|TWvD(x{?5Ld&b0it-TTPQV;)M(!$3_U-dg z2s&?*l4w5-8OH+(kiKFs*%~&$9GSrOL5%&tVr6LbpMmF56=csX24n(XF%N7200000 f000000FdAVZo11`!WV4800000NkvXXu0mjfZjY=J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00010.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..ead445f50676390ce9b10f1316cafae6d43025af GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsgs^Ajv*Cu-rhLP*JL2j`f#P@ z`~L@Y3L39n>K4krWc;H(@$i91U;GSC=dO-Du+2`-@qJLHn%u&hi;`FUSk;#5G|TwY zk?Ip6oZdH2Z(8f|?M(ZeS;kAJ6+LU5eKgMXxN)>ec3NW4|^F;s4z4$wG&i8+KP)L36~1!s(Yr>X(`Z+BtT+}&oY|_u*}~VASqRtifh2MXs>GA zTJ3a!ni71)t4P;kr|>DmTH#nV?{s2%ip1&k1;-k}jrz$OjZxPGi35+)1q!B7x-eLm zkv=Y+T@{aM(O%WCeU$s@U9c0Vr%QzIkGr2?%}9HOefx_7ecWnD0`EbJ7EskXW%{eGl?PIlt=Kg+Y^@Eztoh zjMOYi?T{YQs!fGOwu_4)Bv^FxzzjqZrc zg{<#wfOr;U-hOzqldxy>_>OMRMG|N^3hO$uJ*7FSY(>tdu@>u+LXm$b;ctDPhk}kl zJ?o8}H$>WT4{5fjz6wc${2+hkg^3@>IRd}>XE`(ylte0J- z0J<>)n>zyvC38?*l0-6r@yNt#-es%38~D5a&=f!u14euWQ%-ELboBQQW^)`oh{1U2 zq*G6jjEa?UwdE1xqAy4p2yTB(iiwCjg{JhrO{JJ8NW0-B9F(u`>cgvbf9pl0f@U#M zBS}*olTtHk<-7g{@F<3*(cv2$#)xA2t3ilf9zZ29DTOu6xKCscI%tKU4!-3Bd5s< z-nen&Mi-n`gzhEiXB_hM6sPerHt&C{X2T=Z8!#8a4GCb7rc&kzLa?a-==BsIY4!#p zvne4#|Kt6Nu8G&jmhne2t%&h-ZEC_-)2i221~6IkL!(^lL@0gw_V&maNzVE{gV@rc9=j)=PG-Jh1Wl__SpXeLqUO%wo1ZD zPC&fe=^X2mej41n1UfoWYiEF^UtiIXbA4Qz34E-F7IfeONNTIwcMj`wZ9Vmn9+H~e z5p4!#L1*+fRTP4Ea?RvyfUTUo7^99|9*|>$&4a#ak--mQI<%~ zA0%ZLk_I+8k+OJWR!*5UNuscu?5mN?$f7qY$r29LSr9!0;ni|D;Fj^vlEle2s@!Em zL)OSlPE%qgFS?SqYtjfL>&kYyv|nuDfH;T3g&kUpwN16eLFmx_2M^t#{p zLB`H@D8hX5pe-i&Ak+4r7tA&^#7*D;$HfW>mg>en8|*&_b2z|`$A#%R96*T*mW4N3 jKP#jZuooK}8_n-2TG^O&x%wzu;V_X{*qqt(-|JpmueRI z&2fI^;qm=t+ghimXMFuWs4g~1m)#-na#|%uc5Hv|yZu{ovDCJnpQl#LKlwLaqhVrQQFhNk>mL>MoD-81%Nt4$ z>)P>G-A+7sHr~JYfpLPdS%UFqUWb2Wn+~Nh?>Vz?Moz=xo8q_EFT7OyqvVQ&5)Ay> Z%--IXov&2RxD)7A22WQ%mvv4FO#oZ9cIE&8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00015.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffe03626c35d513ada7a454dd7e65884c5040ac GIT binary patch literal 332 zcmV-S0ki&zP)@23`D`w`ybeav%rbrGbma}!}KdxsMw?vK#b9Bs~LlB-7hq9k^tr21AHL9y!mLg zO9M4m(2AW%X|YQfZrD)>PP3;IJY@vYsRhT4GXEft>#J=xCg}+hH{uu+3K}Zf)7})< zG8A^n<%dgl*aQmjrB25Ua1S!%?SUdn6x&Kk0m(&Jh7sSD#$H_Mn4n}ktl;VV5kdwA zW(_#q#ytGt>S&t;&Fxtpb$OW2A9)AKP<_mB{jFpVzd9-UL}g$M&^(Vz?23@|sU48J zpxU89Iwr!afcRId(kC#0tN_#Vxkw>+6;QfDCVk3uqOCA}5rH7%RQ7y#4&`R{&z2hCnE=p?iqb zHo22hJ&xH50EI1JnS;dpjasAnkxkN5M_W(LBl2;%x;&2qA=Si0dst0#jpNJmUjnfAU zH(H;r6L8|QZzm2O4Kg{%^`6jC^N%XJAKzo)Ml>6`^Kehg4ZBbBGdPWyjlq?ce;b>5 zM|L+=EL4j!BfE`~DxxB&m;fo2@>X*o>7`JhCutSqd5JBS&i>gM4j-Oaf2u{?{Ywt+ zI6>u%Ckhs^syxumV(#JLQcOfVC?uuzY^sR7a|B=jzJ!DNwY}Uhx8`T9jC8`vZv`cj zxZ6=Fr68}OwH?5-7}iFnZ*UkR85B%u6x0yc+wuO%#i`)a zeDa)^A}*M)g?syes(u)og5C7eOgs~|1A;-3&wAHgUV%(CK|Gbo%pM<+;Tg%N-}Va& z3kwp)C_>H>)USqb9m_N3Ry^3%*iTHGkc;IADPGJD^F}0rRZi*6y|$i~g6D@mb5+ zNU9OtXO^%7ta7+hgR(K6i*f$B9Qd=N7!NbWYiJ>2@o!_Xy&1UODs+0ILD zDw772qX=Ftq=Kun_5V~LSJjccENInGa{wO6RzBdW$k=gpQe(}kM^#xe8i0ma6U)#I nkaFXij6vJ0bzvly4+8iDVFXB#5u30D00000NkvXXu0mjfL)=9K literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00018.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..891a1c8f199713971d68fcd467b54fb80e9cad42 GIT binary patch literal 396 zcmV;70dxL|P)L6Npn>#6>TXZnwqTKWi1*=ohZ#bM-ItM2y%hR&_ z(zuvh(G!5!ERtFJjicEW$)pG;ii;P1CzE=vCO<*|i8YjcGj=s2*th7lQKcLw)w(G(?!zmD zk}>KoEW^G%(Gm+U({i6ynG~RL1jX>oCU3ra%F(i2!3phU$DOt82ot}+{O1z1B|MiK zS+h%_My){{{+%&5a;mH3TTv}C>3EF5u>}dtL5p)gC^FL~kcdQLiG(H3qAKiKF)nJq z!Z2s8i@N2{;abZi!hF^GG)nAgZUuWb;aJO#Xx@8yk}=Yp-H%wVO#t{|?Cbzydi|>Q zt$h3ukGFXCR`m_IYm@0Dza{x9@hx}m3Zu&mUr%02D;EjMjk)u(!3>nG0GiQf#keXu zx*CJB3GgIWq?YZXqpLCC9xxeYE1;z|5O$lhqSoj#0{{R30000000000Kr=7yb+dc3 Si72%I0000Nkl00QS&NfZqa29D(Q}!cx(H? z-~j<>8v&?{08~Z*Ff-o_2OdKK00000007+N1*#d!k~ZJ&GXMYp07*qoM6N<$f=Si0dst0#jpNJmUjnfAU zH(H;r6L8|QZzm2O4Kg{%^`6jC^N%XJAKzo)Ml>6`^Kehg4ZBbBGdPWyjlq?ce;b>5 zM|L+=EL4j!BfE`~DxxB&m;fo2@>X*o>7`JhCutSqd5JBS&i>gM4j-Oaf2u{?{Ywt+ zI6>u%Ckhs^syxumV(#JLQcOfVC?uuzY^sR7a|B=jzJ!DNwY}Uhx8`T9jC8`vZv`cj zxZ6=Fr68}OwH?5-7}iFnZ*UkR85B%u6x0yc+wuO%#i`)a zeDa)^A}*M)g?syes(u)og5C7eOgs~|1A;-3&wAHgUV%(CK|Gbo%pM<+;Tg%N-}Va& z3kwp)C_>H>)USqb9m_N3Ry^3%*iTHGkc;IADPGJD^F}0rRZi*6y|$i~g6D@mb5+ zNU9OtXO^%7ta7+hgR(K6i*f$B9Qd=N7!NbWYiJ>2@o!_Xy&1UODs+0ILD zDw772qX=Ftq=Kun_5V~LSJjccENInGa{wO6RzBdW$k=gpQe(}kM^#xe8i0ma6U)#I nkaFXij6vJ0bzvly4+8iDVFXB#5u30D00000NkvXXu0mjfL)=9K literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00022.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..891a1c8f199713971d68fcd467b54fb80e9cad42 GIT binary patch literal 396 zcmV;70dxL|P)L6Npn>#6>TXZnwqTKWi1*=ohZ#bM-ItM2y%hR&_ z(zuvh(G!5!ERtFJjicEW$)pG;ii;P1CzE=vCO<*|i8YjcGj=s2*th7lQKcLw)w(G(?!zmD zk}>KoEW^G%(Gm+U({i6ynG~RL1jX>oCU3ra%F(i2!3phU$DOt82ot}+{O1z1B|MiK zS+h%_My){{{+%&5a;mH3TTv}C>3EF5u>}dtL5p)gC^FL~kcdQLiG(H3qAKiKF)nJq z!Z2s8i@N2{;abZi!hF^GG)nAgZUuWb;aJO#Xx@8yk}=Yp-H%wVO#t{|?Cbzydi|>Q zt$h3ukGFXCR`m_IYm@0Dza{x9@hx}m3Zu&mUr%02D;EjMjk)u(!3>nG0GiQf#keXu zx*CJB3GgIWq?YZXqpLCC9xxeYE1;z|5O$lhqSoj#0{{R30000000000Kr=7yb+dc3 Si72%I0000Nkl00QS&NfZqa29D(Q}!cx(H? z-~j<>8v&?{08~Z*Ff-o_2OdKK00000007+N1*#d!k~ZJ&GXMYp07*qoM6N<$f=Si0dst0#jpNJmUjnfAU zH(H;r6L8|QZzm2O4Kg{%^`6jC^N%XJAKzo)Ml>6`^Kehg4ZBbBGdPWyjlq?ce;b>5 zM|L+=EL4j!BfE`~DxxB&m;fo2@>X*o>7`JhCutSqd5JBS&i>gM4j-Oaf2u{?{Ywt+ zI6>u%Ckhs^syxumV(#JLQcOfVC?uuzY^sR7a|B=jzJ!DNwY}Uhx8`T9jC8`vZv`cj zxZ6=Fr68}OwH?5-7}iFnZ*UkR85B%u6x0yc+wuO%#i`)a zeDa)^A}*M)g?syes(u)og5C7eOgs~|1A;-3&wAHgUV%(CK|Gbo%pM<+;Tg%N-}Va& z3kwp)C_>H>)USqb9m_N3Ry^3%*iTHGkc;IADPGJD^F}0rRZi*6y|$i~g6D@mb5+ zNU9OtXO^%7ta7+hgR(K6i*f$B9Qd=N7!NbWYiJ>2@o!_Xy&1UODs+0ILD zDw772qX=Ftq=Kun_5V~LSJjccENInGa{wO6RzBdW$k=gpQe(}kM^#xe8i0ma6U)#I nkaFXij6vJ0bzvly4+8iDVFXB#5u30D00000NkvXXu0mjfL)=9K literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00026.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..891a1c8f199713971d68fcd467b54fb80e9cad42 GIT binary patch literal 396 zcmV;70dxL|P)L6Npn>#6>TXZnwqTKWi1*=ohZ#bM-ItM2y%hR&_ z(zuvh(G!5!ERtFJjicEW$)pG;ii;P1CzE=vCO<*|i8YjcGj=s2*th7lQKcLw)w(G(?!zmD zk}>KoEW^G%(Gm+U({i6ynG~RL1jX>oCU3ra%F(i2!3phU$DOt82ot}+{O1z1B|MiK zS+h%_My){{{+%&5a;mH3TTv}C>3EF5u>}dtL5p)gC^FL~kcdQLiG(H3qAKiKF)nJq z!Z2s8i@N2{;abZi!hF^GG)nAgZUuWb;aJO#Xx@8yk}=Yp-H%wVO#t{|?Cbzydi|>Q zt$h3ukGFXCR`m_IYm@0Dza{x9@hx}m3Zu&mUr%02D;EjMjk)u(!3>nG0GiQf#keXu zx*CJB3GgIWq?YZXqpLCC9xxeYE1;z|5O$lhqSoj#0{{R30000000000Kr=7yb+dc3 Si72%I0000AmiOkJrNGaCY7ljpJ$%zJ1pdR-bJw-x%Q;PHJ6V%t z$J(##6R53xGjdh(&S}yGoqP1E%#!~1*iF@#&A&f(z45^nWqU&H? z(Rp&`HK%E-%&f19Mr>=J-?9J1vN_Su3}#+$m%be(zvxgdZ^*O_?|Kh1Ud%k!duz+7 zD`%G7@;iG&J?|Jc^E2K7v?;2SoYlOs^6l2rCv8v{(Lz-spE`TY~@7B z(8nLt+BS8X)?R-QVU{Vs^{`FLbNz;0k}E7~@+|$Bbx*XbZT8=*=?_UKB7Z_+L|IC_Uy4@#cX4VRjn5V0s%Q~loCIG~xlwkk> literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00029.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00029.png new file mode 100644 index 0000000000000000000000000000000000000000..006c26abaac6c76b2e871b194165596c0b416694 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G!2~2j9iA5fsRN!ajv*Cu-d?-N*JQxc`taO| z-}VOL1%{U&gdOO)vH0QtN3CIpH=On}yd9NxI9#@L#=GYozkR+NZ@s(h_s<*5szDx| zmTO$v85!1fT#rxFzI@yL`PcK^*L-*W3fIF8>~K zzhRaAS`H?-=QM1i=Tu6{1-oD!M<5AJP1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/s-swap_with_post_conditions/00030.png b/tests_zemu/snapshots/s-swap_with_post_conditions/00030.png new file mode 100644 index 0000000000000000000000000000000000000000..fe668c89ac31671418758bb5384eb8629e0d39bf GIT binary patch literal 452 zcmV;#0XzPQP)j`#CA+SY?0?js`ZvC_eo0Hu9F(I*C;&h&5t?MiHQu9ofT~hQoEyKArBGeS7}N zk>Hwg1vHW=$bUoM2RYB|o1q<9`6P(UV0!WICL93~{~FDib4*7^GxbC1&V*|Kd)7!z z{?!!1tdp`Zn8{r~sEf8!z!8WUpev!;2HiNC3MY~*!e+lQox6*fE~v9Xss9o!PFk*b zhlkk@P)(!N(pGDIk3?eBAI|R zctGfuRmY^=;&gLLE z$plQVchMXuC7=e^sWvtTDw&`ex0zT1swcIh0pMfC;u&ZS=q5Mrv!0=pV&6`<$IvIm zdMf8^FEz1Ngq`}hA!x~4Ke$EBL7hXmJHXM(QCFS1BaQuhcsh0$TZO{i0Y{YU4kQ_Ax`CR)me+*t{Hnd@+X4A2pu##y7Jp zRx@t;eYZvas89`2D^>zJ_b$>Pm-eDSC8#-ypkKcIQ7LMFG-3jhiS?zY%zL8%00000 c004Z2KLb7>Q)!EXga7~l07*qoM6N<$f_u5vy#N3J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00001.png b/tests_zemu/snapshots/sp-contract_call_long_args/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c60d92397c735f9b8caf50b03ced9ce7e71572 GIT binary patch literal 748 zcmVtssF zD5gF26aWG_=XwB0@{|1E?SPk@b4ux+*YyPFgTxEmIajb{@w3~34(!!%cdOXHWegs1 zYmQ@9Kp|!)&T!HSusL+sJ!}OS9M|=QSOZYD$~xBjyEWz>`+ZJ7xqfF4IFxWV;Q^eN zX8-^I1lJxwPIy|(5efsP%V?V4CcR6puVH?058@>F$B9<#W^*6GO25AUd7*!32#8VnC zPabI}MdLK-^q+jfY#O(%*%qu9-EKxD44VOghC*Qoz<4#T<_k z=@(ozYo2_MBzzO%CM>E2r6q5QfUEAtU3OezT)iHNbvs5arz`03%z&Ei><_be)E477 zXRJGnuUg!PCftX5w$0$T;~D@il}zFvo>kLU)VLxnhz)x{gq9mVyu1@kg&>KKU&L0?)b}-+e&bH?_zGD5Ex~5^1W7ibF(Uu~ e00000oWU=^PW%L6L4zUy0000?{cJUiB6K08SxZn3Jvu|zI)Y*AUs%>JAvdJvFb9GMZ z59d^uDP48JCEQi5LDv4kg{(Tx5y@rgnRfA!E*IH)=Go8Kc52)69%TlG59NJRXMX!{ z_~hIZ`(-~BzpXP-n8~JcxgkX=;7p8q*UP?z`_GiE<2PP;dBW2AnawMf)*ITMND)8v i#CDG79-#N2;DZsr;)iyLbyoy4K_Z^6elF{r5}E+0w|go8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00003.png b/tests_zemu/snapshots/sp-contract_call_long_args/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3007712ee1ac8bbe590808efa3fd36bd796ce187 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2}AYZcrPebCi zH)?nOd)!IoS6QOT;kQ)w$^UyUteKt%1%O%@iuF$)4D$M9bgW|M{C~T%7O35HuCqI4 z@#bft{ON<6W*f_}ZFkvxc}9@d#&!9T&kiUucJZv}ak^XaB`9%L`ez+SE#A4u;(zORmc-mr|2ciZgis_xAd(|#6|he~@E|E^3bn!RfCCa>qeXUuBwv}I=4 z(E4l5p_fPdY&M*pw&9uNv7hd5n$G^4bj|xfnn#1N(1RY9KQlx5gu3ON+2wa0kqIl8 yNLiG>OfYLveveGWBCg6L`EM>2j36%~Kttv}cZFxlk0exbK!TpGelF{r5}E*IPnsqG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00004.png b/tests_zemu/snapshots/sp-contract_call_long_args/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd52883d3c6d9d9e1df1f14c3e41119b38e5829 GIT binary patch literal 539 zcmV+$0_6RPP)`*U+ZZ;~@{cHfjTDNq|LqEmB;zZHqDH@>EU{%yn{waExy*FNBtwvw0!O zoly;XBz}G`X;-kE-XAIbOywA3o~K+PRmp7SwS^H+bIV~Vm;I`K%C3#@n2dP?tiO`q zf|?9Va@7-$nslbfpK3wAWXs-wAr$|($;~Z_H?JP_OMjOzDgp9=2Zo^2l-k^5v!XL< z{0U>1q3R?YvZ+{N7eO(d2ioX)09 zwi7UeO!TLrgqrA2h8(PfQD`O1!z+>DZTu*IslU#1M0M9)Jc(KrKiBRGmx@hgu(z4g zw>L5T9I>;iuI6$34%i7VX5{7EhtP9Sm=9U<&e9#cCINCZwFRhohW>>Sra4gdfE0000000000 d0001V{sH%;kg{D(3aEaktG3V{f)4fL&cpNsb ze%bQRd(m{;lvbT)S*AA6CExud56I_m94VFoYGPox{gd;`)MCB!noAwd7WkfvR7==g zv0&2KmbVSX&%Peg7u1Zkd_HATPI#bowAXGa1z(GYVTY$2J$z&Rv{=gpnMpJ5SBml( zX8YuvN%2Y4-iwO40))T&v1Uw^EO z(qW&&HTAK-%GpgJ>5rd!ab8?p#r|iDPXr&&`-bHrkJ;1;wr{gKyem0Bo=H#JsZQ0s zGg|d`>5*y4+`okkBv&r0`1wA^?Q{7>&K;)n=N%5n`sQA?@7h}DtA#lS{Qu7im|eg! zRVe?!BJ;aXDn(20*s?tR?_O5()MvIyRpr52saIQn{+Hcg^=q;qzt0Wl43y@SKZGJ@+ND>(Ggh=^nI7yA}3YVujUA0*@H>gTe~DWM4f$8Oyx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00006.png b/tests_zemu/snapshots/sp-contract_call_long_args/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4dfd1622600e23f14395022f830b0146c17a GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2#?xbb~o`%G2 zmuFY}S1z3Xub}NDQ)j~A<5#}_+*+D>LExej2T<36lKQyDq@GWY3uWRa1{d6)v0v@j zjNXHG7t6lMiCaxwyXL+`vXziaVEE{J~x}HDY)0&2ZDc+Ifzev*ON`ALw25Vpq?mjdRP_*QHk9-&y!T zWQ*}zv#f`|^&Z%;-n~$2oBB9&y<4-DlpTX^u*<3=UpOYZZ#nj`dx^xy-RFdXuJr%H z{J!aReMjoCrzPhv7TxCG;k(WvExY$t)6$#;x^rUP%=Z1ziAzopr0M5O~mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00007.png b/tests_zemu/snapshots/sp-contract_call_long_args/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..db320aacd3750402a291aa8cf928c90fcaf3dc25 GIT binary patch literal 323 zcmV-J0lfZ+P)5u=m{`Q0yj2|`MvdG358cYF#r7pnq=|4J(W92Qt9kO527T_k?Uyx*4 zXoK0q$8E1Z3G^hAJc0gWt4Wsq(=4P~_D`k;k#wO*?%_z%3jhEB000000001o`36qk Vwu|6ptx^C0002ovPDHLkV1mltk_i9+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00008.png b/tests_zemu/snapshots/sp-contract_call_long_args/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1f95cf228589972c4400e9c4f24de22882e527db GIT binary patch literal 822 zcmV-61Ihe}P)Pc=PSVigaiWQBqaa<00000z_a9>bIz-^u=u-L zfr)Hx`kSBC3OLk8ysoPhUe|R$Dj#aZ!ado21zaD}w=+be*B?r)%{gfW5RR~~%hoHP z1eu7fi|}-{9%c6x5a&44-)!xGdoK-cr$y{gPn-(z(EbO1!q$7h|G=Ns3OoRr@(4iy z01(951IWQn47K9nkKBpGe2!RtCwXcC(umOu(Om3Zl;@oqdZy3enCmGH$LQBVJIuM| z#s^Z!n<6Eo1>TOR3_q9}%4@=+@`i3&<6_;KmB-Ndq~MZTT{1UqnuI4|-GqbsJ)49X zxkhOUYjINaYj8NCB=5+*pQ{e2qnND?58uXOj0}v|8ic$^FeHnBC`qg##(ko;J6Oy^V+ z#6ua6?D4mo#)&*hfqF<$(2Z(jSpPKyQ^Wc%10SpeQD`NOk>P`>becDk-pU_%Me&iQ zQ!T9BsExj~Hn~3H(CQMg5i)koELuqqd{o*v-KSznd<@3Z5hWvzH0E4zXd3<5&^&yB z9B;v(T=d)*0DX_SsUYveqhIT3>q-~#{v0N{)F z{vS|p!sOU0mL%mxHa}AuKP58WkMk0)&+o*|k{apB`e`Kb8F^%syujPP4YgA`8coT7 zvpD!aVyzj_;35d-@sA|9>a~bO(pya-sC;!xG_5A_-U{doKF`9tTfW(z6oP)`PVnlF zbKQfWOYMWm?>LQ)#+3mUzi+La2Ydhk0001;f1k*lRlAigcK`qY07*qoM6N<$f*@ms AlK=n! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00009.png b/tests_zemu/snapshots/sp-contract_call_long_args/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b603f27299361beaff4d344081c05cf14960b645 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QvW?&978JRyuIPrcgTQ;^}@M~ zyh*?1HOptZx{5Hha$UUD_&rSY)uF$hZ#q&L85%DCbrCO^67~95fLG_*CmZj-VB*`j zY`@$6Fs0@DUogqN+?*}F^IDWwrr`Z&(O#bWURSU5ci0)RPW*A+i^GR?mRT}3+d6*l z)mXbneZkT1QP)mJ*H8Y%@@D&1kCWT~Px>Qe_2yBX#24er*K;4b-&=ppisyNxmH*^& zwwlf>x*7a;*&d|MH)byRpKv+WA$;A!gE|cF4Kn}Fy!zH&pz&zU?wgn8(+~9A57uAA zUHQ&)VsOpjH)hV${$;*%(fvC)ve{!-fJ(8&qzXo$w;|wx!T*KaEs}w{^5;PUp00i_ I>zopr0Keyo;Q#;t literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00010.png b/tests_zemu/snapshots/sp-contract_call_long_args/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..22822ee2621172d3ba3def746922c173ba60aacf GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Eba4!+nDh2#^twX|0u6~K z>FRIlJ>MKlfHCExaVGG7Mgxl>e937o`RI3 zFW(w2)K#y_?>-i{WEcCF+Z$im?&bU-oby~t?anlRiQmuCm_6IR=vx(6J#TQ%*)Qxj z%Z8bc;fwHW<|?x}haYdfl4lmVcAjdy!nWx>kGQ?&YKLs>jmTKSyjJJF`Oo}E%IAMf z(be2vm~rd>i>S5|gL0%2*Cu~R zX*c@G((*lI26OOF{^xm|K?i44x(ixm$1mK%Zj--rtEE9G;q?y3hw?w99^&Y8xr*nr*rq6OF7$BQPNJQxz9 e4-7$MU~rbbFi4y))Nn^VNZ8ZW&t;ucLK6T6J-z1u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00011.png b/tests_zemu/snapshots/sp-contract_call_long_args/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0c71d1d93df800f6bc6218460017ff4cf1fc84b1 GIT binary patch literal 921 zcmV;K17`e*P)K@+xzYDMHDucpDp-4Jf!A&1$_X@Zk zq}J3cV?_KUs;y^qX~kiiXvtDet^mT)SxGzu3OBQL1(Xh3`bS&gflR}1j|o8#1j|5sK#9fTA&(T+ky^Y%X<|eh5dg=3aBAcgMFY4nXsFg8+9`Gi zwA;XbrY7a!LsAalnsTCn>(P>KT9!#{Q8Q1gVwbcWYEK?R?URB_f~=ffZI|#OP%6S` z-`or2$W=%)Sc{XQUya=nC3!<)(>1CC_=}6Cq!xB9b`Wiv9v_y3HW3gddD2^q@?D|7 z5rTXzt4yf1QUD8~$M9f(6c7{DP zjbIODJhF?gNO3D*S7YGLH3AOD@y$2$Z}U6Mh$jvospV zuQtuqlh^{XRO#il{-%m=-5iVW!5D!s$Wsga!p}<_j5@$K{crdp=*leBoi7Oqu_P&D zG$pA%Qaug+Jbh&JXMyK6uGp341WHD_eE4sw<3sT7222P+_XqdBL^e0F2Y{4n*DeY| vInUktEVop7Z(jdQ`T2wof*=TjAeh8IGA}8z(ji(e00000NkvXXu0mjfPtmFV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00012.png b/tests_zemu/snapshots/sp-contract_call_long_args/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..d99fa0b21734c5b25386928b1110a512648536a8 GIT binary patch literal 461 zcmV;;0W$uHP)HGY&$VY;RGz0(u003PnrIb?bCsC{{dAwMb zsnxvBk8^t$H3C$|F~+Fga=c!aan8Z7XJg@Wc<;f#FUA;iL~0?ktCd$mI)iINcSr@=EfY@ORlbD$iuz^8fHyf z=js3QY|Kc^!LMEr003}xdLy{Qm+h#vyPzBq@u4I>Yt=I0^JG+xF-KIx7V?Tx(vhP_?Y3|5R)V5-Yo1B2vXDRmcdP`46PybhpYjOhi zSseH2Nt;YS<6oyy;ytFm)@o|=w>+g#-}A;H3@s@`{cp6`y7!6OxW}mmndrMwLQV9Y zk%K$23f-v_WOA?+;ROHy0000000000000000G9a!jVoVnuHG%CpU#%bfl#&pZ5;=Lfs>AECUynhS{x46l#Q zW<2{k?eBzl`=^9G+QHFsJs?@+K*SZMDf?O0EZ*UGf+=V6Uy+Rr)~Wwn{)=<2G~wr6 zEL9?y((zv4?s=8Te^dQ}e7}h=W}EiHY1)j#(>(NnK0yWsXQi*b?0$Y_Pn07_*wfX| JWt~$(6999(hO__x literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00014.png b/tests_zemu/snapshots/sp-contract_call_long_args/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..35f106cdc659c2f1b8b19b89972c4ac1bc9c95db GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2#B44utPg~-) zH)?nOd+a@3H^YRb@R7*RU3<^#PnHah)-VVL>B{>)L-v3}+P0V{bDq0>>OXUad%+u1 z>jwW*Jij!|HqZI|X>$COKj#FP?cKOPl`IbpUFEgrz2~i|9LCIAww7O$bS6JLbzT;mCD$9$wAZu!4%?lt_h3iF*6Tf+zUsVO$5`*Qi}fqV zmd7j%rdrtt-X(rbSs!l4kg4{}jcnpTFU&z{>Y5TC5s#&!66< zwJvgbrwD)2;$Y>{glV%G?QD*JWp6$ASR~y+==8;auRJsM#ai!jGMjy}y?si&;rsf_ zbHBVQIc9w1ev+}x#~r_4?)Ol3`n%wFYsGZ=^^H63zjr!SHpz##O=&MM5RkzEgM7A& VyW{PTukZy4d%F6$taD0e0sw1>rJ?`; literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00015.png b/tests_zemu/snapshots/sp-contract_call_long_args/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..404a33596b07383dda8943c0ee6b42968b0a51dc GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9gba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_p@f%5!Jc-#_vBFCWbGaT?|!$njVyxzvtpnRC=0q?&fN>|9&p3j&(eH z7|ZBAbMCyON|TD?%w9TWuKWD=9Z;yw^L=k(i(UAy%tdkmH-)!+o22}@WXld)hsV2p zuEj2_K2T@uw!h;x!)b=ypXJ=TrzV%q+L`z)U~9mi+2_LU7(Vd#`LA-uS)ZZiY&}oJ zv$8i#PhZVDbf-t|J#V&RpTgKeCJ!!i$ zKYKg>{CDZ2eN;PNMdzM*S0{M>H<`P_^MA^gM)h@0^UR!<@wO?&0RsUUB+O8^kAM33 Sw(w6*kg%t#pUXO@geCxpX{74_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00016.png b/tests_zemu/snapshots/sp-contract_call_long_args/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4be69934787c368c2b5ed677cc7f5a2470be3b GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-contract_call_long_args/00017.png b/tests_zemu/snapshots/sp-contract_call_long_args/00017.png new file mode 100644 index 0000000000000000000000000000000000000000..0425466580963a2bef09ca2320cb40d8843caf4e GIT binary patch literal 511 zcmVxy1gt*>D?pb7$J^uQ z6u**uQJ}E>hp-u-86aK-Z1@Wygb+dqA%qYg$1gOyHfEUU(MbRR002ovPDHLkV1hoO B;)(zO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index d8ed08de1a07e8baf8ebcf8b80a7659fbeacb3d0..66e6ea9b2f48d3740547646f827ed287ff294b26 100644 GIT binary patch delta 362 zcmeyv)XF?TrQXNW#WAE}&fA;Oe9a01t%^Q z3A>qOmWnL4`dU4^>659#v5Xr>Us=u67+n+y3{W7?jHmA<-R*>!e=MTPpQk}EZ zSZ3PW_9qPbtjQkxL)x9+#6`S&I2nPtP#8YQ?^C<^`Iw66eRhzjr>mdKI;Vst E08mM*CjbBd delta 353 zcmZo={=+murQX@o#WAE}&f6P-e9a01u7S5o)Zf*6zF8{2jD=l7M6m7Iy!FRcsphw6 zTCp=AfZWGfwhSk$^Q z3A>qOmWnL4`dU4^>659#v5Xr>Us=u67+n+y3{W7?jHmA<-R*>!e=MTPpQk}EZ zSZ3PW_9qPbtjQkxL)x9+#6`S&I2nPtP#8YQ?^C<^`Iw66eRhzjr>mdKI;Vst E08mM*CjbBd delta 353 zcmZo={=+murQX@o#WAE}&f6P-e9a01u7S5o)Zf*6zF8{2jD=l7M6m7Iy!FRcsphw6 zTCp=AfZWGfwhSk$@P)(!N(pGDIk3?eBAI|R zctGfuRmY^=;&gLLE z$plQVchMXuC7=e^sWvtTDw&`ex0zT1swcIh0pMfC;u&ZS=q5Mrv!0=pV&6`<$IvIm zdMf8^FEz1Ngq`}hA!x~4Ke$EBL7hXmJHXM(QCFS1BaQuhcsh0$TZO{i0Y{YU4kQ_Ax`CR)me+*t{Hnd@+X4A2pu##y7Jp zRx@t;eYZvas89`2D^>zJ_b$>Pm-eDSC8#-ypkKcIQ7LMFG-3jhiS?zY%zL8%00000 c004Z2KLb7>Q)!EXga7~l07*qoM6N<$f_u5vy#N3J literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00001.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c60d92397c735f9b8caf50b03ced9ce7e71572 GIT binary patch literal 748 zcmVtssF zD5gF26aWG_=XwB0@{|1E?SPk@b4ux+*YyPFgTxEmIajb{@w3~34(!!%cdOXHWegs1 zYmQ@9Kp|!)&T!HSusL+sJ!}OS9M|=QSOZYD$~xBjyEWz>`+ZJ7xqfF4IFxWV;Q^eN zX8-^I1lJxwPIy|(5efsP%V?V4CcR6puVH?058@>F$B9<#W^*6GO25AUd7*!32#8VnC zPabI}MdLK-^q+jfY#O(%*%qu9-EKxD44VOghC*Qoz<4#T<_k z=@(ozYo2_MBzzO%CM>E2r6q5QfUEAtU3OezT)iHNbvs5arz`03%z&Ei><_be)E477 zXRJGnuUg!PCftX5w$0$T;~D@il}zFvo>kLU)VLxnhz)x{gq9mVyu1@kg&>KKU&L0?)b}-+e&bH?_zGD5Ex~5^1W7ibF(Uu~ e00000oWU=^PW%L6L4zUy0000?{cJUiB6K08SxZn3Jvu|zI)Y*AUs%>JAvdJvFb9GMZ z59d^uDP48JCEQi5LDv4kg{(Tx5y@rgnRfA!E*IH)=Go8Kc52)69%TlG59NJRXMX!{ z_~hIZ`(-~BzpXP-n8~JcxgkX=;7p8q*UP?z`_GiE<2PP;dBW2AnawMf)*ITMND)8v i#CDG79-#N2;DZsr;)iyLbyoy4K_Z^6elF{r5}E+0w|go8 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00003.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..3007712ee1ac8bbe590808efa3fd36bd796ce187 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hoba4!+nDh2}AYZcrPebCi zH)?nOd)!IoS6QOT;kQ)w$^UyUteKt%1%O%@iuF$)4D$M9bgW|M{C~T%7O35HuCqI4 z@#bft{ON<6W*f_}ZFkvxc}9@d#&!9T&kiUucJZv}ak^XaB`9%L`ez+SE#A4u;(zORmc-mr|2ciZgis_xAd(|#6|he~@E|E^3bn!RfCCa>qeXUuBwv}I=4 z(E4l5p_fPdY&M*pw&9uNv7hd5n$G^4bj|xfnn#1N(1RY9KQlx5gu3ON+2wa0kqIl8 yNLiG>OfYLveveGWBCg6L`EM>2j36%~Kttv}cZFxlk0exbK!TpGelF{r5}E*IPnsqG literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00004.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd52883d3c6d9d9e1df1f14c3e41119b38e5829 GIT binary patch literal 539 zcmV+$0_6RPP)`*U+ZZ;~@{cHfjTDNq|LqEmB;zZHqDH@>EU{%yn{waExy*FNBtwvw0!O zoly;XBz}G`X;-kE-XAIbOywA3o~K+PRmp7SwS^H+bIV~Vm;I`K%C3#@n2dP?tiO`q zf|?9Va@7-$nslbfpK3wAWXs-wAr$|($;~Z_H?JP_OMjOzDgp9=2Zo^2l-k^5v!XL< z{0U>1q3R?YvZ+{N7eO(d2ioX)09 zwi7UeO!TLrgqrA2h8(PfQD`O1!z+>DZTu*IslU#1M0M9)Jc(KrKiBRGmx@hgu(z4g zw>L5T9I>;iuI6$34%i7VX5{7EhtP9Sm=9U<&e9#cCINCZwFRhohW>>Sra4gdfE0000000000 d0001V{sH%;kg{D(3aEaktG3V{f)4fL&cpNsb ze%bQRd(m{;lvbT)S*AA6CExud56I_m94VFoYGPox{gd;`)MCB!noAwd7WkfvR7==g zv0&2KmbVSX&%Peg7u1Zkd_HATPI#bowAXGa1z(GYVTY$2J$z&Rv{=gpnMpJ5SBml( zX8YuvN%2Y4-iwO40))T&v1Uw^EO z(qW&&HTAK-%GpgJ>5rd!ab8?p#r|iDPXr&&`-bHrkJ;1;wr{gKyem0Bo=H#JsZQ0s zGg|d`>5*y4+`okkBv&r0`1wA^?Q{7>&K;)n=N%5n`sQA?@7h}DtA#lS{Qu7im|eg! zRVe?!BJ;aXDn(20*s?tR?_O5()MvIyRpr52saIQn{+Hcg^=q;qzt0Wl43y@SKZGJ@+ND>(Ggh=^nI7yA}3YVujUA0*@H>gTe~DWM4f$8Oyx literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00006.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aade4dfd1622600e23f14395022f830b0146c17a GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Fba4!+nDh2#?xbb~o`%G2 zmuFY}S1z3Xub}NDQ)j~A<5#}_+*+D>LExej2T<36lKQyDq@GWY3uWRa1{d6)v0v@j zjNXHG7t6lMiCaxwyXL+`vXziaVEE{J~x}HDY)0&2ZDc+Ifzev*ON`ALw25Vpq?mjdRP_*QHk9-&y!T zWQ*}zv#f`|^&Z%;-n~$2oBB9&y<4-DlpTX^u*<3=UpOYZZ#nj`dx^xy-RFdXuJr%H z{J!aReMjoCrzPhv7TxCG;k(WvExY$t)6$#;x^rUP%=Z1ziAzopr0M5O~mH+?% literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00007.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..db320aacd3750402a291aa8cf928c90fcaf3dc25 GIT binary patch literal 323 zcmV-J0lfZ+P)5u=m{`Q0yj2|`MvdG358cYF#r7pnq=|4J(W92Qt9kO527T_k?Uyx*4 zXoK0q$8E1Z3G^hAJc0gWt4Wsq(=4P~_D`k;k#wO*?%_z%3jhEB000000001o`36qk Vwu|6ptx^C0002ovPDHLkV1mltk_i9+ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00008.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..1f95cf228589972c4400e9c4f24de22882e527db GIT binary patch literal 822 zcmV-61Ihe}P)Pc=PSVigaiWQBqaa<00000z_a9>bIz-^u=u-L zfr)Hx`kSBC3OLk8ysoPhUe|R$Dj#aZ!ado21zaD}w=+be*B?r)%{gfW5RR~~%hoHP z1eu7fi|}-{9%c6x5a&44-)!xGdoK-cr$y{gPn-(z(EbO1!q$7h|G=Ns3OoRr@(4iy z01(951IWQn47K9nkKBpGe2!RtCwXcC(umOu(Om3Zl;@oqdZy3enCmGH$LQBVJIuM| z#s^Z!n<6Eo1>TOR3_q9}%4@=+@`i3&<6_;KmB-Ndq~MZTT{1UqnuI4|-GqbsJ)49X zxkhOUYjINaYj8NCB=5+*pQ{e2qnND?58uXOj0}v|8ic$^FeHnBC`qg##(ko;J6Oy^V+ z#6ua6?D4mo#)&*hfqF<$(2Z(jSpPKyQ^Wc%10SpeQD`NOk>P`>becDk-pU_%Me&iQ zQ!T9BsExj~Hn~3H(CQMg5i)koELuqqd{o*v-KSznd<@3Z5hWvzH0E4zXd3<5&^&yB z9B;v(T=d)*0DX_SsUYveqhIT3>q-~#{v0N{)F z{vS|p!sOU0mL%mxHa}AuKP58WkMk0)&+o*|k{apB`e`Kb8F^%syujPP4YgA`8coT7 zvpD!aVyzj_;35d-@sA|9>a~bO(pya-sC;!xG_5A_-U{doKF`9tTfW(z6oP)`PVnlF zbKQfWOYMWm?>LQ)#+3mUzi+La2Ydhk0001;f1k*lRlAigcK`qY07*qoM6N<$f*@ms AlK=n! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00009.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..b603f27299361beaff4d344081c05cf14960b645 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QvW?&978JRyuIPrcgTQ;^}@M~ zyh*?1HOptZx{5Hha$UUD_&rSY)uF$hZ#q&L85%DCbrCO^67~95fLG_*CmZj-VB*`j zY`@$6Fs0@DUogqN+?*}F^IDWwrr`Z&(O#bWURSU5ci0)RPW*A+i^GR?mRT}3+d6*l z)mXbneZkT1QP)mJ*H8Y%@@D&1kCWT~Px>Qe_2yBX#24er*K;4b-&=ppisyNxmH*^& zwwlf>x*7a;*&d|MH)byRpKv+WA$;A!gE|cF4Kn}Fy!zH&pz&zU?wgn8(+~9A57uAA zUHQ&)VsOpjH)hV${$;*%(fvC)ve{!-fJ(8&qzXo$w;|wx!T*KaEs}w{^5;PUp00i_ I>zopr0Keyo;Q#;t literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00010.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..22822ee2621172d3ba3def746922c173ba60aacf GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Eba4!+nDh2#^twX|0u6~K z>FRIlJ>MKlfHCExaVGG7Mgxl>e937o`RI3 zFW(w2)K#y_?>-i{WEcCF+Z$im?&bU-oby~t?anlRiQmuCm_6IR=vx(6J#TQ%*)Qxj z%Z8bc;fwHW<|?x}haYdfl4lmVcAjdy!nWx>kGQ?&YKLs>jmTKSyjJJF`Oo}E%IAMf z(be2vm~rd>i>S5|gL0%2*Cu~R zX*c@G((*lI26OOF{^xm|K?i44x(ixm$1mK%Zj--rtEE9G;q?y3hw?w99^&Y8xr*nr*rq6OF7$BQPNJQxz9 e4-7$MU~rbbFi4y))Nn^VNZ8ZW&t;ucLK6T6J-z1u literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00011.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..0c71d1d93df800f6bc6218460017ff4cf1fc84b1 GIT binary patch literal 921 zcmV;K17`e*P)K@+xzYDMHDucpDp-4Jf!A&1$_X@Zk zq}J3cV?_KUs;y^qX~kiiXvtDet^mT)SxGzu3OBQL1(Xh3`bS&gflR}1j|o8#1j|5sK#9fTA&(T+ky^Y%X<|eh5dg=3aBAcgMFY4nXsFg8+9`Gi zwA;XbrY7a!LsAalnsTCn>(P>KT9!#{Q8Q1gVwbcWYEK?R?URB_f~=ffZI|#OP%6S` z-`or2$W=%)Sc{XQUya=nC3!<)(>1CC_=}6Cq!xB9b`Wiv9v_y3HW3gddD2^q@?D|7 z5rTXzt4yf1QUD8~$M9f(6c7{DP zjbIODJhF?gNO3D*S7YGLH3AOD@y$2$Z}U6Mh$jvospV zuQtuqlh^{XRO#il{-%m=-5iVW!5D!s$Wsga!p}<_j5@$K{crdp=*leBoi7Oqu_P&D zG$pA%Qaug+Jbh&JXMyK6uGp341WHD_eE4sw<3sT7222P+_XqdBL^e0F2Y{4n*DeY| vInUktEVop7Z(jdQ`T2wof*=TjAeh8IGA}8z(ji(e00000NkvXXu0mjfPtmFV literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00012.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..d99fa0b21734c5b25386928b1110a512648536a8 GIT binary patch literal 461 zcmV;;0W$uHP)HGY&$VY;RGz0(u003PnrIb?bCsC{{dAwMb zsnxvBk8^t$H3C$|F~+Fga=c!aan8Z7XJg@Wc<;f#FUA;iL~0?ktCd$mI)iINcSr@=EfY@ORlbD$iuz^8fHyf z=js3QY|Kc^!LMEr003}xdLy{Qm+h#vyPzBq@u4I>Yt=I0^JG+xF-KIx7V?Tx(vhP_?Y3|5R)V5-Yo1B2vXDRmcdP`46PybhpYjOhi zSseH2Nt;YS<6oyy;ytFm)@o|=w>+g#-}A;H3@s@`{cp6`y7!6OxW}mmndrMwLQV9Y zk%K$23f-v_WOA?+;ROHy0000000000000000G9a!jVoVnuHG%CpU#%bfl#&pZ5;=Lfs>AECUynhS{x46l#Q zW<2{k?eBzl`=^9G+QHFsJs?@+K*SZMDf?O0EZ*UGf+=V6Uy+Rr)~Wwn{)=<2G~wr6 zEL9?y((zv4?s=8Te^dQ}e7}h=W}EiHY1)j#(>(NnK0yWsXQi*b?0$Y_Pn07_*wfX| JWt~$(6999(hO__x literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00014.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..35f106cdc659c2f1b8b19b89972c4ac1bc9c95db GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9eba4!+nDh2#B44utPg~-) zH)?nOd+a@3H^YRb@R7*RU3<^#PnHah)-VVL>B{>)L-v3}+P0V{bDq0>>OXUad%+u1 z>jwW*Jij!|HqZI|X>$COKj#FP?cKOPl`IbpUFEgrz2~i|9LCIAww7O$bS6JLbzT;mCD$9$wAZu!4%?lt_h3iF*6Tf+zUsVO$5`*Qi}fqV zmd7j%rdrtt-X(rbSs!l4kg4{}jcnpTFU&z{>Y5TC5s#&!66< zwJvgbrwD)2;$Y>{glV%G?QD*JWp6$ASR~y+==8;auRJsM#ai!jGMjy}y?si&;rsf_ zbHBVQIc9w1ev+}x#~r_4?)Ol3`n%wFYsGZ=^^H63zjr!SHpz##O=&MM5RkzEgM7A& VyW{PTukZy4d%F6$taD0e0sw1>rJ?`; literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00015.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..404a33596b07383dda8943c0ee6b42968b0a51dc GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9gba4!+nDh2#qEM59KwDzg zF3#`vm+mc<_p@f%5!Jc-#_vBFCWbGaT?|!$njVyxzvtpnRC=0q?&fN>|9&p3j&(eH z7|ZBAbMCyON|TD?%w9TWuKWD=9Z;yw^L=k(i(UAy%tdkmH-)!+o22}@WXld)hsV2p zuEj2_K2T@uw!h;x!)b=ypXJ=TrzV%q+L`z)U~9mi+2_LU7(Vd#`LA-uS)ZZiY&}oJ zv$8i#PhZVDbf-t|J#V&RpTgKeCJ!!i$ zKYKg>{CDZ2eN;PNMdzM*S0{M>H<`P_^MA^gM)h@0^UR!<@wO?&0RsUUB+O8^kAM33 Sw(w6*kg%t#pUXO@geCxpX{74_ literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00016.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00016.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00018.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..fecc41ede4831c9c119eb9b75aea4caf0e7b72ab GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#w9p|19*2vs z!fyPZv`O54!%Uw3CcoJW_CD`+)G!hBD!mQV!%)sYKheeIw5IBO$B$}CW{hWNEv@i7 zpUnDX_C@`=_xFOleoc&3J$qGI>DIoR8^e>UMXzh>g`R)Hb>4e@-c>=*-HTEKlV{(2 z@#Mx$C&RG2OU(^$@11e)$=%ws%8bVM|E`VF@G6^p_^NLBy?1lM4j8c8&YD_ZTk<>C zk=^c=VOv}Etsonr1oH_p+`V55@;B-}celB5`4#)I$Y!929vqjE`H@z4!g}?yWkn*h zHeT>*cbf9U{NdF2VA&(;51x5A7zhdUu;{403JLggHTCrW5+2zei8{62&3O|#_sw=& s(YepKNT4%TL+JcNj}~!|Z;`-`Gu*uzopr0Bi1%=>Px# literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00019.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00021.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00021.png new file mode 100644 index 0000000000000000000000000000000000000000..fecc41ede4831c9c119eb9b75aea4caf0e7b72ab GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hrba4!+nDh2#w9p|19*2vs z!fyPZv`O54!%Uw3CcoJW_CD`+)G!hBD!mQV!%)sYKheeIw5IBO$B$}CW{hWNEv@i7 zpUnDX_C@`=_xFOleoc&3J$qGI>DIoR8^e>UMXzh>g`R)Hb>4e@-c>=*-HTEKlV{(2 z@#Mx$C&RG2OU(^$@11e)$=%ws%8bVM|E`VF@G6^p_^NLBy?1lM4j8c8&YD_ZTk<>C zk=^c=VOv}Etsonr1oH_p+`V55@;B-}celB5`4#)I$Y!929vqjE`H@z4!g}?yWkn*h zHeT>*cbf9U{NdF2VA&(;51x5A7zhdUu;{403JLggHTCrW5+2zei8{62&3O|#_sw=& s(YepKNT4%TL+JcNj}~!|Z;`-`Gu*uzopr0Bi1%=>Px# literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00022.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00022.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e41f4941961115bc8f216bf56a900c37db496 GIT binary patch literal 846 zcmV-U1F`&xP)Z&sPFM2xJ5nNlE|!00000Oy_G=$2n*E^*9bo zMy>MIHZ|#PbqPQ7yQCb)!92lgI~0ytG@Hc^VC0;OOXvqymB>U>|H&p)xh#Bwx4u^! zz;PDD=>sWzd{A4law_cfHI2n9K%Ii%gV{QLYz;kx^?Sg~?wkO%ipPbZIIYfmLd2JB z?0`g`3^jjfvtX9jN53EqCVkJz2)T0{1G+Up2VbyrYHcPqMma_5` z6n`kBq}5g?>>QeeZ^Fw31?{``He=+~$uiiAld4~X!%-!jY`LY-bO4QFzBMv@JBu+g zFxhGlYM5_85l|)BY^ZUcnOz-kB?R@|Ny+TIldr#uvMV^-L!WTrjv-7&9;pvQcXc{3N%4B4Z-{CkX@}vdoAwxko<|JeGr=d(WW`8p9 z!AcN?R#KT{_~2GLr#F(`${%DywaT)I3R`c~PG6QzX^%QITB0gpW4EToD(OLv${J_2 zRxOE-!KocFGU7<*nF|ihqCXp&hhHGaH8_+Pz3K%(pAw&VlTHWRH~W3dwtJ@1-*?@( zhEq~~Pi``!(*f2C`k-UVkc#rsk<^?;S}Bq?xOLfe&>w>2Xqz6NWN&xDONdBfnHg!d zvKCO>ue3>O$+He+Luq!i>B$;QMy`E|Sx#4eEs_yC>kjZQiI@+l5%R&QTEjHRE-cAI z{58XxAhiq27)!~1Tyr7@Bftj$006)r=KWKiZo=%?s+J_aB>x(pya-sC=!K zSXSM{ycN(Fe6B@yw|ukRDFnT8Cz$%<-0DHF3iUzccbrZ~TE*R~T+w-R&%u1gB{P&~t`TsuQQ}{*CN5UY1y?5)`H=>FgI&TM)-XOP5EBWf;xlc9x><*o&O{&J9`h>O^^y@zqySsl8Bg4hV z^B7O|oqenDc46J=x7&TbZoBpJ{>KkZVMjdcL*z6w!%J?)X>Xn%wat3ko}1of4fTuH z9@$*xuqpAvr1gCZ*($Fw$vio46dk?ug+!J>l;Gr-vH|xN${e&)dD}nbd2+v9@un+N z+NGW=?d8{*`1+*U%s0C|m&|%&oy?oIi0f?0#FT3Z8ke|1;e`ZvKJ%}%V0`azXO1{X N)YH|^Wt~$(697H(w^jfE literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00024.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00024.png new file mode 100644 index 0000000000000000000000000000000000000000..fa031397692662561fd5332adc1546163d7269ea GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|8K2Eu z>%ym>#5zYjIRDSZty6c{?+Yhg{>6T5w-qbUbMY7QUfg*hedAB& zrp;IKf19MLy}ff?lH+sl?s;Eie6lK~&P@8RTJyR3gL*YXenQ#||BoMqAKZWTImhY9 zX@5t``cwI=`o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00025.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00025.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4be69934787c368c2b5ed677cc7f5a2470be3b GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2#G+&c}K^PbX0`eJS}y70`%8T>n^%dV>bk>TM}C(cF@9*Jbj^5WTF;gKGIO)y zjlJ*9*PE9W@jdm~5r5wEu#TD8y6+Pnh8_O<-8#^Bx$bnOy3REWn^jXeAFev)TXe-F zTky7j?62N_lL@yzwx7O!=&4O1W7^|)7fcr%%i5*3D%0_G;tl)cpW3Io3*7!cdXW1o sV&B=e%knGs=l(tai5cc!1_ryAe9w9}zGZ%X&;TUp>FVdQ&MBb@086r+N&o-= literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/sp-swap_with_post_conditions/00026.png b/tests_zemu/snapshots/sp-swap_with_post_conditions/00026.png new file mode 100644 index 0000000000000000000000000000000000000000..0425466580963a2bef09ca2320cb40d8843caf4e GIT binary patch literal 511 zcmVxy1gt*>D?pb7$J^uQ z6u**uQJ}E>hp-u-86aK-Z1@Wygb+dqA%qYg$1gOyHfEUU(MbRR002ovPDHLkV1hoO B;)(zO literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00000.png b/tests_zemu/snapshots/st-contract_call_long_args/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a3613358f8db32bdc0dd1c5b08ac3429c28a9f GIT binary patch literal 8413 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 UE{GSv-xjvnTyeY%bOImz2fC5kr2qf` literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00001.png b/tests_zemu/snapshots/st-contract_call_long_args/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..22737bb3a785af9fc6c8023d315b7ebafb2a1393 GIT binary patch literal 19067 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 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00002.png b/tests_zemu/snapshots/st-contract_call_long_args/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..16c3a4f4130bf43150696bd07f548ed911570cef GIT binary patch literal 19917 zcmeEuWmr_-zwe-+pp;05A|c^`h;)iL;4p-AcMd7tA?TpQfW*+C#2`q{(2YnAAuSEk z4k0alH^2Wm&vWjpTj$1$JHFxB?!ETfYp?ZP-|r{(hgYhKWVaY^fj}TK=*t%xAP_+; z2z2ce@ipLxgj&N_5J)8f`a(|2Cw((xGv#XuUCG4iiRgSOp*M-@KmX8#nxUvqoOUGT zZ}pyoAE09Q%ro?DonC#f=IE6=3J>fP`4sYpIFjhB051WhA_9S21}=R)f#zFih-pDB zOssmqp%60yPy<0I5$Mm2|9|kmV?Yp>EZ+DM{A3jiLXL-qP>ven%6$Jw4Ac^{O4<7R zw2Avx94{JQhla;-_#z!Wjp+#G=n-l@W2ao#L$X>gLPtG~wYA#>UdcyizvLM`3LN)r z6VTEI{zygF%j&}9)v3+tSA2uk!Wv%Q0LdcGi6TerD-w0IN2{Ess?@1J#u9)+Bqf<< z;2iXXt#(;#Dw;zDXt+X-yQ1U%xHWTjuJG)lq+kgrqZ64ff~}pSf@OJ|S)6fLc8+ z+CJSoR@V4Jgj`I{dYL1D+&wtRONhwk#tHhygKN91l+f8xF%A!5sf2LOKi<-*dEN^(rRnZ4q8#Q||ZN zcHhX9c-BCIW)d?&8J*;9lt#}+)KBxx*qpAFG%@5dS;6wl?i}<~6KX+{vDt~9Lhq6Xl zr;ZbG%Fm`t#!aeVz&RbwBOZBA(&UbEk+V-p<&|uyA(&xB!TjZlZGX+zaH%e7K~QGL zMdnr{VWj=pn%)NqYJmJy4$p5zZ6Q2#*bSEWo;Q_e zL&3Il37q*J>UboeK>5>0xz&S^QGCcA1?FYi5GKx-EGC`yCI$%JbD`=&J+qZJaGE0 z(;$x!>^JTz#$7vYCCJ?AZW#PQ207LQan+Kk+RhK(+0$DeFLXWk#Cf_%h*iNCJt*pGZVLNxz`RX!mjwhO(;K72&+2# zLGbmk(1v{l8v_cNCLJ+GteBXDFtbUWkj{X3K?Dy~ek-hPCMz5@ZKt6hxD*9u5r<@) z)5#9=QW~JS6oVaO1!t1D&(=NSnnsigIG|%>3SIvG^oY{ZQdVN4B7q8<_gdNyEl1+| ze3x35cuFp`f6{cnHdogWeeTj3fYP|dl>TPby$hM+o0$*qF(H>4rt5UoN1@dyj}3<< zOxBBP@_exrqBCA1QU|9mO~n{onPaM;Py43bM-=Q~@eALwbDe{AGFK~l-)BKg%(k{p zK^yH^btM!T*N0FI6Q6@3EX@>OUeLZ<6OT^CFw?5#4UT`Mr9z7+2hy5 zME~2j0rOSMroR=Bn6*KmpBWkcdaHZKi&sB+Nh@j)s0w>2R|slga+(rR$?53d2{a5) z-n$!O_9jbhs!Cg%C-0lUe%{V$@(LFyNAlnM>eCndnjTSDh%jF}HQ}Lws55tJt`=82 z!8%(t1)9Fm#dD-&eB_7(WzgM6n5UvWFjB@^O8Qh~#7ayv@$sU55rI=x)L>Hi9$js1 zrz!HbSPp0^TGHk-oKf)otGI6h(?>PiSHZ?<3UvWH$_nIB`*K65Fk4_ZLW37+N#6X+ zSggsKubDq@DS5?I$#^{GeBLIOquY@_S`6t@oyL&K8>_)P;C^iSVcB&Y@43&S*>TKO zcTC%ZNiS4}ryA@ga&&Kc#gl2{`cYuzL@#}GDIB=PAdZ$5P%DVm^@;Eh!KdIL|0+vV43SkB8MY{l$pwZeonxB8iqaR-$3 zZt?W?(V*V`7<_2St=5R2Zu5~-6`8*JFR>E*iC?1$KV6}(IX#Bf@lH`)iS=^55r4uv z`~j~+v(8BRVy>vUTV#Zlim5J^>=h)zA z$hFsgYnzn27yR26GlnMWO314xQ!BGNeKNY>*Vv;34j!7VK6TnuOE_>53XwE2Rh+s^ zkmw44s0$g;Ra?Eua%hU2+U(eL_vC`f%w&q_cV?QB-HW*i`&^K@(w9HmURT{vl3+A+ zCh41Lw!NSoj;ObGE?s%|p9#o2-)$s>t3Nrt7-69<#94op;h4D}qlO!6pczYCccxGRgpg&I7yo)A_gjl+M) ze*YX9#6j1n+sWlN^^^P9j24!B2=?HykB*QU-y_4r2QF3l*-1;vcI$Od6M~p!CM? zIqwQpI-TZa&%6p)YVgBTzdD?f!tm-4k3Js81&v$vMOja}iEn1QnHQdaMyr)o`Ly?* z@<(PZOAiYblDKdFHE zojEs+t$I_HZL9P3$vlFetIzVsa-^CWlhx8Ei_LlS@w2;4d2eSJz3x#BSr|;HR$M$S zE)#7G^4&RaT34TAq8ahbK*O0kU77d5112%=7xfG=YPs;jK(6uftErb*52BJ7pZBVF zsp^q6A++cXDPQyINb7I65?e;B)cy19)5^i4hcaXI0*&`-9 zo{p~%%Pud@VG4wdiQIV?XUB{5Nq*eB5xoi41L(jfSTi=h#}$iTXw6_HA3PuLACH>V z4}3>eH}E&RtgY_wl2d~p&m(%4%No~Z7@poXbQZ*=Eis;{&U(Q6`F{}V4+~W=q%k~G z&2rVfES9mrW6DCSdxSyp8x9`9kCqbhYTc_U!c_I8P5UXju7MtMp{dY_vv%D3j#Op5+r9VanBt;MI#}a`Ke}x~F5ldXEZkbaf9vt6n7_b+X zlx4jQa$MB~>bH5@KR|P!kSs#N+n{+eN-!uy^ck?%&w^U7fqbt2uN`db?+nn^wmue) z$o8HcsK!euU9P<`0EHxBv1Wq>RhrG@ZGRpD1r7^K zNKSZ7!-rcQ#=6uHdc^LCY@SvsdZf)S-s2ibi2M#%Eyj%`lof~3&A$c`=*A%n^IMZ9 z?mR8UJ!%v95o{Zyvt5S_O^JyOKM_Yqu#>k5_zjG%Pg4cb15vrJyqL5Fnz$MUPjQ3h z=SdOxFqYmaYT6!H1xgXL?`ePxMcXSBr!Xmb%BrtA^&~;|?pt*W`Wt+Dl!Wk9jhL7l zVd+5X_BcQfD{Xkw`bdi=Jh;)gN>+( zx?`8+Jnm(a(q5$*ThB>bkPSuQmDKib`|t8IRi~=tD7)lo!p%RKwTe;$B?%bUg`tJq z@l+nEF1D|tYdgw~rEa_`b9&iXjE8EUq=AK|=RRXU4Xp01ovj=Ptn_*rcRnBU%s6Dt zOBg9CXvi9{`b`FJrmk(jM+I?5=eIbP| zi>I-J4worA2hs5U8&b4};Sc%uO{)&RxWwFIB!E9C&^J)l)qEBFy@4y{rb;t*!ecTe z`X0huAEl3iR%*<#d>PE|@<*7z%)0~mxM2|2+r5_HtvU8@Zj(WMy|pOQQTALZ7Sn!6o>_6!PC}uCXY$W`8dCf~cs01yBv)<}X>KRfGt{ zQgfymGffi{Y`_Mr%8A`RUq@IKGo7!$^S#-O%3)T_l8y8*I!)<` z^dE$pa}tTMah;3?d--ZiV%) z4@J5;zuaW9)bfWT2BViVRffMfJtZ*|faveN{E6h;zA8z&8ysc9C(ba6jVdQ7(U@Eq z`>tog_=IbEd;5@!;5JnA@1%4Z+T8ZbD2YjUI+e9DUE$`dS(P0Bxg(X~SkbX2H9|8~ z5*bN6M?s-IJz{wM`|Y(~VpT4$EW^h>?FR-+Wc)me*m{`wZn{3){O`%htx1 zo=dWa3%Yx@pplBs9|j;HK50ez8J_JGY=VY5b!$F>R94bKS=X&Ljl9D$Tx>Yk!3UqQ ztV6RO9j`W)R36aH#Lw`UT12BaV&~ob$amR4Hw;@m45IaYV{Ul+57otp=lLX@6=SvO zOzJjm95T|mlX*D9m`PfEze4Qe)`eK@7s`;NKYlGjX?7= z&nRH40W!e>S3kROAi|jR8}66=?X{I4-X87t)qJG{YKSz`*3L_~)kdk}dMkknL{D|? z-+(d1_3*dA(Dy;EY7KhC%AH}Mj?b3M%QSgf%$+&$9!^tU#^XoQbK=mr3G8CHx!qKi zli|r@PMda)c>&V&Z-dNy)}D^ zNjRyP>BOJvC2+XVYsVgZ_Q>5vKC!vyIXw+nJOC&n$T`gyKWX?W@8?<#I9LK5;*%Vp zQZlSLyi3;PTs^fR(6{8*IJlYJt>m{WbDGy02ejt0z2mQXQ&ZDV zBjfSPjml!6Ee$13=(ov}g9FIGFE?(STVOVU&vma%PSUnm1Iu9{w1T64Dji|#MgsF~ zg7d!13{3E-XE8ke16oHD9vkzNr0vzpc@5A?qV+`8rU0q&csI|>0&CFU9#;`?9DUMh zJ*k&a$vA%5jR&W3mz|vTref;nP9!r`&&JPU*+XYtl(pcW!90%6kh9M0=b(9M-y!gW zS~?YJTscqN!o)1WLW>49ZC-F8lZB`;A5~H3$2=jw;GdJN17^XUgZKjjYKS_uTLpw2 zjfQ7)$GMv$N!$J$AM;3ar3jFQvC^NzO@UN-`{*>Gc{w5N(Pg2rcyhheHQW;zCq;D*e|yCmqb)t9-ONct z1eW_R12eZ?+|=enh$7SHpK00Y49qN(QMXW0m0j9#M2{laFsC(!7!gcf0>{wpx7&y5 zbYv}`rQkd6^avmqle`nD@S0hSv~5t^E$3;V8+FH1YeuK3p&Caa5Sd7#hCa#_C!00k zb^kq|BM&DU&WO|-7yi1r?va{7MKs?B089UMCLQL*ypq_$SfsD59bGj#yzU{BWi0ga za2$B>>WVXY82l>ey$Bxuy#>a-Bv@7hUJjC-==5ZYXJEIp*;2w?P*p)_{JV0ku+#+$ zO^0hyA0GF9_p>I<-Ab@3`7JpwC*RIc!Hk<4=*(i3(b1p?uEkcG_K?2srLr?>=nqG* z%5X)ALmi)|f>qLsdhA16cX|!vR_b{ZeYT)Kq4FKX(?=hF43ePqCcShG zIu)mqx8Ozl$WxQ9J9&gHYRk`n@EQ`>`T#&y{%-*Lh|5L^g8IQK zzN~mg$l#Er4gqL;fZ|Tk@VXG`^~>rjRJ;chU>*ko)$iR!yv@~-qs;wRsUb&6+V)x^ z!z4op)RO7*SWjE~qd}rIL#Hb}!j(D68k(xDJ^J-7G3aM>4xs}*0stkNyh)~y03gRr znagF!GovB<-DlHyj=_>)8U{MhyyWRrSz#gDqNpiJn*a{OO8i%8?r3#SoH!JWi^%@e z0#C){HEjDgsd7N6Aa~j=7PaP%s5^wpJ6)ACN}IOZ1g53aKq0F@VoL*&%SaUJ1 z;__t_eiP3N4;}I}R;N}fU?pD5zk&y!)a#Cfr48i>kgl%-8F$bP|64k9N4Ywf(%h!# zU%;jU=WUDMEGTi7eE_90qB>O>{DDq~=F5BkGub{h( zFy6d~Y`av1%X6768=u|H-*u`oN%sqVg8&Z7MvY15UztfAu)K|#Oc=0TYnj#z$EhMJ zZK(j$632n&i_(#dPbq>k8tnCk$?cbc{z3u7d1({+=x>cKq_Es${4J0HC%sUjgQ%yX zHKi+sRN4e`D{)ilpw-ru&G=^VlZ42uzSW`oYkCBK*u}rQ z3X!%&#|>5$PsskV9!0G>`*MTk`+Ph3;<`hGNy9cy%Jo?a30q2+S%@N0^Fk`aRebe` zI9J|??3tTDnPuvu*czwcAyN?!A$7h5Ih*YBzWxc*R172QYI zy0$(X#S>8cUVC4-}-~}uzO(}skx*(zfUtS%Kq9z`Rt~2 zF2;f91JPw}uA5L3otrB$Ii$?gCKQhs-H~OL0JXf!zony2JzZAW9kh$!+9**jBF6Mx zJ;{969^qG~DS+t;w$(=qJ5H?dd6n=qAjv_mm!LpJJF~jVb*?g-JK)O?n&;Xf1&F?j z#l^4-WcJIt7(phFN!51`!hu z(=R06J0O$(xr^)fAic>ILexwt#}K`2A}`KOsx;?1$Vlu(S*`(Jovb4B%%5iw-_}Yr zu1@d8G@C&yfs@pYYF7cW(oOPaAA^O*rR>!;HsbdF40H;TjFT*JKoao+8>~OH;pqVi z$;g-*D6$UJDYJ1Al+4_{>g6}dTVsnmU+|L+G``*S9BuzhBw#f)+A$v~|HC-aBUp*E zxee;BbzHrK_-a}(2oyX2#qU28g7^=!|Gxoiv|XBHgv_h~P?y9N&`_!h;31Sj@2}#y zeICGkpBXjK6_wy4vVA;xL7;&a7bYET?Ob4bSnD7DUIKxT%U|w|36KWP-ISw5EI7^s zoN7}{HaGFLy@yH#+!22xNS~61U9AP~2yPD0{7q~#P(A?I2bAOv!W?C-VRzC5Bt3GJ zR{A>BL`15?LI88nGX8-Bn$4Z9XRSZfE`}T|zcznVhBYhSktCJZ;QlS0F<`61z;`A< zYVbI!Ph(mRf7%3REHEWJY5;+n-$)aE-S+na&o{+s{PvI_YkQ@gC=#r=SYKCCd8(zI zM~ceP`?IfGdjbT zB#bqg5uFlBL-?jZZbXr(k>o}Q=**2gg_9$HPj3ER(!*1QRoWcxZ$SMv*V`Xzt$HVJ zA)sJ@Kp_}-$v~f+41W_q=3=*i^4ZIS?wi0y9da5|kwtqj0s_g#WDvo4XgYULqX8SF z<`;zHuRuZKr;q!d_$xGkC!{4jF-r&L^kyyB=994bW;>u)CXQ2H1!f;@Xdr_^WOHu= zrjKA?P>bv#GZh*RV5@Z{k{PN(eTtC;NsKdCFuUn68m@;8WqldqlkzLbWy_J$<*Qw4+Dx*Z1hzO^t0N?O=ZMc>}HDB)7zrZWNi*TaB0EB?MRHfi@}|a?A#)($VnA zs^v}VE(f9iumva$3z5oCf+CICy4VocAAeY+s3aZ+ICl|K!7v{ zSlS<$?(?@(R5n}GX63XbKgMA?t+qws9u*L|)`O!%+q#|rUxno0#t9!NFw=P`bI7Zaa3lEOeBeRLyUNxPHA^T>VrpGe+wJT*Cou&Yg<}zXYfMvMzMp6IHOaM`UY7OI8vwEqnM0Wuoll8N zUPv#6d=2#1)2M9|5aK)pihjqRlCv?vvVr`ePTNm$za7YntbXNi4`t6eiw5E4DD7Nr z>qQLunEGnKDZu0IJ1i1oORIG$V6-`2hvB|ikT;49iHQ^U#@333?#vynQ|utW2?(`y ziAed~JU%fp*;xa{Uw>;ZmdN8z&(DctQP9_FMFLrBTv#hl;78-M34%+u*0_kL)@uu( z!zb%&*rjvf^4Go}1s4zV(`av|Ao%Kd01V=38fuFFmQ)0oc4EhfOV1!#-*PNFe?Z6B zA2cBWt{MTRhA@tlm8t#9o9APBgH-eB{m4hcCj5Gm^}=1p$O7^Q8GJS89&3a7igU^b zy0wyKs$PFWLi-t>F7`Y?Fb9gU;a;fDy|P$()+RW{jxAwu@ct6BZhrqFpm^G8)RH`HgvtWiZHO#2q0|ss%U9G84T(P8bPf_-OGfb?)9w><#K^ZF_h(sP z0SWg}fm_%T{M4pb{mh}XZ7f>%J-FX!V_Z=J)=OpGto*sCElKDn zFwE&s6U;0=oBQvxZODxoW4#j(x;g3~tie2_R7^z^DRUBW94|r|W)re_IrO!hYq$C~ z?P`|t#_4PTT`q~K$++?ie|74)UwxZ3q+bWS@OZ8WKk}0#wB=kL!(E1Obj-n0;$vwB z1n*b>THkffk+9hD|Mkbwy1LC$L)^{Q$~G(dJOLCG3wN+pZXH_rK8pgP`(Zr5VZ|_& z6#<-n*yUJiN!pLp(n6;{BpeQtPJ^UBpIH6F#$l z$V(!l*R`=BAFTv4-2o3t4Gb*HeiNt&=(Q3pzJ#io5dBFgHI|HPAj;|~376Jo=~bJxY{vZK1pizcnab!k9<@69A}XLDW7x&_KOJ%qa%-$r~-J( zU@CU;(b)WBBT7Q>97=zsGkM&OxpT?wi*--By?3b@^4=v(+#Ze$?C;ulOSSNB&8FDa z@;Po-9Ztv+``sbUsrUH}t@*MHA?>k`OBb2UeMvY0Smo02>kUx}0 z`DtQY=i7lgW2fySNnHF);=ulpU#%HS<=>PZwgLCwvan{uJgsrh;LD3fBYwp+Gd-b+ z>!0uvZnpO`pbbX+j;nDpeagn;`NJRTj!@duhaCFK4UcT@Pzhce(wn-^I7?tgGGC5%JN<(7%EcY5=;3*dA&Jkj zeXb+d`htNVmSPKU3%UmIA2!|HW+Z&kCHPd@9U{4B$bh3$X(-h(L;6r9{=o0<>&KYw z(*o{*^Yhh2(Qi7li_E3Dm3oJWD%p(H`|!>?drm0p?oz|AQ`k~Hhm=V4H9gbA-{W0M z^*FMlUq8>w6rjTiH$Er=(=y>LeLz{fT# zJ+T}l(v5INy5a;w)4m(C8P%TLGn!?&*e{JVQ142XyYry|=aa*=M^*)FMvF7np(wWU zXE>$a*C2Z>tf;M|K^(_D5)}Bg7kP4M8?n+s*CDJS@#(`h;tn z+cGw5L!5&dv9KTAD8gJJ7&1Kzu&3-SFZy1np6?$YAI}9}UP%))2ba1020h+vK#*Hj zY}L=D0rcc<)D!sNBQyn*qET9}t7`sT;rM}pfdT={qq^;3 zQH(7GEa;YM{_w~{bGL(*CR2*TGY-1GK@7_8^9R*94(7m$`y9G(zCwkHU|Nb31z-fl z8H^C-02`l-ITux7=i>%up4knO_R%FJ(rxgW=#|rhMz12vBl>@n&-C9 z94H9|oeYdlMe=jt@uFF&Js+SvJ<)HzuPQo! z&HJ3q%#N_tF^nS4=zeqXg&;QL4=XX6`PT!zs8jn}NBMX84X;nV8(OA$yi0A$s~1xn zmoCAxvK(63e4myK4Je!9_#{S_#9VGLLZin>49d;t8b0VqrVhg2O)88(K+YbWkI4K2 z%AU1>v)^$vD?!cvjnKBwKhhnI$G=vurM?q6WC$bzW*Q!Acv3)xtaJDywqv(=M;wx> z_IVZ+cszLf_-Xw^e|EPVNk(&)Bk*05W>q{FN|nBQ#?0gwIs5oreR?ZFCaLcBsArn$ zNsf4Sk}j70kYF~cjp#NAba+j1^!k5}&KY4jz{!kwBT|=t+2QIqM-wG-BfELC{&x2; zcfQx1Y{k9u-4*gO?4O0jvrmJ82ec0~w=iK;ESV37&APiH$Qo>N9C0~ zGrxoFB{h$n+_B&^dlWQIdGnQ2WL0ZUAo~n%Sx{RS?Nyd2?g@ifPt%$LTFYb-PNGBMGD zW%WJ?6|OHn)mo?{Mv*?PdwQ}F^wz5uP%`mL6CYi_M!(l<3)4=XNeL1n!xYwzJUvdW z$f}}V+&FB?$zt&Rgjz)XPDcb1;m()swIRbheB!@!EsqcFw(WS6i(uGF3w6FgnQ&s1 zr3@j7A{d=%YBH+2<8�BB%wS3(_ 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 b{}Ue-eOI}=#VrdsRLkJ$>gTe~DWM4f**xX} literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00003.png b/tests_zemu/snapshots/st-contract_call_long_args/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..bc70e7ece3ed4887c5bb7c803e072c8c74a49635 GIT binary patch literal 20213 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 R7r3;L!PC{xWt~$(69D`q+q?h( literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00004.png b/tests_zemu/snapshots/st-contract_call_long_args/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..199c3ff5f13bb228f8914b671f586fbc9ffa11b3 GIT binary patch literal 6377 zcmeHM`B#$Z-?mMsMXhEkYb-0rtlSzkSA?4OaZN>WL9|@P6f_e>LujPY%918i#=WM} z1O?NC6qRfaVA_?53XH@;l!x2UgsCTPb>aCiSO|9uCBmiTP6K=b^Fr(Kn6l zhRMH1{`#H80gK4hu;oQNEl#fX%f5Z+*PRxJR!?L+;&gQzzdL+vbWoHj+=;ipW|p3o z_L(M3aV_@Rf2mZdqqZ&6o7iZ*GbeJ{&nwqn*#$eau4DO`?>4VLQh&)Ld)15e|E#U+ zI{3vE;OM4Mu~Ho@Ik1D6`+SsyG@hwxAT&kL5XOU%2i99JI5iLs?jR!83}&`b$>$E3 zV8xr4Rql0%6?A?1B8Jz!8k^;yHq2ZFC-i5r1kT=Uy4W=x#hd@~7M^jdDt?hsCcjJ> zAd~kuWhafx%xhnsdGF}WvVK0A>{O~yz8#`xVK64^^c%T};7XFaZ#CQYXCyC;v8ABv zK2;=pSY2Hm>~!aG(gBlJ$ED@Jz+GT+RqMJdInSf^1@hSeH?CUToLyO76^rM6p2nE z0W7vEBDf_Mvr5o!F;SoMe3Z>*Cpx*C@IRp8Z3nb-3k#TJPsR}r4GM*_C+EtJ;4IGN z1kc#OG5uKwOm2g=yBh&$xuE>E-Ydu6B2_e>1^$XxZJn?;cYfYu0zx;1ftrUJsUnVY zjUjF1A~U%@-*`jORk;JldCp8RNOEe;PLkg02&Hjit_SFpeoPO3pCZ7ZCFf%p87NCB9F>*N==x#0mnU1&%S=h3e>*IHKW}U zNR>3N$gL3_zR6vYX!lFnA2}jL7y(*xu(Gdb<2%_;F*np*xh4@E#^<}>&n8nd@pyq_ zuU4Do`i3Ep^5|Kj`|3m|s|4?03Y1f8Uy4hyeKWHLcV#WHzT1_+Kh=Ze<#&#yuftYU zQ~AYIFHXOm;v3@PW@-e%l=mqz zvp{F2d?-t=9ac1>W|!k)mM5?T%3Pc``*!pGj%+j0W&+fwBcv`!q-bHbdW9Sen+Z9Y9NWkp8ykzMY~71@n|{z|q)+H;&yk&Z^n}Hd z3S=4$Hd#TvAX(AMO=;FBe@SD)b;apS{)38UX&I#0q1el*v^TDGvCFffeGL56Jv`+y zbSWp2;fZ-!en++iW(V$0;L&xYaNnHCGPR!c!YKTiFhw;p;|CqE6dUhwSt9(vM_dC4 z2(C2FeZF?jJq@?w43l5+NeP+&KUIgjz{X}Vjok2gSHz=mTVhgpT~K;@x^N6={I&X& zQg@1I@xjLO3uYr(?V}AjUD5rO6H`kPqnnav=Cz7Uc#g^Q(U}K?GcnmU*zlZPTXX>g z_T*#tlN>q{&e7UfuLgeqW%CX}6iYxdl%y$3swVf4r&_3@#WJ-iD<~r{MC-Sd&yBXv zh?htg5|}XSK@nP&*SM!=VS_E^_KX0p6ZZosM5v~JA5DJ3NA+Q^E`6OWWVX$jP45Qg zi!Zod-6fUGEc!@N-8|%AyS8_~cSWbj^b#1tg05&Le|{}SMllrhal{+*kKbFmjzRF~ zEW8dEgB}P|#I^exA*n$35P_|Z7wrS*6cc@wDfJ2q0E9HO>i71&-{yvTnbnHR{XN1I zZm(CmgV5};K-%+Xw=C4GQbiSI0wc(&6y^1S-@r}mo_%*g!dA&Ae3b)#`Bazo#xi(F z22b+Ho2>y>ABgw4*AY7IyczWH@Zg$#$zAxHrTKJY&z^!)x_86T_BEnKrBncgHX(U* zap|Hz4#mV5?YrCXp`A=_q4tHuWais@iCBZPPsL^GKxh-px+PRWVj1fbZdJVhEl}&c zDy`wDTH8()O-#g9t7q8Q)Afr6YGW{TPkpyRQr3{HF{_p;;wGleHf!>}4tbRO5aYC> zmI|M0A=qve1(>#<;}-vhKeIh#$iSj%v!p0NX4{S% z$CXN@^Aqb8)NdHZ^pmIO$~A$ig|W5UyLY{Q|Jz*uh50dbdO9a*5DUid+r8xjA{LEx z^5@ZoFUnIaa{7i%UduLJfC-n|$E?wejz%?w76xdB=*W_)(rx%obSzH0sNkqg%gP;g z5PLj>p-lp*PNNE-j)$Z6ncwl^QT_N@{yN* z5X=z$^aO?fKV;QES`+?z_TM*6W|^K)-dbhDIh2oI{Iy^%j^qDD+^l7qx9G zwrJp-P~F3bBCY?gl>Gm~fzM73(fLv(XLt=bnk8T$FN*8dTZ2P*^n34rbKDjmMAhOD z?N@`729?G^Ji0eK{Gt`^p+7~|qmoD@L#6V8d36@sQE=x2AUR|H!YX35(rYw6SE>XA z(87F2q#s9-?1EJ~*lo@Oq!gLFr=TmP8LQhPOM};u$=i%_gLR9*9tjK}pik&ng#hF% z1O!U0$;`}jn^5uSa2iK=n$R)wIZT1-5jNZ>J0>)8v0tiX=BV8;B(JEpEb!aajumYA z4KRtyJzf}Us85i!drWizLaBq9+7?0V z90N>XhvCJ_j>vj$BI<64^M+aupa<1TX>V)*M-gTQD8`bicwU-QY1S(`dR(r;g6(Jv zz*9p*t5Nkq<+B(pb}Yu3#xukMrzO*q(AtpmjQ^>6@3I!_!{Sx*(EgRT*u^oACuzmGhy(6FpW1$h(WTffM2wGJRPUFOsm^h?2O%*Os)GS5+*a2{2VU4I*2Q!O zp6e@&Xro4KIEqNnA~hDl01T5ucx;80vRhguk@Q)J#5#Y1TZN zj4?<2{&{jT-o6+F2IIb*N@MZ?DLeNjwh_>s{HW$|pL~ttSPviE5QRu&@X(M#LPsQ% zkK=j@K7A+p*d@3I1Q~!3H|X44TGh;CUc_K9+SPsdM7HC-_g_aUgzGzuK__)BrQ5?c z@$WLoWWa85d6^;y5D4@b8DjWvUR$MUj4ye4<`IBi zTp)V7WUTf_vnX*I6BVFlb+@cu=!yo+51og^-i47&)r&YkoEB)*c zEqs(x1DKs>Km*I=7j&nnqJ(x914Q57{rYPp*0I=Yksx%ayo*2Ue1A$uaxU$i^+5Pn zjLy!UXYzL#3s5sw+~#f*n1XV5WjD;>#9@>3PnaYQK?C0YoR z16hpA%JAV$1C+ehx7>O%xqGILDv}(E+S((S#(ssq3Sppc*CTm=Xa>Z(?nb}ixbd(@ z%*u$^PDJKapmlD@jf;+^<`$!7I%WHTM!&%!lgXW(omKHuEs~@NuCq18AVRl2VA#nr zT>{v?F762@TB|6wF$6F6IrR|>W^w^G%x(25SCxZ}6?>z;Q^7&x9 zw(s=`heJAM{?skZmbO~ow)5PJl6!v?d~do=zp@R)Y-x%t+_XYCCUJZUOec~LInjMg>{SpVc^~@Jt7z%ZM(%(iaO_(m zfQsS)4k`~zeq(&9l^vf#$R3c%DAiZQiS8JcXNda{tF6`QZAMP;?Hz?|eddomx(yAT zz}^sC3q*zhx0>uOwiR?|%cfYHd@Uisnl9T=%QOCf)&fMsCHh1di{5kw>1^qmsHjGTs|s&t+|Q@LC-spVib0M1KT-PI*@#$E#Dz^%Z*9uzQDnZG^I7`WA}Tp zgEP%Dt{HS%ckY;TQ`Klo6B&iQ4An9~Wb7waY*6#M=d;8!t_+c)@}}G@jDrqo`os!z zwNFlVZIShgboQ;n04wkSGQSbHf7t8*=cvFz!@@l0GFO-Vl;b@vlv<7z#W2G4T2}jH zs#~#F%h_yUFJMXsrrz0$l#lGZ&ZnDHZpZ(jY7mos6Y?~ z4v7OsB!fpx^v~d7U*XR&c;%`b&6!}(XtOkpxUoW7_(rE#$&uramAMusuVq3QBSpj? zaoF&g4D-B{ScRpBiphWR5g;Q^V4=AJBn+s{@)PBs(#?(L4dH^_!OjI2`JqsOJ4~C0 zgB?I`f;XZ@iGDLEA#s0rThM@wovHSTtgyT{_8j^cuosQLnZCDXNU98m9Qo>Q&@=EU v>BWFRi2Za!)2({Ty!_PJ{QoNDUxJhjVVd=WE@>Q^`BY~)Qp3&H)hvTN_88eY~cwhRJ_!@)KTFAHgs31qdp2a z({V+-x+d_5?otFk;ZAcvTlNFm5*PdgvX1T3y`b{Td#0I%-aH{x^R1^@EmTxPoG;Ga zyFkqtewCJk>J}Y{%9RC1HF~X*s#wkD%;T4x)F03NYr?4llT}E^uOjK=G4IM~6$VrItS3;+HO^ICWD*L%>mC`iB z3@8?uvj&Rgi$LX&LkuPl9{H6H)XMG>Y03f%3Xc+)QL|a7s*(lfTRpH@(0e4_8sDid zCC{`#P0fgCOENP?N;6P1Cf}%#=AdRY_-Gp)%nAz{tjW+IG2Hm^CO>TU^R4{N6y{0! zD+j$0R9Ct)*Hc4Uj)#u2v0Gig=s>y=wOwpE)vb|7--Bft^Z%6lr!>=2Q)bTm zq{tjP5O^Q{MA;%8qt5>a7r@d`(&~a{vHgMoHKS#ZUfFAY!J47CfAAp^YGjP$3(eN% zPyzz2UUzA`E0N7Fr0~S+$}1qkxuK;z7=`kXAKr zW6oGxWMO^wG06yc{Q17n9b8$D-L&@4Dv&S0@J-X9%bSc33DDmjzB$c6qNJ+UoDr%PcLH{Op z_c=cBXVD1_7+kuU&8GnYrRf+|mB!}%dalw@^T=x__*S`~);jN7!tZB_JQrUJYKi%O zIb=>8MR!TNmq#?A*6mnmebW|w|Ev#ah_W9cKUd+oxWC44hCQt9Y_>u!F)~KX!`q-7 zjTVyoX-Xm8p$WzZC?|49mqX!%yK{Q7)O8r`ngP z9t)yn$(k&*q{6Z{vw0#)({HsA(;}b9QNZ)LFEF8`;|XBwnpcK^#uWqiqsBcyHVsx< zH5S@6()0lWyNj{WW77!0$)RPZpj=Va`oZ0;T)p1Coeq(L)s{iY-}kAU5t{M6cBu{y zW-xxDa%cWy&sCH$F3GT-LrQ-=r0wix0k%;EjiY47DvmXWho3^ptBert zHY~LOB&u2Bapbi1^?f9_sawbI7jn`nVIlD7IT6_q8mhpald}J@5t&LEeGW5hYc}D&?;pDyM0%Y3$b@ z@{etfN64UP#I+7y z7cBu?vhyF_Z5?o|nR1`Lda;+_T?O+iCr{0qfjB%ow(>+mLqk`Eu0Xr0L1Cex>nCT- zQypgSyVHE*!0k(-t8;U6HEa^*H<`;CvuN_~MEjJ>oZSIDM@XPz3&oB~RKSNss5ltad9BW74KAS=WSM!;n z7JaJR>{I0Iw>Br+Bn*ji-O{}ZO!p}_P})JKUM3ptKIM16S`h z`8g1*G<1Qiqve&KR}N+xPXnV{=lD<0s7O?9*124mBVwXdtb=h^T&&$wz|E%z&81S0 zn}Wo0H>`G12zNK~H1`EmrML8`#coPEi-&-0P#}h3&9vnTj)cIUWJaY7ohUVTl=t_Y zZWUj=tGv$tz5l!>__o;YBUPX1t&_wT{vCMc*Dogo=^_NRB-38?a4MDHOs+IS#FYfjDAMEV+Vnvc9L*htAYb zc*vH*!e&Qr6mq?~h^n*`(aVgPwe#>OfCmI(y5e}1J={X-U+u#}acS2j{_2sl4_7g- zwf0&!3)!B5RX`ojxR4G+8ntt;z~;OHJC8$EbFo@U#)DB{EPp`6)%~Vnh4fhkPfO9^ zdF;jgXY=^f<=|8YAaj5eYQSwq=Fal^eqRbcIX-TCQgKcUy@OEwO>#eD zHI;YN;$8Yxe7R>kNWRFqAa`^3`82p(sVNN6fa^nSP>$!Gx1bky0$P+?KW}ud!W8Ku zHgmrgRoj7>Z;OreuRA??TelP=sHI<&Y%#ZE`N-z1+O^B^(@V5qldc@=@o2cG4AXtH zYHukk(bB$SY?v|X{6yvIb9`E1-Ykl=#kbObRaj)gy}#N5#DQKMK6%4&>3Y7`wolV~ zKuf`VQ8zYWn-rx;83nWO>Ww(OC6 zE6Z2iQ{W47tE63;eR|XF%EMAfZ1<1lkgn$;_wIzv=*f_>X znoOfT`96=0eB`(qKRawLEVly4%+-S-lTDSisi8{B3Q(6!xB7X>l;if{-JNqtysQiI zQ|NmoPdvA76y0Lkm5ER$!H$2a}Lq)0b0OyZw@@%g*71Q$?>19JIh>qtEk z?V+BN{-+%*u-tLMJuvp*7`^DD$TKaOpcwCcsTf1!$E6&qu2^w}Qq!8_K{U zr5jgdJ@Q0K!Ta~Vx!1AAz;3*5<2&5ZvBFeaB(Qk&?q{Ku>AbC!d@<%H&NF$f zW4_7;iAIo<*#O3kn`BH!rd zbI~>j+GqSP#?UK%Nm|OigsL4s%Zv(F;pxe+8mi7l=S%x0!9N2C1In^46x3$oxf!(! zWyt>Is2J-d_AA5JE5cVEqu}wi3>!{zeR{FHVIdbgVSh8(Awk-I$-{riKNOV%Y5XT=s@?XSo2H02flQ3yf|AdZ)rT%@I&976&5Z_d{cVJVHqt!&G?vb z3^BnUwpMk6LHAwqYsuCV-#+;PjPiL5 z#J88!FTuiNjX$RZIYH<_op)k}wOcDXX*uRO{9T0RjNGXipG6PXUh)zF|M7L6MXs)< zq{BJsK%Mmb@1ReIc?JH6{as2r@PlXIAIaK@Q7MND2~Uguv5KUN63VUKhz9%-fM+pF zFUw4y?(qu#v-FtV0nkr(0!72q-kxfTRD+Vk9zf(byAW&|0%-+AiW&=;vJJ*A@~g4@ zZdcV#w5Xi*JfO5K2Wuq(O}{CY21}vYP}?SvZY|}OJsR0l$w4jHj2}H)*d@Dj09-4d z?OME@nJrH*jf$tbYXdIMkdJf5^EQRMW7g9*jqad@ChYy5$3w95Q3le~!7M=O0~ouD zzz_7t5-IJ(teEASV?5gvL$67tAar~$VLRykq>oW%p)FUGZF=F#jKhn3W8=eO+hckN zo26u0lg^nyttWuq?hP3)wml>FOpJ5Ad5n!z&Kd{>a1w<6TUao2B-(qpi|SF|pn}%v{CYStZW&C#t=g^xRUa|J>{78w%0| zP^KXEzDk=@NLT-mdH2GzAcS>uU4;Z)#Nl)^vkp!s(HGTfaz|MB_fJv}503(r!s(X{ zChpZo#QD$6cw9<#An)#uj3<9^n8IQcGJ3|0a+cAHhO3P1xQ+d(I@0aKc7V{<*RgAC z1M?aa;*{e1TqJ2IupbVe>fbWvZsLZOjrCh-c=G_-aE%0S zvPcq?L4(rJMUGxbsCZ3l`L0h>HrA;m++88-#BCRG`dkH=NrFotY1N*cn3SBnZIJ>< zXYGB0q5`QzUQf@XI81l4S1=||UT-n|TPW#{a4$gyU44x%pv4k#pci||%SQH>t)q*s zI5w+VD+uwqy0VQgMBS*(-;p`U0R-i+{KtHEdbm&l6oQ{AoED!lqm|;oQujIpizuC2r8mah|VXg?ddirBimo{#cu3 zpJZb&yGaKcQDu*^B`9sczec~f6=Xf_$7vYKBqmkQ%i*g#-S4=XKpL2OF*bSr;92i! zwQXA8eT2eZeV3n?9~WoVD-B5c!&iu}lj{=$lNPVRSiO-#50z%iv)pJl%F~FCRopr~ zzYpIJs0bta$00dA5}5)TnXkNzyv9v-iunwbo=(o7JQ4e=U!PV5m9i^P ztnB=lQIG7N1eemFEpP^wUbAncCvI$>Th~bvY`|^6+cpDQ6yrCT`$tP(yZxHFxL6gY z?f)QYxOQiT3DiQ&&o8u@TOH|jM~-;%O&10UF9X41jJT$iB(Epbx*qBo{M7pVUBa|* zbmsZ%Pc4X7vfP*o4~oX3@2)+ynd0r_-EA7sm@D#~uqyQUfOz;T=T>)nEq%niPg6RV zD|)f0e`!a~cSutxXK%dXRqTsJvk61*fw06IYLa0zQ@T~^rKB*l;|a?kMi z=ty32%b0gS(!4DxWtog}y*hK?kkJA{`p8#ej7#!FR%c~!8{fDiMK_p&#GP`-A7}Jj z>D~5h&`J91i<%#v^*ZV(F0eS=Us&rYynLhg(_Ze1RYseD5k{;<&fR)?GK4j10hm2v z+&s7OR6g``D9ybCxknq6%Q(m8hFOSxdu)9O)k$MK>cqAO>^yjGye;5^sl3$!si@sp zvZh`??;0JTox(d^K~BfpvNZbz_XAB$m1SD^rR<6fkB3-cBP+izsrEE#V!jK1de?Hg zmRvdT^2{oKVpizg9@@n#^eIy`-aNS3F`E8hMV@uH_A0f*^>)8^!7$SMMAcW`ZC1If zeMy=s|M2L1k(j(kP}%M_?N0IbVfl?aGVq5EX8mzqKAbw(GDxad$i$2mXVd~r?j{AJ z&s8tQYc9VaV!(rN@QA~V)P25k_wewvn)%n+Fz1<=&+(mIZ!sF(C9;v&!Se4}ZTh$A zW$N-o6tV_@QgEzsvFPNB{^{t5iSIld0e~2zeU~pG<-AauL(`NyhNr4twd@5a;@Jd+ zt>t0z7P1T+Kbr$}?D*aPk+vD(TJ|iaGcSrXF_lno5K6pU3Kom4%^cN)Rs)UE6}Hui zS50?5dH(5u!pUTPdimWi!mgMZEyq@$ifBz?ncVOnx~#Zh2d@^MWd%BM_j&vA(UyCE zC?ro_a}p`4>oP3d{JrCNNQ|D%nL$XJnU}cqi?fZ7AdYP{#XuVuVb37_)8kusu;mAw z37yp0OYV*XhLvGNykL0IBl$+(nuWJlv@b9YeN8MKZ|(jVb+%Z>%LE3-y#Qz9?A@N}?ljgfx{Q}nIj5)opX~Af^@Ay4Q#K8=RNpk} z-0;pWzz+V~=jo2X7)qe4M^@wmMNjV8uxlhPlV=Kk=L=T!SA$}n);$@p%nk%>NbD~2 zBi9`Piy?5I}$oqO_Ox`<~3tNR>{us4l8VS2YgB<0|0Kzr9zn!)Y<_{#a!1)676?fKLAWFDf5|)fMicJ z!n1G;U{4RC^BxTrfY3W&Y_)EwoSnxv`HvT0zjSj5iDb-JgaVGxGnL#${O}2$cwp#j zRsjWw(G<`+73YnDBC}kCDkO*<6*baK3BCD#Hxok1B(KY@9qum&a?A$(o6mQ2Nn0Q% zggbx@{wz)QB-vVK9jj(72jh}bIQ864nSJCcTJdu~;K(6(TdKXw-IlBV*$Vp&_+4GD z26v;_yl?M)qf~y&>k)lhEF=xnuhFd%Gp$RtAzlsULh}U;Xse#lK7wNCevOCDIW@pH zU(G6Rob{CAeV^F6OKAffapQ{-oryQD{ZRapO+y11_JUeZfo=sjtDtvUoXZv%mX+p~jn%WPKgcS}S%mUKKkV7} zb!7C%5N1WH8;@JfHvoD&lJHbc+1~757yET&rtz0O@{w_k;d$R02Vfj`~iY z{Ri1{!rz(mu3u z7$Az`K#nU|pXMl_xA`=^4?}yU9pRWtzO9RqS$tOSzMRt@Zzocau_!L{7ed7OHQh%4(%gpNZPW{ z6TjaMf(rNjfvunE@JQ?WMP8ke|iGqEOHHk96;$sH{eU2r9w@L7!`RZfQ!LzA-5g@dn zti45{_k!sXQuU~u9yFNZsg;zie=}pP0|v7AVn1denDJI}gpDusy9eX%b}2b7tEp{H zv;wD5+s>R%K_fd%*6!YkhbPU9yMo7UlLD9NfEX}1fLYZ|%xt)3DCFh|j|+WfRyHrD zT$-r{v=+^cv}P~a(3K869e~xFO}dbB^aC5H(ZG4bfc(KmfSW;J(x5Q0LwQ>n*a&?& z7%Q%m$p@W|>e|N0A|~UA`){~|8@w;<{FwiMXmj@s4to+DpKvL&{b5MsM9oumPkfC8 zN9<+^>{!*U{bhfWAqnTMP^0RK5)DXbQTF^rSJE}wyMy6nn@!7RqA2vlWS>LUMp=P? zT+kB7Zg*C<2yCeMTvjR?ajARK$EBC*5ZiqnySu3s2;30Q1qcOSr4RO@alw_ZEZbz4 z*Frn+o((V0H<|d}sri{#3Xc2&9Hb%OFoU!eDcQi$P|HCEVqNootV2jg)8FVP)s!*+ zA*(!@esPZYwy388jIH6HwCS({NDcXUD!Onx7^bYccB~)f^|qs*roO)#I4P^=1d3L2 z^d~;-b!p8=^-rs(!~@oQ`)0vwglwe!TFV)mgMqyYvoswpfO4A{*ag3EOg)G~Coue=_jRKJ~_i8WZ6W_hK?lY*EwQ uuCFI{BBVZ`&GJY6uea9!_}$62DysIu(uIAsJm9kzDlHBD2Vc}}BK{4^0y&`o literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-contract_call_long_args/00006.png b/tests_zemu/snapshots/st-contract_call_long_args/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..dfbde52bcca0f7d0b98c71462549ad7a1392b5ca GIT binary patch literal 11174 zcmeHtXH=70w=Mz-N)?eVpi(8$l@6lPyMPoSfHdg}7-~RJVS^NDp#~Hw5_%IM5D*Zg zZ)pKyh=>p&2~`Lol=HIp`NsWm&iL*)<(_fJ9XEe6#+$6Q-Zj@;^LgeoXM(w@9?Lnt zb2KzGEC%{_@6phldQC$^`-YJgc%o|7UP(hEV4V&eDgm#eRWCzniDKr>u2O9lP6c>7+5x zydocKI?~Yayy~KTb0+5WEf!j)XMFTrG&dMQG~VpCG?T)0H1D;YPnkdePyb;LSI$K9 z-Fi#CQ!Tj$oz7v~Mdryc?`Z_7cQS%*b)X9PGBiiqm;2qtxMNOB>_#4b$^8s6KWc26 zxl%`yMSPzpcYnCpjbilbIxUm=vW~^lYf+i&AAq6BAp+cn>E=cXAd?I-J=={(T4=Pj!CK5yFQ{HFM|TGU9Q2VcCM`Z-I=Q+ zxjN3LjGA5;1%`BJH8O&npIDV-g$8*5e{Ya5l-e8}zEbz>G=(TpF5dBWgPyBSIT2y= z!|$|M-Lq12G*44Uxr@H@saJ1Qt9$w7|J9I@^W0Xoy_HgSf7|kV52`F&6l^~LZ0W?D zMZZ6+T2CliTW7h?Dvng5ciIfOVopbPs*fEXQpwxfjrP??ht%>Abq(O@a0J4}WP%7$ zqh?_J$*bYhudV^pZYRciG1&U2tqzg6}LRT+-d-kXv zWJDR;a1hcvSwPH3@V#hmmwjlt8nEpyDP8AW!H^8i4-KHy{>9Bu;z9MwL0(JT4eBFM z-ixkm*|&?6b%PDx{97Q=k?iz#u-RF+C=A-KlYO#|W+$(VLZPU@O}E}%QgyfcP%Ah% zbqk4bmtPB39k^AE&fY&y&-La(Azn*MODsKIq+V^Z1yg;{Pd*eeNEea2uD2~Uwmph( zZeDwidlrG_m3~Uhc&=q2(?nn=y-Zp$idXM>9yUh9cGJc|7=uj7^fN9Sxebcmq}SX z@lIPbQ2om$x4%c^ST$VKxm;UZ=cI6+{!V;Z(N93w2m-P8Ja8e}Yb)G3n!=ZWW9PgKM5?`5!|BS(lb=EHtHa@U z?8AU~b8A(e@K?AwZE^T3Q;D;%ix#Hi*t4OLtPRAHSMMYm=X39$49Q3w4iEZkh^<&7 z7tez-tAMrOt98$oORddF}Qdts%uNdug8o9y60G(tJH4x#*IlF5nA2sNlWAIT$?2h-cE!`P5*$_y-u5b!-={m3Kc(Nv}aUd1UEs z761{S3pPvHdQF@{X2y#R*=?VNL+=O){>pdqFy#eytx@oi_kt~xnFIrHt*<+}D4tpT zFQdwT9hd&!oFVxb+D2nraC}6qUAJk$m{3>W@ZIlNv_;@Yn?z6US3&~wcvHgzj7 zg1%|@un%cFFQ8iGU#(s&yz9JRqA#VM+SM%q44|jy>I)YG2Dot1bAeNux*Zrn#nw(e+CW6A=3 z1NQ!<-Ro(Ht~^uE-vfW`Bmx6xE8JXYVqW^!8dV~hE;s%e|MzmNwKZU@BWD&U_)6XP za5H0k z6NDKxA0Rdn2=BbUZFL;^;zj;-ZD(j|u>^pSb}*9DY3*TP)h(c~1 z3z&P6G%M_-*g`gdVEH3u3f1akl?d;~St6M_isRC$$B-aMM;v|EZS$V}Gt|SQQ1v{a zcM|D?nTl*CiI-CQg&BV+Lp)>>e*~+B0r>oB;c=)8;6JMJx(S489PGu_F$Nd<2D9$6x?iYv~AQ->rd zeO8ScbRimw<|Is`kn&mPjmqE%aRYkK$i3ub!DqCDgBry&SN(w z?2puU;?Ns3 zVai}^%6keuSB+T3<2?@&>l`NQnvf3CyWDd%ye!H^V*u-#d{#0Bo_y*j)`;wKkBM1qu-R0}J|GBO<&b{_mV5_oJgN(nfh1;s79W2*@sps)Q;V1d? zwm4w}4*a?~r;b-%iZ4U%ER`=y45T_nLEWu$U3;vo95mb6%+@{H)qn}dZ->2MCdK{S z3D0t(pv-#A)o2MuC0?sf&&CQHq(icLAxd@rEe{;g0Ee5B?wRy2m^JwWaG+85y!~wK z>1kGwTJ=6FI>xOX>yIX6z29f0pC$v0iiCijk8{BpsEO5`nHiBo%7$2$)es0W+ix$} zx{j|-I}P<@znwUY_@cZ6c#URJhKLuN&>@AATWNy=8Sx6?Lhht$SQW1e>b7>+1)Dxr z7c|k@UwF*J19w*aJlJqRUdKU@?jL7EisN=ZueSN8>O4{+=uX#_G)9JQWafTsoV%gx zbnPj`ah3=UyK~0n$?IqqZ(H0j`A|8f7F~($amPJXzBi#*IR*G{0YFe5-(shS8^|F? zJg%m~SAtp{SmU27yl6%s)W=#dB=6>jwmsa!bw@9hQ%pvdVm_p6&=~R++QAI;j&{OH z0^F)Y@2a|Gn|!?UM?6CJMGQ)ujOS7zp;_)>ArO#I%knP|HZBssxioRJG~>RD*80L@ zW#-=m46*J#Vm0RAT+c?N=1^cseidj4pwlfhfi9C(;Yh3@Wl4H7ZK)qP)3zHXjTq9; zjhu$y5LDs+U)xFq6X>sR^wLOdXKEYu}HTt zqjdIAXY_H&Yv>r$b1ucRPaCPJ#(~XQ?p`=H^#I=ewRXAsKvlTv9g`Z_H8K^6mL9`5 zQlgOxMhJ__DZp9FgCK&<2SDPvLtGy7ZeEQPc@BN&gltfVR4P8i>~=Hw%LdQ6n-0z> z%tP~H*QvW-_8ppNz2d&aYNV6pELV4tNC>^!s ziGZga%zbv@@#~#ApAZ-^xbpLpNM(V7`tze1f@cb+okP0RuFjD}(rdyc-yTw2dmh$H z&`&EpE<}!(D^%Y_&bj06`n7x!&}N@`TC|%UFLSzSeU6v03UhqPcS)eFC*qm-a3ljQ zA)>@9lAxg1Pwl;~-e?_|yAphwu(QXK8FZB~7Wv8~{jNv5gLEzKkB~L*WOw;J%9Qjbur0Cl04=9BHxLdIAl>}>* zxV1Hqr&xWxG=4)&!->>d0{K&Av98Puf#A!rf%%#d!@y2A+{Sz1jS(7{UtwT7SRwwj z_Mb|haz@gwXw*Sw2cSMJc)vW|sL1bxjWxezI;l3KnJUwUtx3>u$WM)sUg@-XO^_bU zy%1jwL^0f)2CeB7$RHgh38c?6dT~}4bYa&`Eb)&MiodLUdA(yufg2WEcK3^YXn7yN zPiTWcOnKr+g=NTmAVkdRq`{ZGqw)F$eAjE0!qm(%pT?>d?6^us4SqEXf9VbAHKN7Mx@M zSi`z|fglNu6$VrR9g8pTi)EQh$K|{(FV(Kv;M!ERoNCeK6BQEY)ZU7js2dMXgvkf< zwW?%H&$k-6^A|awE{i`d#FIMB8WKJ4D@GLspP9yL6)ZAo4V_0CM@!WS0`LeV*CoJ; z{fl3>+eHjm<9o1SX5|x`p-pT~LFyfKy%&3+nv7&=ajh+5U;eZTUp zx-35-TC5y(g?ib=qz3j=d*n>rlIff-#n=hk@e>f`B`tY?DL~0fR zpt?>a`P0TTqs%6(So4ta@2o`UiiU93<&ttEB{RRq~?`VckwlWW{b$27NWaW34ywHp|Tq=Eq;b=HX=49vNhZQa?&}o~E>< zZ{a!uaVnVuL?ut#o}7y&bK;i$F0;6~y>2bw9t*@g)vELFbafm4xG;Ko3%=S0lkAag z!uu5!d30o)sZGt@+l?svGF6Q7^G&@GkQyx1sd5`8Y;%aev@$ZhKY3qVq1wZ2Vkc;5 zc~y9iNf1SLJhRN4BwKaDM#ULvRjlKLx@5h6Fnoh@bYVxl%(S9XS+uHMbhkAJoL4nB z3nT1%zH~>=PVg~Sl|Gh#)Rz!b`^ozDKcr|bxAE^46<4dD$#iwRFp{gdlQ=JRU;?Op z{~QR-xoq9-jt)*fkt2z+7oA4*%O?y9(fcNurvaziVo$Zv%HH>r;uB_5JDQx!eiOt7 zTBx+k9PO~Op7L+W$X<%P;NG$Zg2COTb*Cl8M5`xv|~EzA?25eYoz; zGo?>B<6I&XmR7Q%pCge!J#XZCh2LSSzv{3#!!9jsYs$WPNtOY>mu?*;s_he{7`T$VYo&H1IW_Y{g&yQ+Z2Y{sfX8l_)=H%M9e@L2-zbyEyYGIW z2|Kj7+Qv6s=^+<#$&oqS_zyVSC4s8te1+P}X(g{)0z=Ng!b-Ca{d0CPcB*uQwf2m} zNii7~m=a@7$3pwntIT&2;(+W(LO#a5Q(15Roh!KEN7ciF4@neoU+w;GwA0~_D*I8q zT*UW*>@~o{;b05F{x2PzI%(_FQ7K5la3HwvLVtbkxWP>714HNBkeS)&*Go+;PQFST zw>9uL^f*}HF;gkbDqI-L4|G1mC+q8d=s4tfgL*jA*&yXmCJPU^CeSLR8ztj&qec%eq4Zh$e0x&`xCaMCJxck)j=NzGvP9M`)^9=VGfJGzO9d@j+$ojGJyLh zd2LB;{`fTDI|L86D$xvK>qV8_rl5sF3ZfMVX2(r@=V3OCio9PMwNN(V= z8cS)IQakD55-%9t^<*5}U{$uZhQ|cFR*8P0=_9#V=O)gjv%p-_iqVq@SX+zSG{a$@ z8Al9K{^Z}}T9@0_G%u;x-@nTsz1yPXH~b;#7_3_p?u>V{n~wT~3?N)gox5; ze_w$c!defBZ=>w|zr&LP+cfJK1T}@7tP1;+TF1rXeE`6S`FL+sCm9SjbPg*FIf017 zmEdc@ah~HX$rnjj+2^h6GO81j9A61m6-?bd?_t^=pRKYL!P~lOBXHPr=Txk)>>`KQ z_1y)!EuE#X3eS|+A@+tD<^rtoZ8ZR;$t%0Zt0I^RLCNEf$^PmX*z;a-*QIEIT!~}I)R&t<5Tak(}y4hm)5}%^JQMU)I*H_tJw8XASThdot1ZR z4lQVTPnZK}T|7xUDdU6tFj+oos-?!_`=~ydVYh2CZ7Ikvw8$p2d~9;@F2V{TSCF;_ z@q&LX5o&qUg&@qeu4)~DyZ_3$msoRTnc3odNFjH>mDBpTrRlD*2aU23PuZci`?X9g z4F=+YTYECUM=l+iL-PZJ7#69t7)Q?SP^Xj13odA)BTPS)d3%@iB^jE3+yHuD^=d9+ ze>wDy;6)M7ZU^^>aaSEcV;Zk{eagI1OU@gZ>*>_hA{JRMHfF6$3#VkD_B}~ug5pr7 z+$CZ}+UevTdBGV=9gC)ZH$x27Qo~Mx%WIYOZ0z@odYBw{Q^%bzj&fePjRDkcZeIMg z0si|bDevZ4--00lAoh#4rY40rIj237sq5vNwzA;NI>~@WTvdOrv5#&4 zP(IRs9ulKNi~1C(iYg#??T%?ELWom-jCA+(L~e#vx4g)zyF9`mHODL z;@1(lB{{F6j>g}?sua|i@&a$Y5sst={G5j(6Pk;dMK7d=5x-`{36(TIUZ2&mte7t~ z{3=pVr2ZR$Ku9DuoG3ckL!u@V!i-z$#}tZ}8Brb1brW))Iq$`GhIm-Hm$z28#eA=% zHVm(l%=rD(WSs|4=xX==9QM76Oby-;W+ayHr-m6APbh9lFUg&Ljh`9bqU}W>`f6WlDdTXxIKXO~Fb!K3q0DSP1^AE=19khFte#AHPi zHF9VB`@Y$Z3_)a62Y4g|uxk0*z2VrdJY1KgcLw*>p-+C`k%!TjmfgU$=#w&~FWBz~ zXfTRkz^MaYf4icN+#es5P7f2G%DKK3<@8f@);qi8aGH*4a{Y-wK12PSyWortT*gwi zGQ(I-BpM!KY#d&nY%HK-!Kp(RqhsH}8FNExTTe5wcsJi!;9kNbAzYw*lbO28WjImx zluNXPwySCR?(9^U_kbH}9dm#2oX5LhWGK6{*^`U+u&kcRTzavSIM`@D7;5 zH?a%cIt%T_p$D&RCc*OzO)ywD#hV3oC5F)l26qY>m4K^dqs-V?mN{lhm?JUSpWuTE5s5yV93J{Ig3) zB|h(Zkeorq275QlvRklk2)=qvGUo>?ejVZpxm5^j5LmNi;P(#HD3CZMz^#+QQa7>O z@L4rCXYN^_Os--gFZCE6Pz0m>O;VgCjh_+V8P)X4eh5fcxPCHp1=G;)vLl)Jumxjn zeX)O&5_wZRwbjGZxI;_MfJ0>>rQg+Qi11i>@+q_fJfWBsL=9E#1$gxq3t{Z=x`G&lm07zY%W~EN_*uQ zx-l21m*x8oKYT8%EWiq=Y*&0+FfkuenUw+I_HRtV!1{}a;F}Dpl2$mORNzQz~O6UDs0u{`u zHWr)%6>F3E2m}C4qabZ|<&I@DK8ePJ!irbvg`kY!vWGK@$%hmyt$vrr<8>>X^yh+K zJ$c!@D{D!zZFa7g<`y|HcM5*~8N&5&KNv2U+u!GcZL8@Wa)3W?Y_HioM;hq+?Sc*O zbIJYsbGI%I<>;0p8yHuf`@B8q3!&tREgjUBSpX_d>k|bzeswUFT>M2*ZcbZFyfGM= zQ`{yX|;{zGcr z|Dj%<|NjpENJalQDd+$7hB_GAZdV`Ea%86YxE@`I*RlA$@{pzrs`x)ED*qEVb%`zW z0!lE!k{cn1>l3HD4h9=QiNy#+nO7u^tw%Ox5zqbLgf(xTG;;tFuamIs#h4vy1mdq! zqFT{91c|ro1AUMu@q`tL7_ifC z32iTIhB{Q=2MQ9Q>Y9y@otc3`6~J(|Bp73R79O`c)SwBJ$dqDz&9Uu++~ISv-@`kA zU~0#g(?$1)BPs#w@0sV3J@mP0^e>&Re8Q^*6IPgw53}GT?CjS!E1E2Z7216~m?2{p zmY9`9Fj7DmfhD|s04U@VHt1%`?J;~1Ua_q3qD~s+&)?p&LgyO0PzluV-qkii3Gciz z7oNF^c$Z(9vmlj}#kLyKifD>ZA`)N#8BW# z>8X6w?q+_n2GrUbs6_z_o{!mK8MagXbGk8FbfjKf$HFb-^*}0qyS4W6eOT#03XoB? zp}@6bx@0Oe0yeQ?1uOmCKWp6x%-N({ZpvKBSQX%Gs^6N3?mvLQy0)Ov9pHR-!zKTZ zAs_>efoA0tD2^>w*u?VeN7QAYtqR-&M9Z6aO{|grh z#}zuyGG2r4SRWPCCCjx3ub9d2x$2WnbIx!O0f=Tii z9Cg{;4JC^h08MyOg$BtY20t@~mLBRQ@Mf(gy-i)Tjk`aKdDu5$md7)9-qz{!Xw`?^ zL#38NHD4kd#&T|`e*GMuY5eHLfyK6cTB*e1(ZRG!uQJ5qAc|)@4PowfFqQg?^f6XS zTj~K$B^gHnmZe)zEt84OG1m#v6v0$YnZI7yF32q((G`7qMQ}A7HV;p29_Xp j`MiQ#r5}f literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-mainmenu/00001.png b/tests_zemu/snapshots/st-mainmenu/00001.png index 23c74a01d1e37ab78a4fa983ef7f455c713dd263..2086677718ba10e9e8e7dfae66c1d7c81e4d3a79 100644 GIT binary patch delta 69 zcmaE=^HgWUJif^n_@+obF28KD`s%A&?TjDF_s?GTa@RXB(~q-pvmyUHmd&q()0sq+ WSH0F3^-WmH00f?{elF{r5}E+r5Fcg$ delta 47 zcmaE=^HgWUJif{GY?YfG1XeL`J|LjUxcQZEI+MuJGq3e;312zK00f?{elF{r5}E+s CL=wgT diff --git a/tests_zemu/snapshots/st-mainmenu/00002.png b/tests_zemu/snapshots/st-mainmenu/00002.png index c4b231c32ca324c2d8ead2fc3bfa81751192dbd2..bfe41f9d1969129f12c8f4a70ff0241eb3cc6ff5 100644 GIT binary patch delta 63 zcmdn1y;pm~XWq#Ud{ZU=tXY+{F(RhgnBm`>^w7}U+i@V~8BN8_3;8(MMdEg4Ub`n^ Rd7l9YJYD@<);T3K0RW4f8X5oq delta 70 zcmdn1y;pm~XI`me=U1%~>pr^GocY1|y0Flz+unkibA*^S2lBsT-fSS?!noO9IEzVy X;dSOU@gLkJ3_#%N>gTe~DWM4fhFu)u diff --git a/tests_zemu/snapshots/st-mainmenu/00003.png b/tests_zemu/snapshots/st-mainmenu/00003.png index 23c74a01d1e37ab78a4fa983ef7f455c713dd263..2086677718ba10e9e8e7dfae66c1d7c81e4d3a79 100644 GIT binary patch delta 69 zcmaE=^HgWUJif^n_@+obF28KD`s%A&?TjDF_s?GTa@RXB(~q-pvmyUHmd&q()0sq+ WSH0F3^-WmH00f?{elF{r5}E+r5Fcg$ delta 47 zcmaE=^HgWUJif{GY?YfG1XeL`J|LjUxcQZEI+MuJGq3e;312zK00f?{elF{r5}E+s CL=wgT diff --git a/tests_zemu/snapshots/st-mainmenu/00004.png b/tests_zemu/snapshots/st-mainmenu/00004.png index e868434aee19b10a19d01b7b7f7ce59e22a4a957..b005528ec6a8b06f94f106cb02c28b4f8dbb1973 100644 GIT binary patch delta 9199 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 literal 11074 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 bc35d1c>V5q?M0wA7G!JVc&_@4*WLdG{LyAq diff --git a/tests_zemu/snapshots/st-show_address/00001.png b/tests_zemu/snapshots/st-show_address/00001.png index ef28e43aa024d194d6aac7f529a78ce47803ad85..bb01b665b99c2c0d818cf8f0bc072e4bd80fc891 100644 GIT binary patch literal 14247 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 L`R(dk?$7=YfSTek diff --git a/tests_zemu/snapshots/st-swap_with_post_conditions/00000.png b/tests_zemu/snapshots/st-swap_with_post_conditions/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..05089157eab397dd8926e792968e715b6bc15ad0 GIT binary patch literal 8468 zcmeHNdpMM9yBAs&aww!6TTxa`D5uIPN-arJjl(eH7=uC1hM6L)2rI3~2rG&jb6^;Q ziE${(p%KP}amrz0%pixsFtgv*xA(QbYyZ2i{eAn7^<39|&CGjU?{mM;{rsN${@uTK z9$vq8d9TDF2@w&Iy*9sIydfg8<987e(LZ;K0$0x2zbzLL(HOS5Xn8B;vceCJ}ghT=NaZ3%bmKLCtT<=Psx=_ zNze0Kd|Pm>%)m}e2L9I=XhYF-MEqDB4vuZ_;o&hy zNiu*qi}=Vozh(z8R;p9lUc@Hn%R0v#>Xjh>T+#FOn6gV#sJP;g*|{ozcTaIqN&E8< zPZd$gf^SM*@ZF%5*o%Ij-?sRRDtlH@wWA0Di>zJ3eg_2f7R+b++e zAMvOCJw2~PNG)9#S3Ej%I(@NaYB$JKJRte9MunbPuY`=%?H#{c{--sYV#hM`>}0JZ zCGSaz{tqkMCy0Vn^~RQNbbf9T)ktdkXKPt$Y;06gZ9gLG{Ono!@zat|ydkY2#y>lj zqW4%9PdHXr=)HpcBxmzX@qY3!b5nS5O4yLLNA9n{)i&1(GxRe+SCgAsuJg9+Ssy`H z6aSjMMT2KR!0TK(A}J>4T+0%!0c^N8~d=)jwBU=jjJT zMke_vqJK=f{?Mm?dy)3wd-+SHOhrYJgW~@mY@p;87!0OY+3q-a>)Bx+(Q*u?c$oQV zC5n=O`Z31fWSWko_;t^ea|PEtB&1VY=?mGVvm5cqC>yG|g~j%b1SHa&a`Bnr@vcyz z-E)-vQ(u=H-~4Vr@~~N@lBZINr+vJ@kZ0t>$unui zL{O53c3N>@B?dzTRozMVRB8)*UK$V>-u22oTQf|B4996pFb2j}Ab)>l_d!zDXEto#=_QSwTG>fjjZtp_IkQ zoj2vJp&nZU`_4hjbZz#bJX*8n=n{Ra92nyH-0e>Tx)N9#jfNk7{BW{XQSkykihPg$ z2yzM?>2>iGGg_v#;)mBDqx>NcXbB+_O1))fJtu)3IHzzZ8YzX=Dn?NSH?Le`HV7&Af4A#~h5Rnx`k# zXJDoRfU_BDgnScZQj@&AF^}4Yj4Tghnt5V|C(h#%9BkEvAJHVf+bOq%*Q&i?T3egs zH`$sWXCvy}bOd3Nf(939Q;eBH+n6`H6aZOn=XAU|#r5%hczmWVBtY5T^)Lt9H2kJqCuCgyKyZ3`FDRX1rylQEIPietD;OkUPfmVM#r8Hl({LZyC z7K=3-0fRO{Pm-YPuJ8s5z_T>4%c;R_6tPwqFaf=IKpc3jq zwie>X`5E0-=4x5U16^iCjho|J0ut~X>TWWte`AWX*b(}V zWzBgVL3isMYuZ7bu=~EGLB-Jhln!Eq zYs{6~gOU;Ol+O=b@q=mPQghE0lsT!6 zCxO8y71OCGA#nVMz&?jhZ>Z5&%W!geLN}0~K(0Eu>F+XMVI0) zoWeigt@C+=VT8POIlaSbtnsmMfc3x#$kJ7nzY`fU%$;uX@5iX9?ZYqRw4QU`hVl$O zu&3x(PFKLNgCTpoo|2;8@WH`MI$N}JRRVh3@R(vmU6s<>W+v3nC8rKHmz6k7_`}B~ z>WqroxqI~12KjyB&2X|ZGXAKX_2Xf0mmC0p)0BpN7WEI1D*czvs=p(&nIR%hz8kzW z_dt{Kz)qlzSTlPo>x2 zvpD?fEa~N)Yl{r(e)qUhJS6e(gRBzUZ&{{CZEoaWWf7cBBAl}3ewXNbewAe`6F8Q@Y<^B55zhj7d2nlKFw1=|JKrL=R=-2I{pO|2e z@hY9l>9Y|)HK&YxYG4dN-hO60Lw);tW|R|EVD1kOky5j`3lHG*n1PX5N&dM)quqNg=n@cmvkq z&Sh-Iq57JhWhsNSV!W|9x2|n7H3Uu7)5kw31x~E$vY=$h!*f$zvYNXD7GqntRjA|! z`nnjkKb$|X6LNwFBW-SN&7)$R@_P*8K8zQ78Kiy*fsSK-6tfqv3q39b`C6wwG$>q|xLemRh_K(oSuvzN)`B|8kA~mkq$)yq{-{H>1qT)ZdVzfJJVKq< zl2SGfPEcNQQYh)%rgd_JM+5X1P=4p0HMn{UYdlmq9)iMsn`~)|1fB{#3=ywIHK-8L zjw9(DzIWi#KM~viBDnvK&!w>{$;Ct>=tL(GgVB>})w`OlnO6M9$X)*ZQjApMc<7m{ zr0%g4@7L)~=xpd7FnB|KCRWY*Gn}07b0D^GcrCs7x5=37;8Bcrnx53Ls}t%*souYZ z?Z$qTx32ub$9^l;&YV1xS&liLR;-;y1TomFn!IH?%omq*tdx$V7U?CTM*Ff3Upi88 z)SGcWTNB7H3I3I&5qLSKg9x(gGvVz^neeNs3qL|tX}^9TiQD%Y(-C(N2?2`sUMpH%x6svSFd!G+yJID_jGRJhPrbp=P0bFn$u;?5fKOx80sdJ$ba1M}7ay+RE zw`(9X$*h`l_7QLXs~|k}zQ3p4QJZX2+Onx`Cy{C=*Iv2$Yzs5LDQ)dg>z5peaZAv= zW4oClX$x#kR(r|VyQ+(?N7ir|p{8nxLaB=m)q_FIKM_^*ablZ#7Ohds<}3LM#0A?w z^h;~!bIpflUtiglt;T6@Z2im>f z31&Vo(|By*%YFk&J+|G`)*NsDSo33&8uY2}Amlcs;&K@{)HW~JjR`qFp#G@X{{tS_ zkvbMP_ee#l=gqw%@rmdG6CCs!*PXK|J@7F6iN&t9U+RZ+Ng0%#+>e=#@Gtm{WBkw+ zwUCqH=+ZSotX|9%e*k(F!PQd%j$Fmu@Tx`^x0RIM468!a&In*mxvswJk)zMqQ*HTB zFC+E4XN`39Lp|)wTx$|Dxat|&RSj~}UThd;7MKOe)sww%xYzj8kP4}rh+Q>b$f{UJ zeb+6_-;_7H_f^p6cbjhX)qZA$LE43ew?$>)bN&b({AqrR#`$=mXH7QzPdVQjZ+~5$ z)Y%j=*Xug~>~H(7wfZ>>zpr!C3GR8hsVHu#(%#K~3)QqNSr|80H}Cc7*3R#pwTOLjJN|F#HaO5fX&% zZE_lAGO%`^t53R`bOsOld5^}fW@=X{?^gfPTNintuh2wl1*jjj3Rgct+r*0OM@rU? z6UKCui16Uw*#ppMoWCpb9fMlcr9Zf{?S<{Sti1|VX|!}Vw@|ykYI9O&ReiVIU0BVx zeWL#pwYP`nGITh^WH-f=t6pcP-om^iRNRXLvl>qUzu>ga? zLKqJ`mD*7w$}wkD zfF_a-amso13arxpm+FUeEZ395<*of`mFb=5>(sZOpRz20)lSnH`@~wF2o3$E(M{)a zkY46w=k)j0Rl|)8d9#^3M}U>VkL5^b4S!xNO;y!Ck(GhewDD^AfDg+)hQ8p}eWD^! z`@nYp(-OL<(S5uXuPt>eP4z+iF@2CI4&1}MZA9SvN6#0_4( zr6hbSgB5dpm4EqT8^2KSD}Hu1&ydoDsazzY7?AHk51!jeCX+2t0+3=lkH>rO{=k#652$#oSjcXWzZ%gF)4gy+bnx{9By&5;ZeqP^+_du5d`sm#{73p2% zsrL5NlQZU5`&I@bsf~?p84ruU0qr1-1$0#=5x`A=_7#Ax4@SnvuPevm)lH~nA``gtAKh4?kD(^ z3m_4X?A({~Vy~jb5Z2Y%+F@&(&kzJh>+yL@G1UXL-FTwwAdGaknbG&*P$PFKCPH5U ziyR(*ZEGATbPa6Ds?oIZ`_dTmI**LwI>;xJa9aqlthl3k;sQ)BGuTL~)szM(b$9FB z2n=h7cVY8m7g@8vaIh|2t#>KS zgDp)bI}cr4;^?Rgx>WH_G@N>t3CPzuzW70NSJH+He_QbRtO=nBreOWpFni>f&K0zn zjSjqn7=-g_Wvt#&W90Z`zgzGO=!N9EO?s`g1xo}fr2yf>(i(SK>Iu6xJ*y-^xjSPE zU46dnwqm#NxA;#XGYZ^Q2c&tYNZv%tnO0!@;;r|rvbI$77DPdhOpGk|P#XH|_U z^(tV_{Vwuj*BnM{;O!yfGq(%6&t&G8AG68!&1HCABYLI3Eadn*mVtOmm;{ox%iop^=?*91@8rwi+3QT+vp6Mx8oJ=GHzu+agI@kI*40<>XPGY z?eGP}8Y&efcyV}qP85Px0uLbMx)?3J+At#0Q^zwMYgA7Fq!#54eo8;Zdm>Zy{av-h z3{%S>wbirIS$vG}y>5$``lgw8L;>}*Jlr{jfH+q$U)I?{#F~MtH;@8Uy++k0!;ri7 z-JK9pI~WvH%8zS^vj2&b*02mBIG)H?s&&&D;U~e}utv*%(uMhs&0Vg}&Ab(DK3SOW zvZgQ9eMdXLdnVqT$9OTpZVL+v&)t4M|M5JBCBm87xB%6U4_|G6>ul0VY#nlmnyh}P zYepmNx{?i?6c^Ic7@n-mV!~tW?aMWGkIwH+QXgek&zJTOAsaW-OU&2E0-L0Y0lT`$!miVIA kKi-`EczgD*H-QZM;Je1lGRh?2-wq-+*4HlLt!^j&2MbmtlK=n! literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-swap_with_post_conditions/00001.png b/tests_zemu/snapshots/st-swap_with_post_conditions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba06d1be5288402081939148cbb65bbc8e5cb35 GIT binary patch literal 19099 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 B?h*h1 literal 0 HcmV?d00001 diff --git a/tests_zemu/snapshots/st-swap_with_post_conditions/00002.png b/tests_zemu/snapshots/st-swap_with_post_conditions/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..53d65650c8d952b524f036879b5782cdcabc4c02 GIT binary patch literal 19918 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