From 3b75ed170ec95c2b604c10ab5d9b5f6a696a975b Mon Sep 17 00:00:00 2001 From: "pwnh4 (@loicttn)" Date: Fri, 20 Sep 2024 11:39:57 +0200 Subject: [PATCH 1/9] feat(src): remove eigenlayer and ocv1 as not relevant here --- src/contracts.c | 88 -- src/handle_finalize.c | 49 - src/handle_init_contract.c | 25 - src/handle_query_contract_id.c | 19 - src/kiln_plugin.h | 225 +--- src/provide_parameter/eigenlayer.c | 1147 ----------------- .../handle_provide_parameter.c | 35 - src/provide_parameter/provide_parameter.h | 5 - src/query_contract_ui/eigenlayer.c | 244 ---- .../handle_query_contract_ui.c | 40 - src/query_contract_ui/onchainv1.c | 133 -- src/query_contract_ui/query_contract_ui.h | 14 - 12 files changed, 6 insertions(+), 2018 deletions(-) delete mode 100644 src/provide_parameter/eigenlayer.c delete mode 100644 src/query_contract_ui/eigenlayer.c delete mode 100644 src/query_contract_ui/onchainv1.c diff --git a/src/contracts.c b/src/contracts.c index ae42509..296ffee 100644 --- a/src/contracts.c +++ b/src/contracts.c @@ -15,24 +15,6 @@ #include "kiln_plugin.h" -// ONCHAIN V1 - Solo Staking -// --- cast sig "deposit()" -static const uint32_t KILN_V1_DEPOSIT_SELECTOR = 0xd0e30db0; -// --- cast sig "withdraw(bytes)" -static const uint32_t KILN_V1_WITHDRAW_SELECTOR = 0x0968f264; -// --- cast sig "withdrawELFee(bytes)" -static const uint32_t KILN_V1_WITHDRAW_EL_SELECTOR = 0xbf509bd4; -// --- cast sig "withdrawCLFee(bytes)" -static const uint32_t KILN_V1_WITHDRAW_CL_SELECTOR = 0x2ba03a79; -// --- cast sig "batchWithdraw(bytes)" -static const uint32_t KILN_V1_BATCH_WITHDRAW_SELECTOR = 0xe8a0c121; -// --- cast sig "batchWithdrawELFee(bytes)" -static const uint32_t KILN_V1_BATCH_WITHDRAW_EL_SELECTOR = 0xef5e4682; -// --- cast sig "batchWithdrawCLFee(bytes)" -static const uint32_t KILN_V1_BATCH_WITHDRAW_CL_SELECTOR = 0x0ffab6c2; -// --- cast sig "requestValidatorsExit(bytes)" -static const uint32_t KILN_V1_REQUEST_EXIT_SELECTOR = 0xb6b06dec; - // ONCHAIN V2 - Pooled Staking // --- cast sig "stake()" static const uint32_t KILN_V2_STAKE_SELECTOR = 0x3a4b66f1; @@ -43,81 +25,11 @@ static const uint32_t KILN_V2_MULTICLAIM_SELECTOR = 0xb7ba18c7; // --- cast sig "claim(uint256[],uint32[],uint16)" static const uint32_t KILN_V2_CLAIM_SELECTOR = 0xadcf1163; -// RESTAKING - Liquid Restaking -// --- cast sig "depositIntoStrategy(address,address,uint256)" -static const uint32_t KILN_LR_DEPOSIT_INTO_STRATEGY_SELECTOR = 0xe7a050aa; -// --- cast sig "queueWithdrawals((address[],uint256[],address)[])" -static const uint32_t KILN_LR_QUEUE_WITHDRAWALS_SELECTOR = 0x0dd8dd02; -// --- cast sig -// "completeQueuedWithdrawals((address,address,address,uint256,uint32,address[],uint256[])[],address[][],uint256[],bool[])" -static const uint32_t KILN_LR_COMPLETE_QUEUED_WITHDRAWALS_SELECTOR = 0x33404396; -// --- cast sig "delegateTo(address,(bytes,uint256),bytes32)" -static const uint32_t KILN_LR_DELEGATE_TO_SELECTOR = 0xeea9064b; -// --- cast sig "undelegate(address)" -static const uint32_t KILN_LR_UNDELEGATE_SELECTOR = 0xda8be864; - -const char lr_strategy_addresses[LR_STRATEGIES_COUNT][ADDRESS_STR_LEN] = { - "0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc", // cbETH - "0x93c4b944D05dfe6df7645A86cd2206016c51564D", // stETH - "0x1BeE69b7dFFfA4E2d53C2a2Df135C388AD25dCD2", // rETH - "0x9d7eD45EE2E8FC5482fa2428f15C971e6369011d", // ETHx - "0x13760F50a9d7377e4F20CB8CF9e4c26586c658ff", // ankrETH - "0xa4C637e0F704745D182e4D38cAb7E7485321d059", // OETH - "0x57ba429517c3473B6d34CA9aCd56c0e735b94c02", // osETH - "0x0Fe4F44beE93503346A3Ac9EE5A26b130a5796d6", // swETH - "0x7CA911E83dabf90C90dD3De5411a10F1A6112184", // wBETH - "0x8CA7A5d6f3acd3A7A8bC468a8CD0FB14B6BD28b6", // sfrxETH - "0x298aFB19A105D59E74658C4C334Ff360BadE6dd2" // mETH -}; - -const char lr_erc20_addresses[LR_STRATEGIES_COUNT][ADDRESS_STR_LEN] = { - "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", // cbETH - "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", // stETH - "0xae78736Cd615f374D3085123A210448E74Fc6393", // rETH - "0xA35b1B31Ce002FBF2058D22F30f95D405200A15b", // ETHx - "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", // ankrETH - "0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3", // OETH - "0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38", // osETH - "0xf951E335afb289353dc249e82926178EaC7DEd78", // swETH - "0xa2E3356610840701BDf5611a53974510Ae27E2e1", // wBETH - "0xac3E018457B222d93114458476f3E3416Abbe38F", // sfrxETH - "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", // mETH -}; - -const char lr_tickers[LR_STRATEGIES_COUNT][MAX_TICKER_LEN] = {"cbETH", - "stETH", - "rETH", - "ETHx", - "ankrETH", - "OETH", - "osETH", - "swETH", - "wBETH", - "sfrxETH", - "mETH"}; - -const char lr_kiln_operator_address[ADDRESS_STR_LEN] = "0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662"; - // Array of all supported selectors. const uint32_t KILN_SELECTORS[NUM_SELECTORS] = { - // V1 - KILN_V1_DEPOSIT_SELECTOR, - KILN_V1_WITHDRAW_SELECTOR, - KILN_V1_WITHDRAW_EL_SELECTOR, - KILN_V1_WITHDRAW_CL_SELECTOR, - KILN_V1_BATCH_WITHDRAW_SELECTOR, - KILN_V1_BATCH_WITHDRAW_EL_SELECTOR, - KILN_V1_BATCH_WITHDRAW_CL_SELECTOR, - KILN_V1_REQUEST_EXIT_SELECTOR, // V2 KILN_V2_STAKE_SELECTOR, KILN_V2_REQUEST_EXIT_SELECTOR, KILN_V2_MULTICLAIM_SELECTOR, KILN_V2_CLAIM_SELECTOR, - // EigenLayer - KILN_LR_DEPOSIT_INTO_STRATEGY_SELECTOR, - KILN_LR_QUEUE_WITHDRAWALS_SELECTOR, - KILN_LR_COMPLETE_QUEUED_WITHDRAWALS_SELECTOR, - KILN_LR_DELEGATE_TO_SELECTOR, - KILN_LR_UNDELEGATE_SELECTOR, }; diff --git a/src/handle_finalize.c b/src/handle_finalize.c index 41c595d..8e84da6 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -21,18 +21,6 @@ void handle_finalize(ethPluginFinalize_t *msg) { msg->uiType = ETH_UI_TYPE_GENERIC; switch (context->selectorIndex) { - case KILN_V1_DEPOSIT: - case KILN_V1_WITHDRAW: - case KILN_V1_WITHDRAW_EL: - case KILN_V1_WITHDRAW_CL: - case KILN_V1_BATCH_WITHDRAW: - case KILN_V1_BATCH_WITHDRAW_EL: - case KILN_V1_BATCH_WITHDRAW_CL: - case KILN_V1_REQUEST_EXIT: - msg->numScreens = 1; - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case KILN_V2_STAKE: case KILN_V2_REQUEST_EXIT: case KILN_V2_MULTICLAIM: @@ -41,43 +29,6 @@ void handle_finalize(ethPluginFinalize_t *msg) { msg->result = ETH_PLUGIN_RESULT_OK; break; - case KILN_LR_DEPOSIT_INTO_STRATEGY: - msg->numScreens = 3; - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case KILN_LR_QUEUE_WITHDRAWALS: { - { - lr_queue_withdrawals_t *params = &context->param_data.lr_queue_withdrawals; - // function screen + withdrawer - msg->numScreens = 2; - // one screen per withdrawal - msg->numScreens += params->strategies_count; - PRINTF("NUMBER OF STRATEGIES TO DISPLAY: %d\n", params->strategies_count); - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - } - case KILN_LR_COMPLETE_QUEUED_WITHDRAWALS: { - { - lr_complete_queued_withdrawals_t *params = - &context->param_data.lr_complete_queued_withdrawals; - // function screen + withdrawer - msg->numScreens = 2; - // one screen per strategy - msg->numScreens += params->strategies_count; - PRINTF("NUMBER OF STRATEGIES TO DISPLAY: %d\n", params->strategies_count); - } - msg->result = ETH_PLUGIN_RESULT_OK; - break; - } - case KILN_LR_DELEGATE_TO: - msg->numScreens = 2; - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case KILN_LR_UNDELEGATE: - msg->numScreens = 1; - msg->result = ETH_PLUGIN_RESULT_OK; - break; default: PRINTF("Selector Index not supported: %d\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/handle_init_contract.c b/src/handle_init_contract.c index 1ac485b..1f92860 100644 --- a/src/handle_init_contract.c +++ b/src/handle_init_contract.c @@ -50,37 +50,12 @@ void handle_init_contract(ethPluginInitContract_t *msg) { msg->result = ETH_PLUGIN_RESULT_OK; switch (context->selectorIndex) { - case KILN_V1_DEPOSIT: - case KILN_V1_WITHDRAW: - case KILN_V1_WITHDRAW_EL: - case KILN_V1_WITHDRAW_CL: - case KILN_V1_BATCH_WITHDRAW: - case KILN_V1_BATCH_WITHDRAW_EL: - case KILN_V1_BATCH_WITHDRAW_CL: - case KILN_V1_REQUEST_EXIT: - break; - case KILN_V2_STAKE: case KILN_V2_REQUEST_EXIT: case KILN_V2_MULTICLAIM: case KILN_V2_CLAIM: break; - case KILN_LR_DEPOSIT_INTO_STRATEGY: - context->next_param = LR_DEPOSIT_INTO_STRATEGY_STRATEGY; - break; - case KILN_LR_QUEUE_WITHDRAWALS: - context->next_param = LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_OFFSET; - break; - case KILN_LR_COMPLETE_QUEUED_WITHDRAWALS: - context->next_param = LRCQW_WITHDRAWALS_OFFSET; - break; - case KILN_LR_DELEGATE_TO: - context->next_param = LR_DELEGATE_TO_OPERATOR; - break; - case KILN_LR_UNDELEGATE: - break; - default: PRINTF("Missing selectorIndex: %d\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/handle_query_contract_id.c b/src/handle_query_contract_id.c index b03e6ad..21acb74 100644 --- a/src/handle_query_contract_id.c +++ b/src/handle_query_contract_id.c @@ -23,17 +23,6 @@ void handle_query_contract_id(ethQueryContractID_t *msg) { msg->result = ETH_PLUGIN_RESULT_OK; switch (context->selectorIndex) { - case KILN_V1_DEPOSIT: - case KILN_V1_WITHDRAW: - case KILN_V1_WITHDRAW_EL: - case KILN_V1_WITHDRAW_CL: - case KILN_V1_BATCH_WITHDRAW: - case KILN_V1_BATCH_WITHDRAW_EL: - case KILN_V1_BATCH_WITHDRAW_CL: - case KILN_V1_REQUEST_EXIT: - strlcpy(msg->version, "Native Staking", msg->versionLength); - break; - case KILN_V2_STAKE: case KILN_V2_REQUEST_EXIT: case KILN_V2_MULTICLAIM: @@ -41,14 +30,6 @@ void handle_query_contract_id(ethQueryContractID_t *msg) { strlcpy(msg->version, "Pooled Staking", msg->versionLength); break; - case KILN_LR_DEPOSIT_INTO_STRATEGY: - case KILN_LR_QUEUE_WITHDRAWALS: - case KILN_LR_COMPLETE_QUEUED_WITHDRAWALS: - case KILN_LR_DELEGATE_TO: - case KILN_LR_UNDELEGATE: - strlcpy(msg->version, "EigenLayer", msg->versionLength); - break; - default: PRINTF("Selector Index not supported: %d\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/kiln_plugin.h b/src/kiln_plugin.h index b53802b..07385c3 100644 --- a/src/kiln_plugin.h +++ b/src/kiln_plugin.h @@ -23,249 +23,36 @@ #define PLUGIN_NAME "Coinbase" -// ADDRESS_STR_LEN is 0x + addr + \0 -#define ADDRESS_STR_LEN 43 - // **************************************************************************** // * SUPPORTED SELECTORS // **************************************************************************** // Available selectors: // -// V1 selectors -// --- 0. deposit() -// --- 1. withdraw(validator_pubkey) -// --- 2. withdrawEL(validator_pubkey) -// --- 3. withdrawCL(validator_pubkey) -// --- 4. batchWithdraw(validator_pubkeys) -// --- 5. batchWithdrawEL(validator_pubkeys) -// --- 6. batchWithdrawCL(validator_pubkeys) -// --- 7. requestValidatorsExit(validator_pubkeys) -// // V2 selectors -// --- 8. stake() -// --- 9. requestExit(shares_amount) -// --- 10. multiClaim(exit_queues, ticket_ids, cask_ids) -// --- 11. claim(uint256[],uint32[],uint16) -// -// LR selectors -// --- 12. depositIntoStrategy(address,address,uint256) -// --- 13. queueWithdrawals((address[],uint256[],address)[]) -// --- 14. -// completeQueuedWithdrawal((address,address,address,uint256,uint32,address[],uint256[]),address[],uint256,bool) -// --- 15. delegateTo(address,(bytes,uint256),bytes32) -// --- 16. undelegate(address) +// --- 1. stake() +// --- 2. requestExit(shares_amount) +// --- 3. multiClaim(exit_queues, ticket_ids, cask_ids) +// --- 4. claim(uint256[],uint32[],uint16) // -#define NUM_SELECTORS 17 +#define NUM_SELECTORS 4 extern const uint32_t KILN_SELECTORS[NUM_SELECTORS]; // Selectors available (see mapping above). typedef enum { - KILN_V1_DEPOSIT = 0, - KILN_V1_WITHDRAW, - KILN_V1_WITHDRAW_EL, - KILN_V1_WITHDRAW_CL, - KILN_V1_BATCH_WITHDRAW, - KILN_V1_BATCH_WITHDRAW_EL, - KILN_V1_BATCH_WITHDRAW_CL, - KILN_V1_REQUEST_EXIT, - KILN_V2_STAKE, + KILN_V2_STAKE = 0, KILN_V2_REQUEST_EXIT, KILN_V2_MULTICLAIM, KILN_V2_CLAIM, - KILN_LR_DEPOSIT_INTO_STRATEGY, - KILN_LR_QUEUE_WITHDRAWALS, - KILN_LR_COMPLETE_QUEUED_WITHDRAWALS, - KILN_LR_DELEGATE_TO, - KILN_LR_UNDELEGATE, } selector_t; -// **************************************************************************** -// * EIGENLAYER -// **************************************************************************** - -// globals - -#define LR_STRATEGIES_COUNT 11 -#define UNKNOWN_LR_ERC20 15 // must be > LR_STRATEGIES_COUNT < 16 -#define UNKNOWN_LR_STRATEGY 15 // must be > LR_STRATEGIES_COUNT < 16 -#define MAX_DISPLAYABLE_LR_STRATEGIES_COUNT 32 // must be > LR_STRATEGIES_COUNT -#define ERC20_DECIMALS 18 -#define PARAM_OFFSET 32 - -extern const char lr_strategy_addresses[LR_STRATEGIES_COUNT][ADDRESS_STR_LEN]; -extern const char lr_erc20_addresses[LR_STRATEGIES_COUNT][ADDRESS_STR_LEN]; -extern const char lr_tickers[LR_STRATEGIES_COUNT][MAX_TICKER_LEN]; -extern const char lr_kiln_operator_address[ADDRESS_STR_LEN]; - -// **************************************************************************** - -// Parameters and state machines for EigenLayer parsing - -typedef enum { - LR_DEPOSIT_INTO_STRATEGY_UNEXPECTED_PARAMETER = 0, - LR_DEPOSIT_INTO_STRATEGY_STRATEGY, - LR_DEPOSIT_INTO_STRATEGY_TOKEN, - LR_DEPOSIT_INTO_STRATEGY_AMOUNT, -} lr_deposit_into_strategy_parameters; - -typedef enum { - LR_QUEUE_WITHDRAWALS_UNEXPECTED_PARAMETER = 0, - LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_OFFSET, - LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_LENGTH, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRUCT_OFFSET, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_OFFSET, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_OFFSET, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_WITHDRAWER, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_LENGTH, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__STRATEGIES_ITEM, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_LENGTH, - LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__SHARES_ITEM, -} lr_queue_withdrawals_parameters; - -typedef enum { - LRCQW_UNEXPECTED_PARAMETER = 0, - LRCQW_WITHDRAWALS_OFFSET, - LRCQW_TOKENS_OFFSET, - LRCQW_MIDDLEWARE_TIMES_INDEXES_OFFSET, - LRCQW_RECEIVE_AS_TOKENS_OFFSET, - - LRCQW_WITHDRAWALS_LENGTH, - LRCQW_WITHDRAWALS__OFFSET_ITEMS, - - LRCQW_WITHDRAWALS__ITEM__STAKER, - LRCQW_WITHDRAWALS__ITEM__DELEGATED_TO, - LRCQW_WITHDRAWALS__ITEM__WITHDRAWER, - LRCQW_WITHDRAWALS__ITEM__NONCE, - LRCQW_WITHDRAWALS__ITEM__START_BLOCK, - LRCQW_WITHDRAWALS__ITEM__STRATEGIES_OFFSET, - LRCQW_WITHDRAWALS__ITEM__SHARES_OFFSET, - LRCQW_WITHDRAWALS__ITEM__STRATEGIES_LENGTH, - LRCQW_WITHDRAWALS__ITEM__STRATEGIES__ITEMS, - LRCQW_WITHDRAWALS__ITEM__SHARES_LENGTH, - LRCQW_WITHDRAWALS__ITEM__SHARES__ITEMS, - - LRCQW_TOKENS_LENGTH, - LRCQW_TOKENS__OFFSET_ITEMS, - - LRCQW_TOKENS__ITEM__LENGTH, - LRCQW_TOKENS__ITEM__ITEMS, - - LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH, - LRCQW_MIDDLEWARE_TIMES_INDEXES__ITEMS, - - LRCQW_RECEIVE_AS_TOKENS_LENGTH, - LRCQW_RECEIVE_AS_TOKENS__ITEMS, -} lr_complete_queued_withdrawals_parameters; - -typedef enum { - LR_DELEGATE_TO_UNEXPECTED_PARAMETER = 0, - LR_DELEGATE_TO_OPERATOR, - LR_DELEGATE_TO_SIGNATURE_OFFSET, - LR_DELEGATE_TO_APPROVER_SALT, - LR_DELEGATE_TO_SIGNATURE_SIG_OFFSET, - LR_DELEGATE_TO_SIGNATURE_EXPIRY, - LR_DELEGATE_TO_SIGNATURE_SIG_LENGTH, - LR_DELEGATE_TO_SIGNATURE_SIG_ITEMS, -} lr_delegate_to_parameters; - -// **************************************************************************** - -// Parsing structures - -typedef struct { - int strategy_to_display; - int erc20_to_display; - uint8_t erc20_amount_to_display[INT256_LENGTH]; -} lr_deposit_t; - -typedef struct { - // -- utils - uint16_t current_item_count; - // -- display - char operator_address[ADDRESS_STR_LEN]; - bool is_kiln; -} lr_delegate_to_t; - -typedef struct { - uint8_t prev_checksum[CX_KECCAK_256_SIZE]; - uint32_t new_offset; -} checksum_offset_params_t; - -typedef struct { - // -- utils - uint16_t queued_withdrawals_count; - uint16_t current_item_count; - uint16_t shares_array_offset; - uint8_t qwithdrawals_offsets_checksum_preview[CX_KECCAK_256_SIZE]; - uint8_t qwithdrawals_offsets_checksum_value[CX_KECCAK_256_SIZE]; - - // -- display - char withdrawer[ADDRESS_STR_LEN]; - uint8_t strategies_count; - // list of strategies indexes **INCREMENTED BY 1** to display in the UI - // 0 is reserved for end of array - // UNKNOWN_LR_STRATEGY is used to display the "unknown" strategy - // assumptions: - // (i) in practice, we should not encounter more than - // LR_STRATEGIES_COUNT +~ a few potential unsupported - // strategies in the plugin. So * 3 should be a good enough buffer. - // (ii) in practice there should not be more than (2 ** 8) - 2 known strategies - uint8_t strategies[MAX_DISPLAYABLE_LR_STRATEGIES_COUNT]; -} lr_queue_withdrawals_t; - -// must be size of MAX_DISPLAYABLE_LR_STRATEGIES_COUNT -typedef struct { - uint32_t bits; -} bitfield; - -typedef struct { - // -- utils - uint16_t parent_item_count; - uint16_t current_item_count; - // -- total values - uint16_t relegations_count; - uint8_t withdrawals_count; - uint16_t strategies_count; - uint16_t tokens_count; - // -- offset verification - uint16_t tokens_offset; - uint16_t middlewareTimesIndexes_offset; - uint16_t receiveAsTokens_offset; - uint16_t cached_offset; - uint8_t withdrawals_offsets_checksum_preview[CX_KECCAK_256_SIZE]; - uint8_t withdrawals_offsets_checksum_value[CX_KECCAK_256_SIZE]; - - // -- display - uint8_t withdrawer[ADDRESS_LENGTH]; - // list of strategies indexes **INCREMENTED BY 1** to display in the UI - // UNKNOWN_LR_STRATEGY is used to display the "unknown" strategy - // assumptions: - // (i) in practice, we should not encounter more than - // LR_STRATEGIES_COUNT +~ a few potential unsupported - // strategies in the plugin. So * 3 should be a good enough buffer. - // (ii) in practice there should not be more than (2 ** 4) - 2 known strategies - // (iii) the first 4 bytes are the withdrawal index, the next 4 bytes are the strategy index - uint8_t strategies[MAX_DISPLAYABLE_LR_STRATEGIES_COUNT]; - // follows the strategies array indexes - bitfield is_redelegated; -} lr_complete_queued_withdrawals_t; - // **************************************************************************** // * SHARED PLUGIN CONTEXT MEMORY // **************************************************************************** -// [100] receiveAsTokens_offset typedef struct context_t { uint8_t next_param; - union { - lr_deposit_t lr_deposit; - lr_delegate_to_t lr_delegate_to; - lr_queue_withdrawals_t lr_queue_withdrawals; - lr_complete_queued_withdrawals_t lr_complete_queued_withdrawals; - } param_data; - selector_t selectorIndex; } context_t; diff --git a/src/provide_parameter/eigenlayer.c b/src/provide_parameter/eigenlayer.c deleted file mode 100644 index 3ecc56a..0000000 --- a/src/provide_parameter/eigenlayer.c +++ /dev/null @@ -1,1147 +0,0 @@ -/******************************************************************************* - * - * ██╗ ██╗██╗██╗ ███╗ ██╗ - * ██║ ██╔╝██║██║ ████╗ ██║ - * █████╔╝ ██║██║ ██╔██╗ ██║ - * ██╔═██╗ ██║██║ ██║╚██╗██║ - * ██║ ██╗██║███████╗██║ ╚████║ - * ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ - * - * Kiln Ethereum Ledger App - * (c) 2022-2024 Kiln - * - * contact@kiln.fi - ********************************************************************************/ - -#include "provide_parameter.h" - -/** - * @brief Set a bit in a bitfield - * - * @param bf: bitfield to update - * @param index: index of the bit to update - * @param value: value to set the bit to (0 or 1) - * - */ -void set_bit(bitfield *bf, int index, bool value) { - if (index < 0 || index >= MAX_DISPLAYABLE_LR_STRATEGIES_COUNT) { - return; // Index out of range - } - if (value) { - bf->bits |= (1U << index); - } else { - bf->bits &= ~(1U << index); - } -} - -/** - * @brief Compare two addresses - * - * @param a: first address - * @param b: second address - * - * @return true if the addresses are the same - */ -bool compare_addresses(const char a[ADDRESS_STR_LEN], const char b[ADDRESS_STR_LEN]) { - for (size_t i = 0; i < ADDRESS_STR_LEN; i += 1) { - if (tolower((unsigned char) a[i]) != tolower((unsigned char) b[i])) { - return false; - } - } - return true; -} - -/** - * @brief If address is a known erc20, update lr display context with its name - * otherwise set it to unkwown (UNKNOWN_LR_ERC20) - * - * @param address: address to compare - * - * @returns index of the erc20 in the context or UNKNOWN_LR_ERC20 if not found - */ -uint8_t find_lr_known_erc20(const char address[ADDRESS_STR_LEN]) { - for (size_t i = 0; i < LR_STRATEGIES_COUNT; i++) { - if (compare_addresses(address, lr_erc20_addresses[i])) { - return i; - } - } - // if unknown erc20, indicate it - return UNKNOWN_LR_ERC20; -} - -/** - * @brief If address is a known strategy, update lr display context with its name - * otherwise set it to unkwown (UNKNOWN_LR_STRATEGY) - * - * @param address: address to compare - * - * @returns index of the strategy in the context or UNKNOWN_LR_STRATEGY if not found - */ -uint8_t find_lr_known_strategy(const char address[ADDRESS_STR_LEN]) { - for (size_t i = 0; i < LR_STRATEGIES_COUNT; i++) { - if (compare_addresses(address, lr_strategy_addresses[i])) { - return i; - } - } - // if unknown strategy, indicate it - return UNKNOWN_LR_STRATEGY; -} - -/** - * @brief Handle the parameters for the depositIntoStrategy(strategy,erc20,amount) - * selector - * - * @param msg: message containing the parameter - * @param context: context to update - * - */ -void handle_lr_deposit_into_strategy(ethPluginProvideParameter_t *msg, context_t *context) { - // ************************************************************************** - // FUNCTION TO PARSE - // ************************************************************************** - // - // function depositIntoStrategy( - // address strategy, - // address erc20, - // uint256 amount - // ) external - // - // ************************************************************************** - // example - // [ 0] selector - // [ 4] strategy - // [ 36] erc20 - // [ 68] amount - - uint8_t buffer[ADDRESS_LENGTH]; - char address_buffer[ADDRESS_STR_LEN]; - - switch (context->next_param) { - case LR_DEPOSIT_INTO_STRATEGY_STRATEGY: - copy_address(buffer, msg->parameter, sizeof(buffer)); - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - context->param_data.lr_deposit.strategy_to_display = - find_lr_known_strategy(address_buffer); - - context->next_param = LR_DEPOSIT_INTO_STRATEGY_TOKEN; - break; - case LR_DEPOSIT_INTO_STRATEGY_TOKEN: - copy_address(buffer, msg->parameter, sizeof(buffer)); - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - context->param_data.lr_deposit.erc20_to_display = find_lr_known_erc20(address_buffer); - - context->next_param = LR_DEPOSIT_INTO_STRATEGY_AMOUNT; - break; - case LR_DEPOSIT_INTO_STRATEGY_AMOUNT: - copy_parameter(context->param_data.lr_deposit.erc20_amount_to_display, - msg->parameter, - sizeof(context->param_data.lr_deposit.erc20_amount_to_display)); - context->next_param = LR_DEPOSIT_INTO_STRATEGY_UNEXPECTED_PARAMETER; - break; - default: - PRINTF("Param not supported: %d\n", context->next_param); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - msg->result = ETH_PLUGIN_RESULT_OK; -} - -/** - * @brief Handle the parameters for the queueWithdrawals(queuedWithdrawals[]) selector - * - * @param msg: message containing the parameter - * @param context: context to update - * - */ -void handle_lr_queue_withdrawals(ethPluginProvideParameter_t *msg, context_t *context) { - // ************************************************************************** - // FUNCTION TO PARSE - // ************************************************************************** - // - // struct QueuedWithdrawalParams { - // address[] strategies; - // uint256[] shares; - // address withdrawer; - // } - // - // function queueWithdrawals( - // QueuedWithdrawalParams[] calldata queuedWithdrawalParams - // ) external - // - // ************************************************************************** - // example for 2 queue withdrawals with 2 strategies each (2x2 dimension) - // [ 0] selector - // [ 4] QueuedWithdrawalParams_offset - // [ 36] QueuedWithdrawalParams_length - // [ 68] QueuedWithdrawalParams_0_offset - // [100] QueuedWithdrawalParams_1_offset - // [132] QueuedWithdrawalParams_0 - // [132] strategies_offset - // [164] shares_offset - // [196] withdrawer - // [228] strategies_length - // [260] strategies_0 - // [292] strategies_1 - // [324] shares_length - // [356] shares_0 - // [388] shares_1 - // [388] QueuedWithdrawalParams_1 - // [388] strategies_offset - // [420] shares_offset - // [452] withdrawer - // [484] strategies_length - // [516] strategies_0 - // [548] strategies_1 - // [580] shares_length - // [612] shares_0 - // [644] shares_1 - - lr_queue_withdrawals_t *params = &context->param_data.lr_queue_withdrawals; - - switch (context->next_param) { - // ******************************************************************** - // QUEUEWITHDRAWALPARAMS[] - // ******************************************************************** - case LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - if (offset != PARAM_OFFSET) { - // valid offset should only skip this offset - PRINTF("Unexpected parameter offset\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - context->next_param = LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_LENGTH; - break; - } - case LR_QUEUE_WITHDRAWALS_QWITHDRAWALS_LENGTH: - U2BE_from_parameter(msg->parameter, ¶ms->queued_withdrawals_count); - params->current_item_count = params->queued_withdrawals_count; - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRUCT_OFFSET; - break; - - // ******************************************************************** - // QUEUEWITHDRAWALPARAMS STRUCT - // ******************************************************************** - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRUCT_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - - // We have limited size on the context and can't store all the offset values - // of the queuedWithdrawal structs. So we compute their checksum and expect to - // be able to recompute it using the offset of the parsed structures later. - // _preview will be equal to _value at the end of the parsing if everything is fine - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&h_params.prev_checksum, - &(params->qwithdrawals_offsets_checksum_preview), - sizeof(h_params.prev_checksum)); - - // we hash the previous checksum with the offset of the beginning of the structure. - // the offset we parse is actually after SELECTOR + the 2 above param so we add them to - // it. - h_params.new_offset = offset + SELECTOR_SIZE + PARAM_OFFSET * 2; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->qwithdrawals_offsets_checksum_preview) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - // we skip all the queuewithdrawal structs offsets - PRINTF("CURRENT ITEM COUNT: %d\n", params->current_item_count); - if (params->current_item_count > 0) { - params->current_item_count -= 1; - } - - if (params->current_item_count == 0) { - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_OFFSET; - } - break; - } - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - // here we are at the beginning of the queuedWithdrawal struct, so we want - // to compute the offset of the struct we're at for the queuedWithdrawal struct array - // offsets checksum - - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&h_params.prev_checksum, - &(params->qwithdrawals_offsets_checksum_value), - sizeof(h_params.prev_checksum)); - h_params.new_offset = msg->parameterOffset; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->qwithdrawals_offsets_checksum_value) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - if (params->queued_withdrawals_count == 1) { - // if we are on the last item of the array of queuedWithdrawal struct - // we can check the checksum - PRINTF("CHECKSUMS %.*H %.*H\n", - sizeof(params->qwithdrawals_offsets_checksum_preview), - params->qwithdrawals_offsets_checksum_preview, - sizeof(params->qwithdrawals_offsets_checksum_value), - params->qwithdrawals_offsets_checksum_value); - if (memcmp(params->qwithdrawals_offsets_checksum_preview, - params->qwithdrawals_offsets_checksum_value, - sizeof(params->qwithdrawals_offsets_checksum_preview)) != 0) { - PRINTF("Checksums do not match\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - if (offset != PARAM_OFFSET * 3) { - // valid offset should only skip this + shares_offset + withdrawer - PRINTF("Unexpected parameter offset %d != %d\n", offset, PARAM_OFFSET * 3); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_OFFSET; - break; - } - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_OFFSET: - // we can only check this value once we know strategies array length - U2BE_from_parameter(msg->parameter, ¶ms->shares_array_offset); - - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_WITHDRAWER; - break; - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_WITHDRAWER: { - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - char address_buffer[ADDRESS_STR_LEN]; - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - // we only support same withdrawer accross all the withdrawals - if (params->withdrawer[0] == '\0') { - memcpy(params->withdrawer, address_buffer, sizeof(params->withdrawer)); - } else if (strcmp(params->withdrawer, address_buffer) != 0) { - PRINTF("Unexpected withdrawer address, %s != expected %s\n", - msg->parameter, - params->withdrawer); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_LENGTH; - break; - } - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_LENGTH: { - // get number of item to parse - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - PRINTF("STRATEGIES LENGTH: %d\n", params->current_item_count); - - { // check that the shares array offset is correct - // -- 1. we skip shares_offset + withdrawer + strategies_length - uint16_t should_be = PARAM_OFFSET * 3 - // -- 2. we skip the strategies array length - + PARAM_OFFSET + PARAM_OFFSET * params->current_item_count; - ; - if (params->shares_array_offset != should_be) { - PRINTF("Unexpected parameter offset %d != %d\n", - params->shares_array_offset, - should_be); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - if (params->current_item_count == 0) { - // if no strategies we go to the shares array - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_LENGTH; - } else { - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__STRATEGIES_ITEM; - } - break; - } - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__STRATEGIES_ITEM: { - // get strategy we need to display - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - char address_buffer[ADDRESS_STR_LEN]; - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - - uint8_t strategy_index = find_lr_known_strategy(address_buffer); - params->strategies[params->strategies_count] = - (strategy_index != UNKNOWN_LR_STRATEGY) ? strategy_index : UNKNOWN_LR_STRATEGY; - - PRINTF("STRATEGY #: %d STRATEGY: %d\n", params->strategies_count, strategy_index); - } - - // we just processed one strategy item - params->strategies_count += 1; - params->current_item_count -= 1; - if (params->current_item_count == 0) { - // when we arrive at the end of the strategies array we go to the shares array - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_LENGTH; - } - break; - } - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_SHARES_LENGTH: - // get number of items to parse - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__SHARES_ITEM; - break; - case LR_QUEUE_WITHDRAWALS__QWITHDRAWALS__SHARES_ITEM: - // we skip parsing shares item as they are not needed for clearsigning - // as not having ETH / ERC20 amount to display would confuse users - if (params->current_item_count > 0) { - params->current_item_count -= 1; - } - if (params->current_item_count == 0) { - // here we arrive at the end of the queuedWithdrawal array element - - // check if there are other queuedWithdrawals to parse - params->queued_withdrawals_count -= 1; - if (params->queued_withdrawals_count == 0) { - // if not we finished parsing - context->next_param = LR_QUEUE_WITHDRAWALS_UNEXPECTED_PARAMETER; - } else { - // if there are other queuedWithdrawals we go back to parsing the - // next queueWithdrawal struct - context->next_param = LR_QUEUE_WITHDRAWALS__QWITHDRAWALS_STRATEGIES_OFFSET; - } - } - break; - - default: - PRINTF("Param not supported: %d\n", context->next_param); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - msg->result = ETH_PLUGIN_RESULT_OK; -} - -/** - * @brief Handle the parameters for the completeQueuedWithdrawals(Withdrawal[] withdrawals, - * address[][] tokens, uint256[] middlewareTimesIndexes, bool[] receiveAsTokens) selector - * @param msg: message containing the parameter - * @param context: context to update - * - */ -void handle_lr_complete_queued_withdrawals(ethPluginProvideParameter_t *msg, context_t *context) { - // ************************************************************************** - // FUNCTION TO PARSE - // ************************************************************************** - // - // struct Withdrawal { - // address staker; - // address delegatedTo; - // address withdrawer; - // uint256 nonce; - // uint32 startBlock; - // address[] strategies; - // uint256[] shares; - // } - // - // function completeQueuedWithdrawals( - // Withdrawal[] calldata withdrawals, - // address[][] calldata tokens, - // uint256[] calldata middlewareTimesIndexes, - // bool[] calldata receiveAsTokens - // ) external - // - // ************************************************************************** - // example for 2 complete queued withdrawals with 2 tokens each - // [ 0] selector - // [ 4] withdrawals_offset - // [ 36] tokens_offset - // [ 68] middlewareTimesIndexes_offset - // [100] receiveAsTokens_offset - // [132] withdrawals_length - // [164] withdrawals_0_offset - // [196] withdrawals_1_offset - // [228] withdrawals_0 - // [228] staker - // [260] delegatedTo - // [292] withdrawer - // [324] nonce - // [356] startBlock - // [388] strategies_offset - // [420] shares_offset - // [452] strategies_length - // [484] strategies_0 - // [516] strategies_1 - // [548] shares_length - // [580] shares_0 - // [612] shares_1 - // [644] withdrawals_1 - // [644] staker - // [676] delegatedTo - // [708] withdrawer - // [740] nonce - // [772] startBlock - // [804] strategies_offset - // [836] shares_offset - // [868] strategies_length - // [900] strategies_0 - // [932] strategies_1 - // [964] shares_length - // [996] shares_0 - // [1028] shares_1 - // [1060] tokens_length - // [1092] tokens_0_offset - // [1124] tokens_1_offset - // [1156] tokens_0 - // [1156] tokens_0_length - // [1188] tokens_0_0 - // [1220] tokens_0_1 - // [1252] tokens_1 - // [1252] tokens_1_length - // [1284] tokens_1_0 - // [1316] tokens_1_1 - // [1348] middlewareTimesIndexes_length - // [1380] middlewareTimesIndexes_0 - // [1412] middlewareTimesIndexes_1 - // [1444] receiveAsTokens_length - // [1476] receiveAsTokens_0 - // [1508] receiveAsTokens_1 - lr_complete_queued_withdrawals_t *params = &context->param_data.lr_complete_queued_withdrawals; - - switch (context->next_param) { - // ******************************************************************** - // FUNCTION PARAMETERS PARSING - // ******************************************************************** - case LRCQW_WITHDRAWALS_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - if (offset != PARAM_OFFSET * 4) { - // valid offset should only skip this offset + tokens + middlewareTimesIndexes + - // receiveAsTokens offsets - PRINTF("Unexpected parameter offset %d != %d\n", offset, PARAM_OFFSET); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - context->next_param = LRCQW_TOKENS_OFFSET; - break; - } - case LRCQW_TOKENS_OFFSET: - U2BE_from_parameter(msg->parameter, &(params->tokens_offset)); - context->next_param = LRCQW_MIDDLEWARE_TIMES_INDEXES_OFFSET; - break; - case LRCQW_MIDDLEWARE_TIMES_INDEXES_OFFSET: - U2BE_from_parameter(msg->parameter, &(params->middlewareTimesIndexes_offset)); - context->next_param = LRCQW_RECEIVE_AS_TOKENS_OFFSET; - break; - case LRCQW_RECEIVE_AS_TOKENS_OFFSET: - U2BE_from_parameter(msg->parameter, &(params->receiveAsTokens_offset)); - context->next_param = LRCQW_WITHDRAWALS_LENGTH; - break; - - // ******************************************************************** - // WITHDRAWAL[] PARSING - // ******************************************************************** - case LRCQW_WITHDRAWALS_LENGTH: - - U2BE_from_parameter(msg->parameter, ¶ms->parent_item_count); - params->current_item_count = params->parent_item_count; - PRINTF("LRCQW_WITHDRAWALS_LENGTH: %d\n", params->parent_item_count); - - if (params->parent_item_count == 0) { - context->next_param = LRCQW_TOKENS_LENGTH; - } else { - context->next_param = LRCQW_WITHDRAWALS__OFFSET_ITEMS; - } - break; - case LRCQW_WITHDRAWALS__OFFSET_ITEMS: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - - // We have limited size on the context and can't store all the offset values - // of the Withdrawal structs. So we compute their checksum and expect to - // be able to recompute it using the offset of the parsed structures later. - // _preview will be equal to _value at the end of the parsing if everything is fine - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&h_params.prev_checksum, - &(params->withdrawals_offsets_checksum_preview), - sizeof(h_params.prev_checksum)); - // we hash the previous checksum with the offset of the beginning of the structure. - // the offset we parse is actually after SELECTOR + the 5 above param so we add them to - // it. - h_params.new_offset = offset + SELECTOR_SIZE + PARAM_OFFSET * 5; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->withdrawals_offsets_checksum_preview) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - params->current_item_count -= 1; - if (params->current_item_count == 0) { - context->next_param = LRCQW_WITHDRAWALS__ITEM__STAKER; - } - break; - } - - // ******************************************************************** - // WITHDRAWAL STRUCT PARSING - // ******************************************************************** - case LRCQW_WITHDRAWALS__ITEM__STAKER: { - // here we are at the beginning of the queuedWithdrawal struct, so we want - // to compute the offset of the struct we're at for the queuedWithdrawal struct array - // offsets checksum - - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&(h_params.prev_checksum), - &(params->withdrawals_offsets_checksum_value), - sizeof(h_params.prev_checksum)); - h_params.new_offset = msg->parameterOffset; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->withdrawals_offsets_checksum_value) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - if (params->parent_item_count == 1) { - // if we are on the last item of the array of withdrawal struct - // we can check the checksum - PRINTF("CHECKSUMS %.*H %.*H\n", - sizeof(params->withdrawals_offsets_checksum_preview), - params->withdrawals_offsets_checksum_preview, - sizeof(params->withdrawals_offsets_checksum_value), - params->withdrawals_offsets_checksum_value); - if (memcmp(params->withdrawals_offsets_checksum_preview, - params->withdrawals_offsets_checksum_value, - sizeof(params->withdrawals_offsets_checksum_preview)) != 0) { - PRINTF("Checksums do not match\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - context->next_param = LRCQW_WITHDRAWALS__ITEM__DELEGATED_TO; - break; - } - case LRCQW_WITHDRAWALS__ITEM__DELEGATED_TO: - context->next_param = LRCQW_WITHDRAWALS__ITEM__WITHDRAWER; - break; - case LRCQW_WITHDRAWALS__ITEM__WITHDRAWER: { - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - // we only support same withdrawer accross all the withdrawals - if (allzeroes(params->withdrawer, sizeof(params->withdrawer)) == 1) { - memcpy(params->withdrawer, buffer, sizeof(params->withdrawer)); - } else if (strcmp((const char *) params->withdrawer, (const char *) buffer) != 0) { - PRINTF("Unexpected withdrawer address, %s != expected %s\n", - msg->parameter, - params->withdrawer); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - context->next_param = LRCQW_WITHDRAWALS__ITEM__NONCE; - break; - } - case LRCQW_WITHDRAWALS__ITEM__NONCE: - context->next_param = LRCQW_WITHDRAWALS__ITEM__START_BLOCK; - break; - case LRCQW_WITHDRAWALS__ITEM__START_BLOCK: - context->next_param = LRCQW_WITHDRAWALS__ITEM__STRATEGIES_OFFSET; - break; - case LRCQW_WITHDRAWALS__ITEM__STRATEGIES_OFFSET: { - { - uint16_t offset; - - U2BE_from_parameter(msg->parameter, &offset); - if (offset != PARAM_OFFSET * 7) { - // valid offset should only skip the above elements in the structure + this one - // + shares offset - PRINTF("Unexpected parameter offset %d != %d\n", offset, PARAM_OFFSET * 7); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - context->next_param = LRCQW_WITHDRAWALS__ITEM__SHARES_OFFSET; - break; - } - case LRCQW_WITHDRAWALS__ITEM__SHARES_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - - // save offset to verify it on array start - // offset starts at the beginning of the structure (current scope) - params->cached_offset = offset + (msg->parameterOffset - PARAM_OFFSET * 6); - } - context->next_param = LRCQW_WITHDRAWALS__ITEM__STRATEGIES_LENGTH; - break; - case LRCQW_WITHDRAWALS__ITEM__STRATEGIES_LENGTH: - - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - PRINTF("LRCQW_WITHDRAWALS__ITEM__STRATEGIES_LENGTH: %d\n", params->current_item_count); - - if (params->current_item_count == 0) { - context->next_param = LRCQW_WITHDRAWALS__ITEM__SHARES_LENGTH; - } else { - context->next_param = LRCQW_WITHDRAWALS__ITEM__STRATEGIES__ITEMS; - } - break; - case LRCQW_WITHDRAWALS__ITEM__STRATEGIES__ITEMS: { - // get strategy we need to display - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - char address_buffer[ADDRESS_STR_LEN]; - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - - uint8_t strategy_index = find_lr_known_strategy(address_buffer); - if (params->strategies_count >= MAX_DISPLAYABLE_LR_STRATEGIES_COUNT) { - PRINTF("Too many strategies to display, reverting\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - uint8_t withdrawal = params->withdrawals_count; - - uint8_t strategy = - (strategy_index != UNKNOWN_LR_STRATEGY) ? strategy_index : UNKNOWN_LR_STRATEGY; - - if (withdrawal >= 16 || strategy >= 16) { - PRINTF("INVALID WITHDRAWAL #: %d STRATEGY #: %d\n", withdrawal, strategy); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - params->strategies[params->strategies_count] = - (withdrawal << 4) | (strategy & 0x0F); - ; - } - - // we just processed one strategy item - params->strategies_count += 1; - params->current_item_count -= 1; - if (params->current_item_count == 0) { - // when we arrive at the end of the strategies array we go to the shares array - context->next_param = LRCQW_WITHDRAWALS__ITEM__SHARES_LENGTH; - } - break; - } - case LRCQW_WITHDRAWALS__ITEM__SHARES_LENGTH: - - if (params->cached_offset != msg->parameterOffset) { - PRINTF("Unexpected shares parameter offset %d != %d\n", - params->cached_offset, - msg->parameterOffset); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - PRINTF("LRCQW_WITHDRAWALS__ITEM__SHARES_LENGTH: %d\n", params->current_item_count); - - if (params->current_item_count == 0 && params->parent_item_count > 0) { - // shares array is empty AND we have other queuedWithdrawals to parse - params->parent_item_count -= 1; - params->withdrawals_count += 1; - context->next_param = LRCQW_WITHDRAWALS__ITEM__STAKER; - } else { - context->next_param = LRCQW_WITHDRAWALS__ITEM__SHARES__ITEMS; - } - break; - case LRCQW_WITHDRAWALS__ITEM__SHARES__ITEMS: - - // we don't need to parse shares items as they are not needed for clearsigning - // as not having ETH / ERC20 amount to display would confuse users - params->current_item_count -= 1; - if (params->current_item_count == 0) { - // we arrive at the end of the Withdrawal struct - params->parent_item_count -= 1; - params->withdrawals_count += 1; - if (params->parent_item_count == 0) { - // we arrive at the end of the Withdrawals array - context->next_param = LRCQW_TOKENS_LENGTH; - } else { - // we have other Withdrawals to parse - context->next_param = LRCQW_WITHDRAWALS__ITEM__STAKER; - } - } - break; - - // ******************************************************************** - // TOKENS[][] PARSING - // ^ - // ******************************************************************** - case LRCQW_TOKENS_LENGTH: - - if (params->tokens_offset != msg->parameterOffset - SELECTOR_SIZE) { - PRINTF("Unexpected tokens parameter offset %d != %d\n", - params->tokens_offset, - msg->parameterOffset); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - U2BE_from_parameter(msg->parameter, ¶ms->parent_item_count); - if (params->parent_item_count > params->withdrawals_count) { - PRINTF("Unexpected number of tokens, %d > withdrawals %d\n", - params->parent_item_count, - params->withdrawals_count); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - params->current_item_count = params->parent_item_count; - PRINTF("LRCQW_TOKENS_LENGTH: %d\n", params->parent_item_count); - - // reset checksums and cached offset - memset(¶ms->withdrawals_offsets_checksum_preview, - 0, - sizeof(params->withdrawals_offsets_checksum_preview)); - memset(¶ms->withdrawals_offsets_checksum_value, - 0, - sizeof(params->withdrawals_offsets_checksum_value)); - params->cached_offset = 0; - - if (params->parent_item_count == 0) { - context->next_param = LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH; - } else { - context->next_param = LRCQW_TOKENS__OFFSET_ITEMS; - } - break; - case LRCQW_TOKENS__OFFSET_ITEMS: { - { - // We have limited size on the context and can't store all the offset values - // of the tokens structs. So we compute their checksum and expect to - // be able to recompute it using the offset of the parsed items later. - // _preview will be equal to _value at the end of the parsing if everything is fine - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&h_params.prev_checksum, - &(params->withdrawals_offsets_checksum_preview), - sizeof(h_params.prev_checksum)); - // we hash the previous checksum with the offset we receive. - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - - // if we are on the first element of the array, we save the offset, which all - // received offset values will be based on for checksum computation - if (params->cached_offset == 0) { - params->cached_offset = msg->parameterOffset; - } - - h_params.new_offset = offset + params->cached_offset; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->withdrawals_offsets_checksum_preview) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - params->current_item_count -= 1; - if (params->current_item_count == 0) { - context->next_param = LRCQW_TOKENS__ITEM__LENGTH; - } - break; - } - - // ******************************************************************** - // TOKENS[][] PARSING - // ^ - // ******************************************************************** - case LRCQW_TOKENS__ITEM__LENGTH: { - { - checksum_offset_params_t h_params; - memset(&h_params, 0, sizeof(h_params)); - memcpy(&h_params.prev_checksum, - &(params->withdrawals_offsets_checksum_value), - sizeof(h_params.prev_checksum)); - // we hash the previous checksum with the offset of the beginning of the structure. - h_params.new_offset = msg->parameterOffset; - - if (cx_keccak_256_hash((void *) &h_params, - sizeof(h_params), - params->withdrawals_offsets_checksum_value) != CX_OK) { - PRINTF("unable to compute keccak hash\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - PRINTF("LRCQW_TOKENS__ITEM__LENGTH: %d\n", params->current_item_count); - - if (params->parent_item_count == 1) { - // if we are on the last item of the array of tokens struct - // we can check the checksum - PRINTF("TOKENS[] CHECKSUMS %.*H %.*H\n", - sizeof(params->withdrawals_offsets_checksum_preview), - params->withdrawals_offsets_checksum_preview, - sizeof(params->withdrawals_offsets_checksum_value), - params->withdrawals_offsets_checksum_value); - if (memcmp(params->withdrawals_offsets_checksum_preview, - params->withdrawals_offsets_checksum_value, - sizeof(params->withdrawals_offsets_checksum_preview)) != 0) { - PRINTF("Checksums do not match\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - } - - if (params->current_item_count == 0) { - context->next_param = LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH; - } else { - context->next_param = LRCQW_TOKENS__ITEM__ITEMS; - } - - break; - } - case LRCQW_TOKENS__ITEM__ITEMS: { - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - char address_buffer[ADDRESS_STR_LEN]; - getEthDisplayableAddress(buffer, address_buffer, sizeof(address_buffer), 0); - - uint8_t token_index = find_lr_known_erc20(address_buffer); - // we check if the token matches the corresponding strategy - uint8_t strategy_index = params->strategies[params->tokens_count] & 0x0F; - if (strategy_index != UNKNOWN_LR_STRATEGY && token_index != strategy_index) { - PRINTF("Token idx %d does not match strategy idx %d\n", - token_index, - strategy_index); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - params->tokens_count += 1; - } - - params->current_item_count -= 1; - if (params->current_item_count == 0) { - // we arrive at the end of the tokens array - params->parent_item_count -= 1; - if (params->parent_item_count == 0) { - // if we don't have other Tokens to parse - context->next_param = LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH; - } else { - // if we have other Tokens to parse - context->next_param = LRCQW_TOKENS__ITEM__LENGTH; - } - } - break; - } - - // ******************************************************************** - // MIDDLEWARETIMESINDEXES[] PARSING - // ******************************************************************** - case LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH: - - if (params->middlewareTimesIndexes_offset != msg->parameterOffset - SELECTOR_SIZE) { - PRINTF("Unexpected middlewareTimesIndexes parameter offset %d != %d\n", - params->middlewareTimesIndexes_offset, - msg->parameterOffset); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - if (params->current_item_count > params->withdrawals_count) { - PRINTF("Unexpected middlewareTimesIndexes parameter length %d > withdrawals %d\n", - params->current_item_count, - msg->parameterOffset); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - PRINTF("LRCQW_MIDDLEWARE_TIMES_INDEXES_LENGTH: %d\n", params->current_item_count); - - if (params->current_item_count == 0) { - context->next_param = LRCQW_RECEIVE_AS_TOKENS_LENGTH; - } else { - context->next_param = LRCQW_MIDDLEWARE_TIMES_INDEXES__ITEMS; - } - break; - case LRCQW_MIDDLEWARE_TIMES_INDEXES__ITEMS: - - params->current_item_count -= 1; - if (params->current_item_count == 0) { - context->next_param = LRCQW_RECEIVE_AS_TOKENS_LENGTH; - } - break; - - // ******************************************************************** - // RECEIVEASTOKENS[] PARSING - // ******************************************************************** - case LRCQW_RECEIVE_AS_TOKENS_LENGTH: - - if (params->receiveAsTokens_offset != msg->parameterOffset - SELECTOR_SIZE) { - PRINTF("Unexpected receiveAsTokens parameter offset %d != %d\n", - params->receiveAsTokens_offset, - msg->parameterOffset); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - if (params->current_item_count > params->withdrawals_count) { - PRINTF("Unexpected receiveAsTokens length %d > withdrawals length %d\n", - params->current_item_count, - params->withdrawals_count); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - // we save the number of redelegations to parse - params->relegations_count = params->current_item_count; - PRINTF("LRCQW_RECEIVE_AS_TOKENS_LENGTH: %d\n", params->current_item_count); - - if (params->current_item_count == 0) { - // reached the end - context->next_param = LRCQW_UNEXPECTED_PARAMETER; - } else { - context->next_param = LRCQW_RECEIVE_AS_TOKENS__ITEMS; - } - break; - case LRCQW_RECEIVE_AS_TOKENS__ITEMS: { - { - uint16_t index = params->relegations_count - params->current_item_count; - - uint16_t value; - U2BE_from_parameter(msg->parameter, &value); - // if false, token is redelegated - set_bit(&(params->is_redelegated), index, value == 0); - PRINTF("RECEIVE AS TOKENS #%d: %d\n", index, value); - } - params->current_item_count -= 1; - if (params->current_item_count == 0) { - // reached the end - context->next_param = LRCQW_UNEXPECTED_PARAMETER; - } - break; - } - - default: - PRINTF("Param not supported: %d\n", context->next_param); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } -} - -/** - * @brief Handle the parameters for the delegateTo(address,(bytes,uint256),bytes32) selector - * - * @param msg: message containing the parameter - * @param context: context to update - * - */ -void handle_lr_delegate_to(ethPluginProvideParameter_t *msg, context_t *context) { - // ************************************************************************** - // FUNCTION TO PARSE - // ************************************************************************** - // - // struct Signature { - // bytes signature; - // uint256 expiry; - // } - // - // function delegateTo( - // address operator, - // Signature signature, - // bytes32 approverSalt - // ) external - // - // ************************************************************************** - // example - // [0] selector - // [4] operator - // [36] signature_offset - // [68] approver_salt - // [100] signature - // [100] signature.signature.offset - // [132] signature.expiry - // [164] signature.signature.length - // [192] signature.signature.items - - lr_delegate_to_t *params = &context->param_data.lr_delegate_to; - - switch (context->next_param) { - case LR_DELEGATE_TO_OPERATOR: { - { - uint8_t buffer[ADDRESS_LENGTH]; - copy_address(buffer, msg->parameter, sizeof(buffer)); - getEthDisplayableAddress(buffer, - params->operator_address, - sizeof(params->operator_address), - 0); - - if (compare_addresses((const char *) params->operator_address, - lr_kiln_operator_address)) { - params->is_kiln = true; - } - } - context->next_param = LR_DELEGATE_TO_SIGNATURE_OFFSET; - break; - } - case LR_DELEGATE_TO_SIGNATURE_OFFSET: { - uint16_t offset; - U2BE_from_parameter(msg->parameter, &offset); - if (offset != PARAM_OFFSET * 3) { - // valid offset should only skip this offset + approver_salt - PRINTF("Unexpected parameter offset %d != %d\n", offset, PARAM_OFFSET * 3); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - context->next_param = LR_DELEGATE_TO_APPROVER_SALT; - break; - } - case LR_DELEGATE_TO_APPROVER_SALT: - context->next_param = LR_DELEGATE_TO_SIGNATURE_SIG_OFFSET; - break; - case LR_DELEGATE_TO_SIGNATURE_SIG_OFFSET: { - uint16_t offset_sig; - U2BE_from_parameter(msg->parameter, &offset_sig); - if (offset_sig != PARAM_OFFSET * 2) { - // valid offset should only skip this offset + expiry - PRINTF("Unexpected parameter offset %d != %d\n", offset_sig, PARAM_OFFSET * 2); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - context->next_param = LR_DELEGATE_TO_SIGNATURE_EXPIRY; - break; - } - case LR_DELEGATE_TO_SIGNATURE_EXPIRY: - context->next_param = LR_DELEGATE_TO_SIGNATURE_SIG_LENGTH; - break; - case LR_DELEGATE_TO_SIGNATURE_SIG_LENGTH: - U2BE_from_parameter(msg->parameter, ¶ms->current_item_count); - PRINTF("LR_DELEGATE_TO_SIGNATURE_SIG_LENGTH: %d\n", params->current_item_count); - - if (params->current_item_count == 0) { - context->next_param = LR_DELEGATE_TO_UNEXPECTED_PARAMETER; - } else { - context->next_param = LR_DELEGATE_TO_SIGNATURE_SIG_ITEMS; - } - break; - case LR_DELEGATE_TO_SIGNATURE_SIG_ITEMS: - // we skip parsing signature items as they are not needed for clearsigning - - params->current_item_count -= 1; - if (params->current_item_count == 0) { - context->next_param = LR_DELEGATE_TO_UNEXPECTED_PARAMETER; - } - break; - default: - PRINTF("Param not supported: %d\n", context->next_param); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } - msg->result = ETH_PLUGIN_RESULT_OK; -} \ No newline at end of file diff --git a/src/provide_parameter/handle_provide_parameter.c b/src/provide_parameter/handle_provide_parameter.c index f514469..82c553a 100644 --- a/src/provide_parameter/handle_provide_parameter.c +++ b/src/provide_parameter/handle_provide_parameter.c @@ -24,25 +24,6 @@ void handle_provide_parameter(ethPluginProvideParameter_t *msg) { msg->parameter); switch (context->selectorIndex) { - case KILN_V1_DEPOSIT: - msg->result = ETH_PLUGIN_RESULT_ERROR; - break; - - case KILN_V1_WITHDRAW: - case KILN_V1_WITHDRAW_EL: - case KILN_V1_WITHDRAW_CL: - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case KILN_V1_BATCH_WITHDRAW: - case KILN_V1_BATCH_WITHDRAW_EL: - case KILN_V1_BATCH_WITHDRAW_CL: - msg->result = ETH_PLUGIN_RESULT_OK; - break; - - case KILN_V1_REQUEST_EXIT: - msg->result = ETH_PLUGIN_RESULT_OK; - break; - case KILN_V2_STAKE: msg->result = ETH_PLUGIN_RESULT_ERROR; break; @@ -52,22 +33,6 @@ void handle_provide_parameter(ethPluginProvideParameter_t *msg) { msg->result = ETH_PLUGIN_RESULT_OK; break; - case KILN_LR_DEPOSIT_INTO_STRATEGY: - handle_lr_deposit_into_strategy(msg, context); - break; - case KILN_LR_QUEUE_WITHDRAWALS: - handle_lr_queue_withdrawals(msg, context); - break; - case KILN_LR_COMPLETE_QUEUED_WITHDRAWALS: - handle_lr_complete_queued_withdrawals(msg, context); - break; - case KILN_LR_DELEGATE_TO: - handle_lr_delegate_to(msg, context); - break; - case KILN_LR_UNDELEGATE: - msg->result = ETH_PLUGIN_RESULT_OK; - break; - default: PRINTF("Selector Index not supported: %d\n", context->selectorIndex); msg->result = ETH_PLUGIN_RESULT_ERROR; diff --git a/src/provide_parameter/provide_parameter.h b/src/provide_parameter/provide_parameter.h index 6ac5634..936f372 100644 --- a/src/provide_parameter/provide_parameter.h +++ b/src/provide_parameter/provide_parameter.h @@ -19,8 +19,3 @@ #include #include "kiln_plugin.h" - -void handle_lr_deposit_into_strategy(ethPluginProvideParameter_t *msg, context_t *context); -void handle_lr_queue_withdrawals(ethPluginProvideParameter_t *msg, context_t *context); -void handle_lr_complete_queued_withdrawals(ethPluginProvideParameter_t *msg, context_t *context); -void handle_lr_delegate_to(ethPluginProvideParameter_t *msg, context_t *context); diff --git a/src/query_contract_ui/eigenlayer.c b/src/query_contract_ui/eigenlayer.c deleted file mode 100644 index 161e678..0000000 --- a/src/query_contract_ui/eigenlayer.c +++ /dev/null @@ -1,244 +0,0 @@ -/******************************************************************************* - * - * ██╗ ██╗██╗██╗ ███╗ ██╗ - * ██║ ██╔╝██║██║ ████╗ ██║ - * █████╔╝ ██║██║ ██╔██╗ ██║ - * ██╔═██╗ ██║██║ ██║╚██╗██║ - * ██║ ██╗██║███████╗██║ ╚████║ - * ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ - * - * Kiln Ethereum Ledger App - * (c) 2022-2024 Kiln - * - * contact@kiln.fi - ********************************************************************************/ - -#include "query_contract_ui.h" - -/** - * @brief Get the bit at the given index - * - * @param bf: Bitfield to get the bit from - * @param index: Index of the bit to get - * - * @return int: The bit at the given index - */ -int get_bit(const bitfield *bf, int index) { - if (index < 0 || index >= MAX_DISPLAYABLE_LR_STRATEGIES_COUNT) { - return -1; // Index out of range - } - return (bf->bits & (1U << index)) != 0; -} - -/** - * @brief UI for depositing into an EigenLayer strategy - * - * @param msg: message containing the parameter - * @param context: context with provide_parameter data - * - */ -bool deposit_into_strategy_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - lr_deposit_t *params = &context->param_data.lr_deposit; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "Liquid Restaking", msg->titleLength); - strlcpy(msg->msg, "Deposit In Strategy", msg->msgLength); - ret = true; - break; - case 1: - strlcpy(msg->title, "Strategy", msg->titleLength); - if (params->strategy_to_display == UNKNOWN_LR_STRATEGY || - params->strategy_to_display >= LR_STRATEGIES_COUNT) { - strlcpy(msg->msg, "UNKNOWN", msg->msgLength); - } else { - strlcpy(msg->msg, lr_tickers[params->strategy_to_display], MAX_TICKER_LEN); - } - ret = true; - break; - case 2: - strlcpy(msg->title, "Amount", msg->titleLength); - amountToString(params->erc20_amount_to_display, - sizeof(params->erc20_amount_to_display), - ERC20_DECIMALS, - params->erc20_to_display == UNKNOWN_LR_ERC20 || - params->erc20_to_display >= LR_STRATEGIES_COUNT - ? "UNKNOWN" - : lr_tickers[params->erc20_to_display], - msg->msg, - msg->msgLength); - ret = true; - break; - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} - -/** - * @brief UI for queueing withdrawals - * - * @param msg: message containing the parameter - * @param context: context with provide_parameter data - * - */ -bool queue_withdrawals_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - lr_queue_withdrawals_t *params = &context->param_data.lr_queue_withdrawals; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "EigenLayer", msg->titleLength); - strlcpy(msg->msg, "Queue Withdrawals", msg->msgLength); - ret = true; - break; - - case 1: - strlcpy(msg->title, "Withdrawer", msg->titleLength); - strlcpy(msg->msg, params->withdrawer, msg->msgLength); - ret = true; - break; - - default: { - { - // removing the first screen to current screen index - // to get the index of the withdrawal - uint8_t withdrawal_index = msg->screenIndex - 2; - - if (withdrawal_index < params->strategies_count) { - strlcpy(msg->title, "Strategy", msg->titleLength); - uint8_t strategy = params->strategies[withdrawal_index]; - - if (strategy == UNKNOWN_LR_STRATEGY || strategy >= LR_STRATEGIES_COUNT) { - strlcpy(msg->msg, "UNKNOWN", msg->msgLength); - } else { - strlcpy(msg->msg, lr_tickers[strategy], msg->msgLength); - } - } - - ret = true; - break; - } - PRINTF("Received an invalid screenIndex\n"); - break; - } - } - return ret; -} - -/** - * @brief UI for completing queued withdrawals - * - * @param msg: message containing the parameter - * @param context: context with provide_parameter data - * - */ -bool complete_queued_withdrawals_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - lr_complete_queued_withdrawals_t *params = &context->param_data.lr_complete_queued_withdrawals; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "EigenLayer", msg->titleLength); - strlcpy(msg->msg, "Complete Withdrawals", msg->msgLength); - ret = true; - break; - - case 1: - strlcpy(msg->title, "Withdrawer", msg->titleLength); - char address_buffer[ADDRESS_STR_LEN]; - getEthDisplayableAddress(params->withdrawer, address_buffer, sizeof(address_buffer), 0); - strlcpy(msg->msg, address_buffer, msg->msgLength); - ret = true; - break; - - default: { - { - // removing the 2 known screens to current screen index - // to get the index of the withdrawal - uint8_t strategy_index = msg->screenIndex - 2; - - if (strategy_index < params->strategies_count) { - uint8_t withdrawal_index = (params->strategies[strategy_index] >> 4) & 0x0F; - - if (get_bit(¶ms->is_redelegated, withdrawal_index) == 1) { - strlcpy(msg->title, "Redelegate", msg->titleLength); - } else { - strlcpy(msg->title, "Withdraw", msg->titleLength); - } - - uint8_t strategy = params->strategies[strategy_index] & 0x0F; - if (strategy == UNKNOWN_LR_STRATEGY || strategy >= LR_STRATEGIES_COUNT) { - strlcpy(msg->msg, "UNKNOWN", msg->msgLength); - } else { - strlcpy(msg->msg, lr_tickers[strategy], msg->msgLength); - } - } - - ret = true; - break; - } - PRINTF("Received an invalid screenIndex\n"); - break; - } - } - return ret; -} - -/** - * @brief UI for delegating to an operator - * - * @param msg: message containing the parameter - * @param context: context with provide_parameter data - * - */ -bool delegate_to_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - lr_delegate_to_t *params = &context->param_data.lr_delegate_to; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "EigenLayer", msg->titleLength); - strlcpy(msg->msg, "Delegate To", msg->msgLength); - ret = true; - break; - case 1: - strlcpy(msg->title, "Operator", msg->titleLength); - if (params->is_kiln) { - strlcpy(msg->msg, "Kiln", msg->msgLength); - } else { - strlcpy(msg->msg, params->operator_address, msg->msgLength); - } - ret = true; - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} -/** - * @brief UI for undelegating - * - * @param msg: message containing the parameter - * - */ -bool undelegate_ui(ethQueryContractUI_t *msg) { - bool ret = false; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "EigenLayer", msg->titleLength); - strlcpy(msg->msg, "Undelegate all", msg->msgLength); - ret = true; - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} \ No newline at end of file diff --git a/src/query_contract_ui/handle_query_contract_ui.c b/src/query_contract_ui/handle_query_contract_ui.c index b7b00a1..73d0203 100644 --- a/src/query_contract_ui/handle_query_contract_ui.c +++ b/src/query_contract_ui/handle_query_contract_ui.c @@ -23,26 +23,6 @@ void handle_query_contract_ui(ethQueryContractUI_t *msg) { memset(msg->msg, 0, msg->msgLength); switch (context->selectorIndex) { - case KILN_V1_DEPOSIT: - ret = stake_ui(msg); - break; - - case KILN_V1_WITHDRAW: - case KILN_V1_WITHDRAW_EL: - case KILN_V1_WITHDRAW_CL: - ret = withdraw_ui(msg, context); - break; - - case KILN_V1_BATCH_WITHDRAW: - case KILN_V1_BATCH_WITHDRAW_EL: - case KILN_V1_BATCH_WITHDRAW_CL: - ret = batch_withdraw_ui(msg, context); - break; - - case KILN_V1_REQUEST_EXIT: - ret = request_exit_ui(msg); - break; - case KILN_V2_STAKE: ret = stake_in_pool_ui(msg); break; @@ -59,26 +39,6 @@ void handle_query_contract_ui(ethQueryContractUI_t *msg) { ret = claim_ui(msg); break; - case KILN_LR_DEPOSIT_INTO_STRATEGY: - ret = deposit_into_strategy_ui(msg, context); - break; - - case KILN_LR_QUEUE_WITHDRAWALS: - ret = queue_withdrawals_ui(msg, context); - break; - - case KILN_LR_COMPLETE_QUEUED_WITHDRAWALS: - ret = complete_queued_withdrawals_ui(msg, context); - break; - - case KILN_LR_DELEGATE_TO: - ret = delegate_to_ui(msg, context); - break; - - case KILN_LR_UNDELEGATE: - ret = undelegate_ui(msg); - break; - default: PRINTF("Selector Index not supported: %d\n", context->selectorIndex); break; diff --git a/src/query_contract_ui/onchainv1.c b/src/query_contract_ui/onchainv1.c deleted file mode 100644 index 392e0e3..0000000 --- a/src/query_contract_ui/onchainv1.c +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************* - * - * ██╗ ██╗██╗██╗ ███╗ ██╗ - * ██║ ██╔╝██║██║ ████╗ ██║ - * █████╔╝ ██║██║ ██╔██╗ ██║ - * ██╔═██╗ ██║██║ ██║╚██╗██║ - * ██║ ██╗██║███████╗██║ ╚████║ - * ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═══╝ - * - * Kiln Ethereum Ledger App - * (c) 2022-2024 Kiln - * - * contact@kiln.fi - ********************************************************************************/ - -#include "query_contract_ui.h" - -bool stake_ui(ethQueryContractUI_t *msg) { - bool ret = false; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "Stake", msg->titleLength); - const uint8_t *eth_amount = msg->pluginSharedRO->txContent->value.value; - uint8_t eth_amount_size = msg->pluginSharedRO->txContent->value.length; - - ret = amountToString(eth_amount, - eth_amount_size, - WEI_TO_ETHER, - "ETH", - msg->msg, - msg->msgLength); - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} - -bool request_exit_ui(ethQueryContractUI_t *msg) { - bool ret = false; - - switch (msg->screenIndex) { - case 0: - strlcpy(msg->title, "Request", msg->titleLength); - strlcpy(msg->msg, "Validators Exit", msg->msgLength); - ret = true; - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} - -bool withdraw_rewards_ui(ethQueryContractUI_t *msg, context_t *context) { - strlcpy(msg->title, "Rewards", msg->titleLength); - - switch (context->selectorIndex) { - case KILN_V1_WITHDRAW: - strlcpy(msg->msg, "Consensus & Exec", msg->msgLength); - break; - - case KILN_V1_WITHDRAW_EL: - strlcpy(msg->msg, "Execution Layer", msg->msgLength); - break; - - case KILN_V1_WITHDRAW_CL: - strlcpy(msg->msg, "Consensus Layer", msg->msgLength); - break; - - default: - strlcpy(msg->msg, "?", msg->msgLength); - break; - } - return true; -} - -bool withdraw_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - - switch (msg->screenIndex) { - case 0: - ret = withdraw_rewards_ui(msg, context); - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} - -bool batch_withdraw_rewards_ui(ethQueryContractUI_t *msg, context_t *context) { - strlcpy(msg->title, "Rewards", msg->titleLength); - - switch (context->selectorIndex) { - case KILN_V1_BATCH_WITHDRAW: - strlcpy(msg->msg, "Consensus & Exec", msg->msgLength); - break; - - case KILN_V1_BATCH_WITHDRAW_EL: - strlcpy(msg->msg, "Execution Layer", msg->msgLength); - break; - - case KILN_V1_BATCH_WITHDRAW_CL: - strlcpy(msg->msg, "Consensus Layer", msg->msgLength); - break; - - default: - strlcpy(msg->msg, "?", msg->msgLength); - break; - } - return true; -} - -bool batch_withdraw_ui(ethQueryContractUI_t *msg, context_t *context) { - bool ret = false; - - switch (msg->screenIndex) { - case 0: - ret = batch_withdraw_rewards_ui(msg, context); - break; - - default: - PRINTF("Received an invalid screenIndex\n"); - break; - } - return ret; -} diff --git a/src/query_contract_ui/query_contract_ui.h b/src/query_contract_ui/query_contract_ui.h index 66ecff7..4e630a2 100644 --- a/src/query_contract_ui/query_contract_ui.h +++ b/src/query_contract_ui/query_contract_ui.h @@ -20,23 +20,9 @@ #include "kiln_plugin.h" -// On-Chain v1 UI -bool stake_ui(ethQueryContractUI_t *msg); -bool withdraw_rewards_ui(ethQueryContractUI_t *msg, context_t *context); -bool withdraw_ui(ethQueryContractUI_t *msg, context_t *context); -bool batch_withdraw_rewards_ui(ethQueryContractUI_t *msg, context_t *context); -bool batch_withdraw_ui(ethQueryContractUI_t *msg, context_t *context); - // On-Chain v2 UI bool stake_in_pool_ui(ethQueryContractUI_t *msg); bool request_pooling_exit_ui(ethQueryContractUI_t *msg); bool request_exit_ui(ethQueryContractUI_t *msg); bool multiclaim_ui(ethQueryContractUI_t *msg); bool claim_ui(ethQueryContractUI_t *msg); - -// EigenLayer UI -bool deposit_into_strategy_ui(ethQueryContractUI_t *msg, context_t *context); -bool queue_withdrawals_ui(ethQueryContractUI_t *msg, context_t *context); -bool complete_queued_withdrawals_ui(ethQueryContractUI_t *msg, context_t *context); -bool delegate_to_ui(ethQueryContractUI_t *msg, context_t *context); -bool undelegate_ui(ethQueryContractUI_t *msg); \ No newline at end of file From c48728b792602f61abcc4637af00e3732813aa31 Mon Sep 17 00:00:00 2001 From: "pwnh4 (@loicttn)" Date: Fri, 20 Sep 2024 11:40:21 +0200 Subject: [PATCH 2/9] chore: update plugin spec --- PLUGIN_SPECIFICATION.md | 21 +--- README.md | 225 ++-------------------------------------- 2 files changed, 14 insertions(+), 232 deletions(-) diff --git a/PLUGIN_SPECIFICATION.md b/PLUGIN_SPECIFICATION.md index 3e564ad..00c6ac4 100644 --- a/PLUGIN_SPECIFICATION.md +++ b/PLUGIN_SPECIFICATION.md @@ -10,11 +10,9 @@ Smart contracts covered by the plugin: | Network | Version | Smart Contract | Address | | ------- | ------- | ------------------------------------- | -------------------------------------------- | -| Mainnet | v1.2 | OCV1 - Kiln On-Chain v1 | `0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270` | -| Mainnet | v2.2 | OCV2-N20 - Kiln On-Chain v2 Native 20 | `0x5db5235b5c7e247488784986e58019fffd98fda4` | -| Mainnet | v2.2 | OCV2-EQ - Kiln On-Chain v2 Exit Queue | `0x8d6fd650500f82c7d978a440348e5a9b886943bf` | -| Mainnet | M2 | EL-SM - EigenLayer Strategy Manager | `0x858646372cc42e1a627fce94aa7a7033e7cf075a` | -| Mainnet | M2 | EL-DM - EigenLayer Delegation Manager | `0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a` | +| Mainnet | v2.2 | OCV2-N20 - CoinbaseStaking On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | +| Mainnet | v2.2 | OCV2-EQ - CoinbaseStaking On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | + ## Functions @@ -22,20 +20,7 @@ For the smart contracts implemented, the functions covered by the plugin are: | Contract | Function | Selector | Displayed Parameters | | -------- | ------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| OCV1 | deposit | `0xd0e30db0` |
uint tx.value
| -| OCV1 | withdraw | `0x0968f264` |
n/r
| -| OCV1 | withdrawELFee | `0xbf509bd4` |
n/r
| -| OCV1 | withdrawCLFee | `0x2ba03a79` |
n/r
| -| OCV1 | batchWithdraw | `0xe8a0c121` |
n/r
| -| OCV1 | batchWithdrawELFee | `0xef5e4682` |
n/r
| -| OCV1 | batchWithdrawCLFee | `0x0ffab6c2` |
n/r
| -| OCV1 | requestValidatorsExit | `0xb6b06dec` |
n/r
| | OCV2-N20 | stake | `0x3a4b66f1` |
uint tx.value
| | OCV2-N20 | requestExit | `0x721c6513` |
n/r
| | OCV2-N20 | multiClaim | `0xb7ba18c7` |
n/r
| | OCV2-EQ | claim | `0xadcf1163` |
n/r
| -| EL-SM | depositIntoStrategy | `0xe7a050aa` |
address strategy
address ERC20
deposited amount
| -| EL-SM | queueWithdrawals | `0x0dd8dd02` |
queuedWithdrawalParams.strategies[] as string using an internal mapping
queuedWithdrawalParams.withdrawer
| -| EL-SM | completeQueuedWithdrawals | `0x33404396` |
strategies as string using an internal mapping
redelegated or withdrawal action
| -| EL-DM | delegateTo | `0xeea9064b` |
address operator or "KILN"
| -| EL-DM | undelegate | `0xda8be864` |
| diff --git a/README.md b/README.md index 8df185c..1e38d1f 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,7 @@ ![Kiln Logo](https://uploads-ssl.webflow.com/625db3caa8abd6c22d5f0ce3/6260572336892a801afd71e3_Kiln_Logo-Transparent-Dark.svg) -This plug-in is compatible with Nano S / X devices, it enables to -interact in a secure way with the Kiln On-Chain v1, v2 and EigenLayer Liquid Restaking contracts. +This plug-in is compatible with Nano S / X devices, it enables to interact in a secure way with the Kiln v2 contracts. ## Prerequisite @@ -21,8 +20,8 @@ git clone https://github.com/LedgerHQ/app-plugin-kiln.git Then in the same folder clone two more repositories, which is the plugin-tools and app-ethereum. ```shell -git clone https://github.com/LedgerHQ/plugin-tools.git #plugin-tools -git clone --recurse-submodules https://github.com/LedgerHQ/app-ethereum.git #app-ethereum +git clone https://github.com/LedgerHQ/plugin-tools.git # plugin-tools +git clone --recurse-submodules https://github.com/LedgerHQ/app-ethereum.git # app-ethereum ``` ## Documentation @@ -38,11 +37,11 @@ All the plugin code is in the `src` folder. The plugin codebase follows the 6 steps of the plugin flow: 1. **initialize** (in `src/handle_init_contract.c`): plugin receives the selector to manage, and init the correct parser initial state for the function (`context->next_param`). -2. **provide parameter** (in `src/provide_parameter/handle_provide_parameter.c`): selected parser receives parameters 32 bytes by 32 bytes, and parse them to the correct state. See files like `src/provide_parameter/eigenlayer.c` for the different parsers. +2. **provide parameter** (in `src/provide_parameter/handle_provide_parameter.c`): selected parser receives parameters 32 bytes by 32 bytes, and parse them to the correct state. 3. **finalize** (in `src/handle_finalize.c`): plugin returns the number of screens to display 4. **provide_token** not used here 5. **query_contract_id** (in `src/handle_query_contract_id.c`): plugin returns the contract name as the first displayed screen on the device -6. **query_contract_ui** (in `src/query_contract_ui/handle_query_contract_ui.c`): plugin returns the screens to display on the device, each product has its own file like `src/query_contract_ui/eigenlayer.c`. +6. **query_contract_ui** (in `src/query_contract_ui/handle_query_contract_ui.c`): plugin returns the screens to display on the device, each product has its own file. Other important files: @@ -106,104 +105,14 @@ The flow processed in [GitHub Actions](https://github.com/features/actions) is t ### Supported Smart Contracts Smart contracts covered by this plugin are: - -| Network | Name | Address | +ks +| Network | Name | Address | | ------- | ----------------------------- | -------------------------------------------- | -| Mainnet | Kiln On-Chain v1 | `0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270` | -| Mainnet | Kiln On-Chain v2 Native20 | `0x5db5235b5c7e247488784986e58019fffd98fda4` | -| Mainnet | Kiln On-Chain v2 ExitQueue | `0x8d6fd650500f82c7d978a440348e5a9b886943bf` | -| Mainnet | EigenLayer Strategy Manager | `0x858646372cc42e1a627fce94aa7a7033e7cf075a` | -| Mainnet | EigenLayer Delegation Manager | `0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a` | +| Mainnet | CoinbaseStaking On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | +| Mainnet | CoinbaseStaking On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | ## Clearsigning -### KILN ON-CHAIN v1 - Deposit - -Function: `deposit()` -Clearsigned: - -- tx.value - -![](/tests/snapshots/nanos_deposit/00000.png) ![](/tests/snapshots/nanos_deposit/00001.png) ![](/tests/snapshots/nanos_deposit/00002.png) ![](/tests/snapshots/nanos_deposit/00003.png) ![](/tests/snapshots/nanos_deposit/00004.png) ![](/tests/snapshots/nanos_deposit/00005.png) - -![](/tests/snapshots/nanox_deposit/00000.png) ![](/tests/snapshots/nanox_deposit/00001.png) ![](/tests/snapshots/nanox_deposit/00002.png) ![](/tests/snapshots/nanox_deposit/00003.png) ![](/tests/snapshots/nanox_deposit/00004.png) ![](/tests/snapshots/nanox_deposit/00005.png) - -### KILN ON-CHAIN v1 - Withdraw - -Function `withdraw(bytes validatorPubkey)` -Clearsigned: - -- none as BLS key is not digest to display on device and only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_withdraw/00000.png) ![](/tests/snapshots/nanos_withdraw/00001.png) ![](/tests/snapshots/nanos_withdraw/00002.png) ![](/tests/snapshots/nanos_withdraw/00003.png) ![](/tests/snapshots/nanos_withdraw/00004.png) ![](/tests/snapshots/nanos_withdraw/00005.png) - -![](/tests/snapshots/nanox_withdraw/00000.png) ![](/tests/snapshots/nanox_withdraw/00001.png) ![](/tests/snapshots/nanox_withdraw/00002.png) ![](/tests/snapshots/nanox_withdraw/00003.png) ![](/tests/snapshots/nanox_withdraw/00004.png) ![](/tests/snapshots/nanox_withdraw/00005.png) - -### KILN ON-CHAIN v1 - Withdraw EL - -Function `withdrawEL(bytes validatorPubkey)` -Clearsigned: - -- none as BLS key is not digest to display on device and only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_withdrawEL/00000.png) ![](/tests/snapshots/nanos_withdrawEL/00001.png) ![](/tests/snapshots/nanos_withdrawEL/00002.png) ![](/tests/snapshots/nanos_withdrawEL/00003.png) ![](/tests/snapshots/nanos_withdrawEL/00004.png) ![](/tests/snapshots/nanos_withdrawEL/00005.png) - -![](/tests/snapshots/nanox_withdrawEL/00000.png) ![](/tests/snapshots/nanox_withdrawEL/00001.png) ![](/tests/snapshots/nanox_withdrawEL/00002.png) ![](/tests/snapshots/nanox_withdrawEL/00003.png) ![](/tests/snapshots/nanox_withdrawEL/00004.png) ![](/tests/snapshots/nanox_withdrawEL/00005.png) - -### KILN ON-CHAIN v1 - Withdraw CL - -Function `withdrawCL(bytes validatorPubkey)` -Clearsigned: - -- none as BLS key is not digest to display on device and only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_withdrawCL/00000.png) ![](/tests/snapshots/nanos_withdrawCL/00001.png) ![](/tests/snapshots/nanos_withdrawCL/00002.png) ![](/tests/snapshots/nanos_withdrawCL/00003.png) ![](/tests/snapshots/nanos_withdrawCL/00004.png) ![](/tests/snapshots/nanos_withdrawCL/00005.png) - -![](/tests/snapshots/nanox_withdrawCL/00000.png) ![](/tests/snapshots/nanox_withdrawCL/00001.png) ![](/tests/snapshots/nanox_withdrawCL/00002.png) ![](/tests/snapshots/nanox_withdrawCL/00003.png) ![](/tests/snapshots/nanox_withdrawCL/00004.png) ![](/tests/snapshots/nanox_withdrawCL/00005.png) - -### KILN ON-CHAIN v1 - Batch Withdraw - -Function `batchWithdraw(bytes validatorPubkeys)` - -- none as validatorPubkeys can represent many BLS keys that we can't store on the device. Also only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_batchWithdraw/00000.png) ![](/tests/snapshots/nanos_batchWithdraw/00001.png) ![](/tests/snapshots/nanos_batchWithdraw/00002.png) ![](/tests/snapshots/nanos_batchWithdraw/00003.png) ![](/tests/snapshots/nanos_batchWithdraw/00004.png) ![](/tests/snapshots/nanos_batchWithdraw/00005.png) - -![](/tests/snapshots/nanox_batchWithdraw/00000.png) ![](/tests/snapshots/nanox_batchWithdraw/00001.png) ![](/tests/snapshots/nanox_batchWithdraw/00002.png) ![](/tests/snapshots/nanox_batchWithdraw/00003.png) ![](/tests/snapshots/nanox_batchWithdraw/00004.png) ![](/tests/snapshots/nanox_batchWithdraw/00005.png) - -### KILN ON-CHAIN v1 - Batch Withdraw EL - -Function `batchWithdrawEL(bytes validatorPubkeys)` -Clearsigned: - -- none as validatorPubkeys can represent many BLS keys that we can't store on the device. Also only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_batchWithdrawEL/00000.png) ![](/tests/snapshots/nanos_batchWithdrawEL/00001.png) ![](/tests/snapshots/nanos_batchWithdrawEL/00002.png) ![](/tests/snapshots/nanos_batchWithdrawEL/00003.png) ![](/tests/snapshots/nanos_batchWithdrawEL/00004.png) ![](/tests/snapshots/nanos_batchWithdrawEL/00005.png) - -![](/tests/snapshots/nanox_batchWithdrawEL/00000.png) ![](/tests/snapshots/nanox_batchWithdrawEL/00001.png) ![](/tests/snapshots/nanox_batchWithdrawEL/00002.png) ![](/tests/snapshots/nanox_batchWithdrawEL/00003.png) ![](/tests/snapshots/nanox_batchWithdrawEL/00004.png) ![](/tests/snapshots/nanox_batchWithdrawEL/00005.png) - -### KILN ON-CHAIN v1 - Batch WithdrawCL - -Function `batchWithdrawCL(bytes validatorPubkeys)` -Clearsigned: - -- none as validatorPubkeys can represent many BLS keys that we can't store on the device. Also only owner of the validator can withdraw on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_batchWithdrawCL/00000.png) ![](/tests/snapshots/nanos_batchWithdrawCL/00001.png) ![](/tests/snapshots/nanos_batchWithdrawCL/00002.png) ![](/tests/snapshots/nanos_batchWithdrawCL/00003.png) ![](/tests/snapshots/nanos_batchWithdrawCL/00004.png) ![](/tests/snapshots/nanos_batchWithdrawCL/00005.png) - -![](/tests/snapshots/nanox_batchWithdrawCL/00000.png) ![](/tests/snapshots/nanox_batchWithdrawCL/00001.png) ![](/tests/snapshots/nanox_batchWithdrawCL/00002.png) ![](/tests/snapshots/nanox_batchWithdrawCL/00003.png) ![](/tests/snapshots/nanox_batchWithdrawCL/00004.png) ![](/tests/snapshots/nanox_batchWithdrawCL/00005.png) - -### KILN ON-CHAIN v1 - Request Exits - -Function `requestValidatorsExit(bytes validatorPubkeys)` -Clearsigned: - -- none as validatorPubkeys can represent many BLS keys that we can't store on the device. Also only owner of the validator can request exit on its behalf so no attack vector possible. - -![](/tests/snapshots/nanos_requestValidatorsExit/00000.png) ![](/tests/snapshots/nanos_requestValidatorsExit/00001.png) ![](/tests/snapshots/nanos_requestValidatorsExit/00002.png) ![](/tests/snapshots/nanos_requestValidatorsExit/00003.png) ![](/tests/snapshots/nanos_requestValidatorsExit/00004.png) ![](/tests/snapshots/nanos_requestValidatorsExit/00005.png) - -![](/tests/snapshots/nanox_requestValidatorsExit/00000.png) ![](/tests/snapshots/nanox_requestValidatorsExit/00001.png) ![](/tests/snapshots/nanox_requestValidatorsExit/00002.png) ![](/tests/snapshots/nanox_requestValidatorsExit/00003.png) ![](/tests/snapshots/nanox_requestValidatorsExit/00004.png) ![](/tests/snapshots/nanox_requestValidatorsExit/00005.png) - ### KILN ON-CHAIN v2 - Stake Function: `stake()` @@ -231,7 +140,7 @@ Clearsigned: Function: `multiClaim(address[] exitQueues, uint256[][] ticketIds, uint32[][] casksIds)` Clearsigned: -- none +- none as shares is not 1:1 with ETH value, it would confuse users ![](/tests/snapshots/nanos_multiClaimv2/00000.png) ![](/tests/snapshots/nanos_multiClaimv2/00001.png) ![](/tests/snapshots/nanos_multiClaimv2/00002.png) ![](/tests/snapshots/nanos_multiClaimv2/00003.png) ![](/tests/snapshots/nanos_multiClaimv2/00004.png) ![](/tests/snapshots/nanos_multiClaimv2/00005.png) @@ -242,120 +151,8 @@ Clearsigned: Function: `claim(uint256[] ticketIds, uint32[] caskIds, uint16 maxClaimDepth)` Clearsigned: -- none +- none as shares is not 1:1 with ETH value, it would confuse users ![](/tests/snapshots/nanos_claimv2/00000.png) ![](/tests/snapshots/nanos_claimv2/00001.png) ![](/tests/snapshots/nanos_claimv2/00002.png) ![](/tests/snapshots/nanos_claimv2/00003.png) ![](/tests/snapshots/nanos_claimv2/00004.png) ![](/tests/snapshots/nanos_claimv2/00005.png) ![](/tests/snapshots/nanox_claimv2/00000.png) ![](/tests/snapshots/nanox_claimv2/00001.png) ![](/tests/snapshots/nanox_claimv2/00002.png) ![](/tests/snapshots/nanox_claimv2/00003.png) ![](/tests/snapshots/nanox_claimv2/00004.png) ![](/tests/snapshots/nanox_claimv2/00005.png) - -### EigenLayer Strategy Manager - LR Deposit Into Strategy - -Function: `depositIntoStrategy(address strategy, address erc20, uint256 amount)` -Clearsigned: - -- strategy: using mapping in `contracts.c`, it is either recognized or displayed as "UNKOWN" -- erc20: using mapping in `contracts.c`, it is either recognized or displayed as "UNKOWN" -- amount - -![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00000.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00001.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00002.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00003.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00004.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00005.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00006.png) ![](/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00007.png) - -![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00000.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00001.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00002.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00003.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00004.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00005.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00006.png) ![](/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00007.png) - -### EigenLayer Delegation Manager - Delegate To - -Function: - -```solidity -struct SignatureWithExpiry { - bytes signature; - uint256 expiry; -} - -function delegateTo( - address operator, - SignatureWithExpiry memory approverSignatureAndExpiry, - bytes32 approverSalt -) -``` - -Clearsigned: - -- operator: using mapping in `contracts.c`, it is either recognized or displayed as address - -Shares are confusing for users and would be hard to store properly on the device for display. - -![](/tests/snapshots/nanos_delegate_to_is_kiln/00000.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00001.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00002.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00003.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00004.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00005.png) ![](/tests/snapshots/nanos_delegate_to_is_kiln/00006.png) - -![](/tests/snapshots/nanox_delegate_to_is_kiln/00000.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00001.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00002.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00003.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00004.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00005.png) ![](/tests/snapshots/nanox_delegate_to_is_kiln/00006.png) - -### EigenLayer Delegation Manager - Undelegate - -Function: `undelegate(address staker)` -Clearsigned: - -- none as there is a staker == msg.sender requirement in the contract - -![](/tests/snapshots/nanos_lr_undelegate/00000.png) ![](/tests/snapshots/nanos_lr_undelegate/00001.png) ![](/tests/snapshots/nanos_lr_undelegate/00002.png) ![](/tests/snapshots/nanos_lr_undelegate/00003.png) ![](/tests/snapshots/nanos_lr_undelegate/00004.png) ![](/tests/snapshots/nanos_lr_undelegate/00005.png) - -![](/tests/snapshots/nanox_lr_undelegate/00000.png) ![](/tests/snapshots/nanox_lr_undelegate/00001.png) ![](/tests/snapshots/nanox_lr_undelegate/00002.png) ![](/tests/snapshots/nanox_lr_undelegate/00003.png) ![](/tests/snapshots/nanox_lr_undelegate/00004.png) ![](/tests/snapshots/nanox_lr_undelegate/00005.png) - -### EigenLayer Strategy Manager - Queue Withdrawals - -Function: - -```solidity -struct QueuedWithdrawalParams { - address[] strategies; - uint256[] shares; - address withdrawer; -} - -function queueWithdrawals( - QueuedWithdrawalParams[] queuedWithdrawalParams -) -``` - -Clearsigned: - -- strategies: using mapping in `contracts.c`, they are either recognized or displayed as "UNKOWN" -- withdrawer - -Shares are confusing for users and would be hard to store properly on the device for display. - -![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00000.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00001.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00002.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00003.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00004.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00005.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00006.png) ![](/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00007.png) - -![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00000.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00001.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00002.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00003.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00004.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00005.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00006.png) ![](/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00007.png) - -### EigenLayer Strategy Manager - LR Complete Queued Withdrawals - -Function: - -```solidity -struct Withdrawal { - address staker; - address delegatedTo; - address withdrawer; - uint256 nonce; - uint32 startBlock; - address[] strategies; - uint256[] shares; -} - -function completeQueuedWithdrawals( - Withdrawal[] withdrawals, - address[][] tokens, - uint256[] middlewareTimesIndexes, - bool[] receiveAsTokens -) -``` - -Clearsigned: - -- strategies: using mapping in `contracts.c`, they are either recognized or displayed as "UNKOWN" -- if each withdrawal corresponding receiveAsTokens is true, then the corresponding token is displayed as "Withdraw" else as "Redelegation - -Shares are confusing for users and would be hard to store properly on the device for display. - -![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00000.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00001.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00002.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00003.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00004.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00005.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00006.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00007.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00008.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00009.png) ![](/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00010.png) - -![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00000.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00001.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00002.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00003.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00004.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00005.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00006.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00007.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00008.png) ![](/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00009.png) From 36a7215089eb1897e74aef8e14379da1787f25ca Mon Sep 17 00:00:00 2001 From: "pwnh4 (@loicttn)" Date: Fri, 20 Sep 2024 11:41:00 +0200 Subject: [PATCH 3/9] feat(tests): remove eigenlayer and ocv1 and update to CoinbaseStaking addresses --- ...8238ce926dec62b3fbc99ab06eb1d85ce0270.json | 100 ----- ...56e1ee8b44ab826556770f69e3b9ca04a2a7.json} | 0 ...53d51b77dc0d36036fc1fcc8cb819df8ef37a.json | 56 --- ...646372cc42e1a627fce94aa7a7033e7cf075a.json | 145 ------- ...8f7b33b599c484e0335b8ee4f7f7f92d8b60.json} | 0 tests/cal/b2c.json | 92 +---- tests/src/batchWithdraw.test.js | 65 --- tests/src/batchWithdrawCL.test.js | 65 --- tests/src/batchWithdrawEL.test.js | 65 --- tests/src/claim.v2.test.js | 4 +- tests/src/deposit.test.js | 58 --- tests/src/generate_plugin_config.js | 2 - tests/src/lrCompleteQueuedWithdrawals.test.js | 378 ------------------ tests/src/lrDelegateTo.test.js | 110 ----- tests/src/lrDepositIntoStrategy.test.js | 143 ------- tests/src/lrQueueWithdrawals.test.js | 171 -------- tests/src/lrUndelegate.test.js | 61 --- tests/src/multiClaim.v2.test.js | 6 +- tests/src/requestExit.test.js | 65 --- tests/src/requestExit.v2.test.js | 4 +- tests/src/stake.v2.test.js | 6 +- tests/src/test.fixture.js | 6 +- tests/src/withdraw.test.js | 66 --- tests/src/withdrawCL.test.js | 64 --- tests/src/withdrawEL.test.js | 64 --- 25 files changed, 22 insertions(+), 1774 deletions(-) delete mode 100644 tests/cal/abis/0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270.json rename tests/cal/abis/{0x5db5235b5c7e247488784986e58019fffd98fda4.json => 0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7.json} (100%) delete mode 100644 tests/cal/abis/0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a.json delete mode 100644 tests/cal/abis/0x858646372cc42e1a627fce94aa7a7033e7cf075a.json rename tests/cal/abis/{0x8d6fd650500f82c7d978a440348e5a9b886943bf.json => 0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60.json} (100%) delete mode 100644 tests/src/batchWithdraw.test.js delete mode 100644 tests/src/batchWithdrawCL.test.js delete mode 100644 tests/src/batchWithdrawEL.test.js delete mode 100644 tests/src/deposit.test.js delete mode 100644 tests/src/lrCompleteQueuedWithdrawals.test.js delete mode 100644 tests/src/lrDelegateTo.test.js delete mode 100644 tests/src/lrDepositIntoStrategy.test.js delete mode 100644 tests/src/lrQueueWithdrawals.test.js delete mode 100644 tests/src/lrUndelegate.test.js delete mode 100644 tests/src/requestExit.test.js delete mode 100644 tests/src/withdraw.test.js delete mode 100644 tests/src/withdrawCL.test.js delete mode 100644 tests/src/withdrawEL.test.js diff --git a/tests/cal/abis/0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270.json b/tests/cal/abis/0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270.json deleted file mode 100644 index 6034431..0000000 --- a/tests/cal/abis/0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270.json +++ /dev/null @@ -1,100 +0,0 @@ -[ - { - "inputs": [], - "name": "deposit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "withdrawCLFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "withdrawELFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKeys", - "type": "bytes" - } - ], - "name": "batchWithdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKeys", - "type": "bytes" - } - ], - "name": "batchWithdrawCLFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKeys", - "type": "bytes" - } - ], - "name": "batchWithdrawELFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_publicKeys", - "type": "bytes" - } - ], - "name": "requestValidatorsExit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/tests/cal/abis/0x5db5235b5c7e247488784986e58019fffd98fda4.json b/tests/cal/abis/0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7.json similarity index 100% rename from tests/cal/abis/0x5db5235b5c7e247488784986e58019fffd98fda4.json rename to tests/cal/abis/0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7.json diff --git a/tests/cal/abis/0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a.json b/tests/cal/abis/0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a.json deleted file mode 100644 index a0d39a4..0000000 --- a/tests/cal/abis/0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "components": [ - { - "internalType": "bytes", - "name": "signature", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - } - ], - "internalType": "struct ISignatureUtils.SignatureWithExpiry", - "name": "approverSignatureAndExpiry", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "approverSalt", - "type": "bytes32" - } - ], - "name": "delegateTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "staker", - "type": "address" - } - ], - "name": "undelegate", - "outputs": [ - { - "internalType": "bytes32[]", - "name": "withdrawalRoots", - "type": "bytes32[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/tests/cal/abis/0x858646372cc42e1a627fce94aa7a7033e7cf075a.json b/tests/cal/abis/0x858646372cc42e1a627fce94aa7a7033e7cf075a.json deleted file mode 100644 index 89e1e41..0000000 --- a/tests/cal/abis/0x858646372cc42e1a627fce94aa7a7033e7cf075a.json +++ /dev/null @@ -1,145 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "strategy", - "type": "address" - }, - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "depositIntoStrategy", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "pendingWithdrawals", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "contract IStrategy[]", - "name": "strategies", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "shares", - "type": "uint256[]" - }, - { - "internalType": "address", - "name": "withdrawer", - "type": "address" - } - ], - "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", - "name": "queuedWithdrawalParams", - "type": "tuple[]" - } - ], - "name": "queueWithdrawals", - "outputs": [ - { - "internalType": "bytes32[]", - "name": "", - "type": "bytes32[]" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "staker", - "type": "address" - }, - { - "internalType": "address", - "name": "delegatedTo", - "type": "address" - }, - { - "internalType": "address", - "name": "withdrawer", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "startBlock", - "type": "uint32" - }, - { - "internalType": "contract IStrategy[]", - "name": "strategies", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "shares", - "type": "uint256[]" - } - ], - "internalType": "struct IDelegationManager.Withdrawal[]", - "name": "withdrawals", - "type": "tuple[]" - }, - { - "internalType": "contract IERC20[][]", - "name": "tokens", - "type": "address[][]" - }, - { - "internalType": "uint256[]", - "name": "middlewareTimesIndexes", - "type": "uint256[]" - }, - { - "internalType": "bool[]", - "name": "receiveAsTokens", - "type": "bool[]" - } - ], - "name": "completeQueuedWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/tests/cal/abis/0x8d6fd650500f82c7d978a440348e5a9b886943bf.json b/tests/cal/abis/0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60.json similarity index 100% rename from tests/cal/abis/0x8d6fd650500f82c7d978a440348e5a9b886943bf.json rename to tests/cal/abis/0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60.json diff --git a/tests/cal/b2c.json b/tests/cal/b2c.json index 178c27f..683e2c9 100644 --- a/tests/cal/b2c.json +++ b/tests/cal/b2c.json @@ -2,107 +2,33 @@ "chainId": 5, "contracts": [ { - "address": "0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270", - "contractName": "KilnStakingV1", - "selectors": { - "0xd0e30db0": { - "method": "deposit", - "plugin": "Kiln" - }, - "0xe99454f5": { - "method": "setWithdrawal", - "plugin": "Kiln" - }, - "0x0968f264": { - "method": "withdraw", - "plugin": "Kiln" - }, - "0x2ba03a79": { - "method": "withdrawCLFee", - "plugin": "Kiln" - }, - "0xbf509bd4": { - "method": "withdrawELFee", - "plugin": "Kiln" - }, - "0xe8a0c121": { - "method": "batchWithdraw", - "plugin": "Kiln" - }, - "0xef5e4682": { - "method": "batchWithdrawELFee", - "plugin": "Kiln" - }, - "0x0ffab6c2": { - "method": "batchWithdrawCLFee", - "plugin": "Kiln" - }, - "0xb6b06dec": { - "method": "requestValidatorsExit", - "plugin": "Kiln" - } - } - }, - { - "address": "0x5db5235b5c7e247488784986e58019fffd98fda4", - "contractName": "LedgerLiveV2", + "address": "0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7", + "contractName": "LedgerLiveCoinbasePooling", "selectors": { "0x3a4b66f1": { "method": "stake", - "plugin": "Kiln" + "plugin": "CoinbaseStaking" }, "0x721c6513": { "method": "requestExit", - "plugin": "Kiln" + "plugin": "CoinbaseStaking" }, "0xb7ba18c7": { "method": "multiClaim", - "plugin": "Kiln" + "plugin": "CoinbaseStaking" } } }, { - "address": "0x8d6fd650500f82c7d978a440348e5a9b886943bf", - "contractName": "KilnExitQueueV2", + "address": "0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60", + "contractName": "CoinbaseStakingExitQueue", "selectors": { "0xadcf1163": { "method": "claim", - "plugin": "Kiln" - } - } - }, - { - "address": "0x858646372cc42e1a627fce94aa7a7033e7cf075a", - "contractName": "EigenLayerStrategyManager", - "selectors": { - "0xe7a050aa": { - "method": "depositIntoStrategy", - "plugin": "Kiln" - }, - "0x0dd8dd02": { - "method": "queueWithdrawals", - "plugin": "Kiln" - }, - "0x33404396": { - "method": "completeQueuedWithdrawals", - "plugin": "Kiln" - } - } - }, - { - "address": "0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a", - "contractName": "EigenLayerDelegationManager", - "selectors": { - "0xeea9064b": { - "method": "delegateTo", - "plugin": "Kiln" - }, - "0xda8be864": { - "method": "undelegate", - "plugin": "Kiln" + "plugin": "CoinbaseStaking" } } } ], - "name": "Kiln" + "name": "CoinbaseStaking" } \ No newline at end of file diff --git a/tests/src/batchWithdraw.test.js b/tests/src/batchWithdraw.test.js deleted file mode 100644 index a9fa560..0000000 --- a/tests/src/batchWithdraw.test.js +++ /dev/null @@ -1,65 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] BatchWithdraw', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const pubkeys = - '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; - - const { data } = await contract.populateTransaction.batchWithdraw( - pubkeys - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_batchWithdraw', - [right_clicks, 0] - ); - - await tx; - }), - 10000 - ); -}); diff --git a/tests/src/batchWithdrawCL.test.js b/tests/src/batchWithdrawCL.test.js deleted file mode 100644 index 91094bb..0000000 --- a/tests/src/batchWithdrawCL.test.js +++ /dev/null @@ -1,65 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] BatchWithdrawCL', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const pubkeys = - '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; - - const { data } = await contract.populateTransaction.batchWithdrawCLFee( - pubkeys - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_batchWithdrawCL', - [right_clicks, 0] - ); - - await tx; - }), - 10000 - ); -}); diff --git a/tests/src/batchWithdrawEL.test.js b/tests/src/batchWithdrawEL.test.js deleted file mode 100644 index 1e68bec..0000000 --- a/tests/src/batchWithdrawEL.test.js +++ /dev/null @@ -1,65 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] BatchWithdrawEL', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const pubkeys = - '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; - - const { data } = await contract.populateTransaction.batchWithdrawELFee( - pubkeys - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_batchWithdrawEL', - [right_clicks, 0] - ); - - await tx; - }), - 15000 - ); -}); diff --git a/tests/src/claim.v2.test.js b/tests/src/claim.v2.test.js index d284671..16821f2 100644 --- a/tests/src/claim.v2.test.js +++ b/tests/src/claim.v2.test.js @@ -5,9 +5,9 @@ import { ethers } from 'ethers'; import { parseEther } from 'ethers/lib/utils'; import { ledgerService } from '@ledgerhq/hw-app-eth'; -const contractAddr = '0x8d6fd650500f82c7d978a440348e5a9b886943bf'; +const contractAddr = '0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60'; -const pluginName = 'Kiln'; +const pluginName = 'CoinbaseStaking'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/deposit.test.js b/tests/src/deposit.test.js deleted file mode 100644 index 348ac3b..0000000 --- a/tests/src/deposit.test.js +++ /dev/null @@ -1,58 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - kilnJSON, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] Stake Eth', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.deposit(); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('32'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots('.', model.name + '_deposit', [ - right_clicks, - 0, - ]); - await tx; - }), - 30000 - ); -}); diff --git a/tests/src/generate_plugin_config.js b/tests/src/generate_plugin_config.js index 50deb6a..24b5531 100644 --- a/tests/src/generate_plugin_config.js +++ b/tests/src/generate_plugin_config.js @@ -1,5 +1,3 @@ -const pluginFolder = "kiln"; - function serialize_data(pluginName, contractAddress, selector) { const len = Buffer.from([pluginName.length]); const name = Buffer.from(pluginName) diff --git a/tests/src/lrCompleteQueuedWithdrawals.test.js b/tests/src/lrCompleteQueuedWithdrawals.test.js deleted file mode 100644 index 1e10128..0000000 --- a/tests/src/lrCompleteQueuedWithdrawals.test.js +++ /dev/null @@ -1,378 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { waitForAppScreen, zemu, genericTx, nano_models } from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x858646372cc42e1a627fce94aa7a7033e7cf075a'; // strategy manager - -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] LR Complete Queued Withdrawals 2', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - // - // struct Withdrawal { - // address staker; - // address delegatedTo; - // address withdrawer; - // uint256 nonce; - // uint32 startBlock; - // address[] strategies; - // uint256[] shares; - // } - // - // function completeQueuedWithdrawals( - // Withdrawal[] calldata withdrawals, - // address[][] calldata tokens, - // uint256[] calldata middlewareTimesIndexes, - // bool[] calldata receiveAsTokens - // ) external - // - const { data } = - await contract.populateTransaction.completeQueuedWithdrawals( - [ - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 0, - startBlock: 0, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x93c4b944D05dfe6df7645A86cd2206016c51564D', // stETH - ], - shares: [parseEther('0.1'), parseEther('0.2')], - }, - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 1, - startBlock: 1, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x93c4b944D05dfe6df7645A86cd2206016c51564D', // stETH - ], - shares: [parseEther('2'), parseEther('3')], - }, - ], - [ - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', // stETH - ], - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', // stETH - ], - ], - [0, 0], - [false, false] - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 12 : 9; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrCompleteQueuedWithdrawals', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] LR Complete Queued Withdrawals Redelegate 1', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - // - // struct Withdrawal { - // address staker; - // address delegatedTo; - // address withdrawer; - // uint256 nonce; - // uint32 startBlock; - // address[] strategies; - // uint256[] shares; - // } - // - // function completeQueuedWithdrawals( - // Withdrawal[] calldata withdrawals, - // address[][] calldata tokens, - // uint256[] calldata middlewareTimesIndexes, - // bool[] calldata receiveAsTokens - // ) external - // - const { data } = - await contract.populateTransaction.completeQueuedWithdrawals( - [ - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 0, - startBlock: 0, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - ], - shares: [parseEther('0.1')], - }, - ], - [ - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - ], - ], - [0], - [false] - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 9 : 6; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrCompleteQueuedWithdrawals_redelegate_1', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] LR Complete Queued Withdrawals 1', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - // - // struct Withdrawal { - // address staker; - // address delegatedTo; - // address withdrawer; - // uint256 nonce; - // uint32 startBlock; - // address[] strategies; - // uint256[] shares; - // } - // - // function completeQueuedWithdrawals( - // Withdrawal[] calldata withdrawals, - // address[][] calldata tokens, - // uint256[] calldata middlewareTimesIndexes, - // bool[] calldata receiveAsTokens - // ) external - // - const { data } = - await contract.populateTransaction.completeQueuedWithdrawals( - [ - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 0, - startBlock: 0, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - ], - shares: [parseEther('0.1')], - }, - ], - [ - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - ], - ], - [0], - [true] - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 9 : 6; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrCompleteQueuedWithdrawals_1', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] LR Complete Queued Withdrawals 8', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - // - // struct Withdrawal { - // address staker; - // address delegatedTo; - // address withdrawer; - // uint256 nonce; - // uint32 startBlock; - // address[] strategies; - // uint256[] shares; - // } - // - // function completeQueuedWithdrawals( - // Withdrawal[] calldata withdrawals, - // address[][] calldata tokens, - // uint256[] calldata middlewareTimesIndexes, - // bool[] calldata receiveAsTokens - // ) external - // - const { data } = - await contract.populateTransaction.completeQueuedWithdrawals( - [ - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 0, - startBlock: 0, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x93c4b944D05dfe6df7645A86cd2206016c51564D', // stETH - '0x57ba429517c3473B6d34CA9aCd56c0e735b94c02', // osETH - '0x7CA911E83dabf90C90dD3De5411a10F1A6112184', // wBETH - ], - shares: [ - parseEther('0.1'), - parseEther('0.2'), - parseEther('0.3'), - parseEther('0.4'), - ], - }, - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 1, - startBlock: 1, - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x93c4b944D05dfe6df7645A86cd2206016c51564D', // stETH - '0xae78736Cd615f374D3085123A210448E74Fc6393', // UNKNOWN - ], - shares: [parseEther('2'), parseEther('3'), parseEther('4')], - }, - { - staker: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - delegatedTo: '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - nonce: 2, - startBlock: 1, - strategies: [ - '0xa4C637e0F704745D182e4D38cAb7E7485321d059', // OETH - ], - shares: [parseEther('17')], - }, - ], - [ - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', // stETH - '0xf1C9acDc66974dFB6dEcB12aA385b9cD01190E38', // osETH - '0xa2E3356610840701BDf5611a53974510Ae27E2e1', // wBETH - ], - [ - '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704', // cbETH - '0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84', // stETH - '0xae78736Cd615f374D3085123A210448E74Fc6393', // rETH - ], - [ - '0x856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3', // OETH - ], - ], - [0, 0, 1], - [false, true, true] - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 16 : 13; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrCompleteQueuedWithdrawals_8', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); -}); diff --git a/tests/src/lrDelegateTo.test.js b/tests/src/lrDelegateTo.test.js deleted file mode 100644 index 4fb91bc..0000000 --- a/tests/src/lrDelegateTo.test.js +++ /dev/null @@ -1,110 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - kilnJSON, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a'; // delegation manager - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] LR Delegate To - is Kiln', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.delegateTo( - '0x1f8C8b1d78d01bCc42ebdd34Fae60181bD697662', // kiln operator - { - signature: '0x1111111111111111', - expiry: 42424242, - }, - ethers.utils.formatBytes32String('salt') - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 5 : 5; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_delegate_to_is_kiln', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] LR Delegate To - is NOT Kiln', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.delegateTo( - '0x645a845f80576a25f1b412330a108780f6c4573d', // not kiln operator - { - signature: '0x1111111111111111', - expiry: 42424242424242, - }, - ethers.utils.formatBytes32String('salt') - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 7 : 5; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_delegate_to_is_not_kiln', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); -}); diff --git a/tests/src/lrDepositIntoStrategy.test.js b/tests/src/lrDepositIntoStrategy.test.js deleted file mode 100644 index 3491634..0000000 --- a/tests/src/lrDepositIntoStrategy.test.js +++ /dev/null @@ -1,143 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - kilnJSON, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x858646372cc42e1a627fce94aa7a7033e7cf075a'; // strategy manager - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); -const right_clicks = 6; - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] LR Deposit Into Strategy Normal', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.depositIntoStrategy( - '0x9d7eD45EE2E8FC5482fa2428f15C971e6369011d', // ETHx strat - '0xA35b1B31Ce002FBF2058D22F30f95D405200A15b', // ETHx erc20 - '420000000000000' - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrDepositIntoStrategyNormal', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] Deposit Into Strategy Unknown strategy', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.depositIntoStrategy( - '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270', // unknown strat - '0xac3E018457B222d93114458476f3E3416Abbe38F', // sfrxETH erc20 - '420000000000000' - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrDepositIntoStrategyUnknownStrategy', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); - - test( - '[Nano ' + model.letter + '] Deposit Into Strategy Unknown erc20', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.depositIntoStrategy( - '0x298aFB19A105D59E74658C4C334Ff360BadE6dd2', // mETH strategy - '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270', // unknown erc20 - '420000000000000' - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrDepositIntoStrategyUnknownERC20', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); -}); diff --git a/tests/src/lrQueueWithdrawals.test.js b/tests/src/lrQueueWithdrawals.test.js deleted file mode 100644 index 5391986..0000000 --- a/tests/src/lrQueueWithdrawals.test.js +++ /dev/null @@ -1,171 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { waitForAppScreen, zemu, genericTx, nano_models } from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x858646372cc42e1a627fce94aa7a7033e7cf075a'; // strategy manager - -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] LR Queue Withdrawals 1-2 dimension', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.queueWithdrawals([ - { - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x13760F50a9d7377e4F20CB8CF9e4c26586c658ff', // ankrETH - ], - shares: [parseEther('0.1'), parseEther('0.2')], - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - }, - ]); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 9 : 7; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrQueueWithdrawals_1_2_dimension', - [right_clicks, 0] - ); - await tx; - }), - 10000 - ); - - test( - '[Nano ' + model.letter + '] LR Queue Withdrawals 2-3 dimension', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.queueWithdrawals([ - { - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0x13760F50a9d7377e4F20CB8CF9e4c26586c658ff', // ankrETH - '0x57ba429517c3473B6d34CA9aCd56c0e735b94c02', // osETH - ], - shares: [parseEther('0.1'), parseEther('0.2'), parseEther('0.3')], - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - }, - { - strategies: [ - '0x298aFB19A105D59E74658C4C334Ff360BadE6dd2', // mETH - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0xa4C637e0F704745D182e4D38cAb7E7485321d059', // OETH - ], - shares: [parseEther('0.5'), parseEther('0.1'), parseEther('0.2')], - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - }, - ]); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 13 : 11; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrQueueWithdrawals_2_3_dimension', - [right_clicks, 0] - ); - await tx; - }), - 10000 - ); - - test( - '[Nano ' + model.letter + '] LR Queue Withdrawals unknown strategy', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.queueWithdrawals([ - { - strategies: [ - '0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc', // cbETH - '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', // unkwown strategy - '0x57ba429517c3473B6d34CA9aCd56c0e735b94c02', // osETH - ], - shares: [parseEther('0.1'), parseEther('0.2'), parseEther('0.3')], - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - }, - { - strategies: [ - '0x298aFB19A105D59E74658C4C334Ff360BadE6dd2', // mETH - '0xa4C637e0F704745D182e4D38cAb7E7485321d059', // OETH - '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', // unkwown strategy - ], - shares: [parseEther('0.5'), parseEther('0.1'), parseEther('0.2')], - withdrawer: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', - }, - ]); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 13 : 11; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lrQueueWithdrawals_2_3_dimension_with_unknowns', - [right_clicks, 0] - ); - await tx; - }), - 10000 - ); -}); diff --git a/tests/src/lrUndelegate.test.js b/tests/src/lrUndelegate.test.js deleted file mode 100644 index 18bdda8..0000000 --- a/tests/src/lrUndelegate.test.js +++ /dev/null @@ -1,61 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - kilnJSON, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x39053d51b77dc0d36036fc1fcc8cb819df8ef37a'; // delegation manager - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] LR Undelegate', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const { data } = await contract.populateTransaction.undelegate( - '0x645a845f80576a25f1b412330a108780f6c4573d' - ); - - let unsignedTx = genericTx; - - unsignedTx.to = contractAddr; - unsignedTx.data = data; - unsignedTx.value = parseEther('0'); - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = model.letter === 'S' ? 4 : 4; - - await waitForAppScreen(sim); - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_lr_undelegate', - [right_clicks, 0] - ); - await tx; - }), - 30000 - ); -}); diff --git a/tests/src/multiClaim.v2.test.js b/tests/src/multiClaim.v2.test.js index dec6373..df04851 100644 --- a/tests/src/multiClaim.v2.test.js +++ b/tests/src/multiClaim.v2.test.js @@ -5,9 +5,9 @@ import { ethers } from 'ethers'; import { parseEther } from 'ethers/lib/utils'; import { ledgerService } from '@ledgerhq/hw-app-eth'; -const contractAddr = '0x5db5235b5c7e247488784986e58019fffd98fda4'; +const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'Kiln'; +const pluginName = 'CoinbaseStaking'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); @@ -18,7 +18,7 @@ nano_models.forEach(function (model) { const contract = new ethers.Contract(contractAddr, abi); const { data } = await contract.populateTransaction.multiClaim( - ['0x5db5235b5c7e247488784986e58019fffd98fda4'], + ['0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'], [ [42, 47], [150, 2], diff --git a/tests/src/requestExit.test.js b/tests/src/requestExit.test.js deleted file mode 100644 index 4b1ad9c..0000000 --- a/tests/src/requestExit.test.js +++ /dev/null @@ -1,65 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] RequestValidatorsExit', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const pubkeys = - '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; - - const { data } = await contract.populateTransaction.requestValidatorsExit( - pubkeys - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots( - '.', - model.name + '_requestValidatorsExit', - [right_clicks, 0] - ); - - await tx; - }), - 15000 - ); -}); diff --git a/tests/src/requestExit.v2.test.js b/tests/src/requestExit.v2.test.js index 6d75922..8af6fa6 100644 --- a/tests/src/requestExit.v2.test.js +++ b/tests/src/requestExit.v2.test.js @@ -5,9 +5,9 @@ import { ethers } from 'ethers'; import { parseEther } from 'ethers/lib/utils'; import { ledgerService } from '@ledgerhq/hw-app-eth'; -const contractAddr = '0x5db5235b5c7e247488784986e58019fffd98fda4'; +const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'Kiln'; +const pluginName = 'CoinbaseStaking'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/stake.v2.test.js b/tests/src/stake.v2.test.js index 86465b8..76a4235 100644 --- a/tests/src/stake.v2.test.js +++ b/tests/src/stake.v2.test.js @@ -2,7 +2,7 @@ import 'core-js/stable'; import 'regenerator-runtime/runtime'; import { waitForAppScreen, - kilnJSON, + CoinbaseStakingJSON, zemu, genericTx, nano_models, @@ -13,9 +13,9 @@ import { ethers } from 'ethers'; import { parseEther, parseUnits } from 'ethers/lib/utils'; import { ledgerService } from '@ledgerhq/hw-app-eth'; -const contractAddr = '0x5db5235b5c7e247488784986e58019fffd98fda4'; +const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'Kiln'; +const pluginName = 'CoinbaseStaking'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/test.fixture.js b/tests/src/test.fixture.js index 8f3168e..5e8653d 100644 --- a/tests/src/test.fixture.js +++ b/tests/src/test.fixture.js @@ -43,7 +43,7 @@ const nano_models: DeviceModel[] = [ }, ]; -const kilnJSON = generate_plugin_config(); +const coinbaseStakingJSON = generate_plugin_config(); const SPECULOS_ADDRESS = '0xFE984369CE3919AA7BB4F431082D027B4F8ED70C'; const RANDOM_ADDRESS = '0xaaaabbbbccccddddeeeeffffgggghhhhiiiijjjj'; @@ -66,7 +66,7 @@ function zemu(device, func) { let elf_path; let lib_elf; elf_path = device.eth_path; - lib_elf = { Kiln: device.path }; + lib_elf = { CoinbaseStaking: device.path }; const sim = new Zemu(elf_path, lib_elf); try { await sim.start({ ...sim_options_nano, model: device.name }); @@ -74,7 +74,7 @@ function zemu(device, func) { const eth = new Eth(transport); eth.setLoadConfig({ baseURL: null, - extraPlugins: kilnJSON, + extraPlugins: coinbaseStakingJSON, }); await func(sim, eth); } finally { diff --git a/tests/src/withdraw.test.js b/tests/src/withdraw.test.js deleted file mode 100644 index f7b6576..0000000 --- a/tests/src/withdraw.test.js +++ /dev/null @@ -1,66 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] Withdraw', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const validatorAddress = - '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; - - const { data } = await contract.populateTransaction.withdraw( - validatorAddress - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - console.log(eth.loadConfig); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - console.log(resolution); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots('.', model.name + '_withdraw', [ - right_clicks, - 0, - ]); - - await tx; - }), - 10000 - ); -}); diff --git a/tests/src/withdrawCL.test.js b/tests/src/withdrawCL.test.js deleted file mode 100644 index b770f9e..0000000 --- a/tests/src/withdrawCL.test.js +++ /dev/null @@ -1,64 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] Withdraw CL', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const validatorAddress = - '0x8905410ae09a0b89d6af7296e2d0ae19adb672744f600d8da9b6293259641aa6e316bee60936cc1459b3f8697343d0f0'; - - const { data } = await contract.populateTransaction.withdrawCLFee( - validatorAddress - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots('.', model.name + '_withdrawCL', [ - right_clicks, - 0, - ]); - - await tx; - }), - 10000 - ); -}); diff --git a/tests/src/withdrawEL.test.js b/tests/src/withdrawEL.test.js deleted file mode 100644 index 9a0de19..0000000 --- a/tests/src/withdrawEL.test.js +++ /dev/null @@ -1,64 +0,0 @@ -import 'core-js/stable'; -import 'regenerator-runtime/runtime'; -import { - waitForAppScreen, - zemu, - genericTx, - nano_models, - SPECULOS_ADDRESS, - txFromEtherscan, -} from './test.fixture'; -import { ethers } from 'ethers'; -import { parseEther, parseUnits } from 'ethers/lib/utils'; -import { ledgerService } from '@ledgerhq/hw-app-eth'; - -const contractAddr = '0x1e68238ce926dec62b3fbc99ab06eb1d85ce0270'; - -const pluginName = 'Kiln'; -const abi_path = `../cal/abis/${contractAddr}.json`; -const abi = require(abi_path); - -nano_models.forEach(function (model) { - test( - '[Nano ' + model.letter + '] Withdraw EL', - zemu(model, async (sim, eth) => { - const contract = new ethers.Contract(contractAddr, abi); - - const validatorAddress = - '0x8905410ae09a0b89d6af7296e2d0ae19adb672744f600d8da9b6293259641aa6e316bee60936cc1459b3f8697343d0f0'; - - const { data } = await contract.populateTransaction.withdrawELFee( - validatorAddress - ); - - let unsignedTx = genericTx; - - unsignedTx.value = 0; - unsignedTx.to = contractAddr; - unsignedTx.data = data; - - const serializedTx = ethers.utils - .serializeTransaction(unsignedTx) - .slice(2); - const resolution = await ledgerService.resolveTransaction( - serializedTx, - eth.loadConfig, - { - externalPlugins: true, - } - ); - const tx = eth.signTransaction("44'/60'/0'/0", serializedTx, resolution); - const right_clicks = 4; - - await waitForAppScreen(sim); - - await sim.navigateAndCompareSnapshots('.', model.name + '_withdrawEL', [ - right_clicks, - 0, - ]); - - await tx; - }), - 15000 - ); -}); From 9f61ae0b5c0eb454b7c9ff06cc61101eec08b992 Mon Sep 17 00:00:00 2001 From: "pwnh4 (@loicttn)" Date: Fri, 20 Sep 2024 11:41:32 +0200 Subject: [PATCH 4/9] fix(tests/snapshots): reference snapshots --- tests/snapshots/nanos_batchWithdraw/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_batchWithdraw/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_batchWithdraw/00002.png | Bin 420 -> 0 bytes tests/snapshots/nanos_batchWithdraw/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_batchWithdraw/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_batchWithdraw/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00002.png | Bin 405 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_batchWithdrawCL/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00002.png | Bin 392 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_batchWithdrawEL/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_claimv2/00001.png | Bin 367 -> 424 bytes .../nanos_delegate_to_is_kiln/00000.png | Bin 374 -> 0 bytes .../nanos_delegate_to_is_kiln/00001.png | Bin 334 -> 0 bytes .../nanos_delegate_to_is_kiln/00002.png | Bin 397 -> 0 bytes .../nanos_delegate_to_is_kiln/00003.png | Bin 308 -> 0 bytes .../nanos_delegate_to_is_kiln/00004.png | Bin 358 -> 0 bytes .../nanos_delegate_to_is_kiln/00005.png | Bin 414 -> 0 bytes .../nanos_delegate_to_is_kiln/00006.png | Bin 349 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00000.png | Bin 374 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00001.png | Bin 334 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00002.png | Bin 397 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00003.png | Bin 496 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00004.png | Bin 485 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00005.png | Bin 401 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00006.png | Bin 358 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00007.png | Bin 414 -> 0 bytes .../nanos_delegate_to_is_not_kiln/00008.png | Bin 349 -> 0 bytes tests/snapshots/nanos_deposit/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_deposit/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_deposit/00002.png | Bin 311 -> 0 bytes tests/snapshots/nanos_deposit/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_deposit/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_deposit/00005.png | Bin 349 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00000.png | Bin 374 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00001.png | Bin 334 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00002.png | Bin 413 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00003.png | Bin 440 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00004.png | Bin 509 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00005.png | Bin 497 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00006.png | Bin 438 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00007.png | Bin 349 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00008.png | Bin 357 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00009.png | Bin 349 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00010.png | Bin 357 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00011.png | Bin 358 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00012.png | Bin 414 -> 0 bytes .../nanos_lrCompleteQueuedWithdrawals/00013.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 413 -> 0 bytes .../00003.png | Bin 440 -> 0 bytes .../00004.png | Bin 509 -> 0 bytes .../00005.png | Bin 497 -> 0 bytes .../00006.png | Bin 438 -> 0 bytes .../00007.png | Bin 319 -> 0 bytes .../00008.png | Bin 358 -> 0 bytes .../00009.png | Bin 414 -> 0 bytes .../00010.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 413 -> 0 bytes .../00003.png | Bin 440 -> 0 bytes .../00004.png | Bin 509 -> 0 bytes .../00005.png | Bin 497 -> 0 bytes .../00006.png | Bin 438 -> 0 bytes .../00007.png | Bin 349 -> 0 bytes .../00008.png | Bin 357 -> 0 bytes .../00009.png | Bin 356 -> 0 bytes .../00010.png | Bin 360 -> 0 bytes .../00011.png | Bin 319 -> 0 bytes .../00012.png | Bin 333 -> 0 bytes .../00013.png | Bin 367 -> 0 bytes .../00014.png | Bin 317 -> 0 bytes .../00015.png | Bin 358 -> 0 bytes .../00016.png | Bin 414 -> 0 bytes .../00017.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 413 -> 0 bytes .../00003.png | Bin 440 -> 0 bytes .../00004.png | Bin 509 -> 0 bytes .../00005.png | Bin 497 -> 0 bytes .../00006.png | Bin 438 -> 0 bytes .../00007.png | Bin 349 -> 0 bytes .../00008.png | Bin 358 -> 0 bytes .../00009.png | Bin 414 -> 0 bytes .../00010.png | Bin 349 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00000.png | Bin 374 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00001.png | Bin 334 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00002.png | Bin 493 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00003.png | Bin 337 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00004.png | Bin 355 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00005.png | Bin 358 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00006.png | Bin 414 -> 0 bytes .../nanos_lrDepositIntoStrategyNormal/00007.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 493 -> 0 bytes .../00003.png | Bin 341 -> 0 bytes .../00004.png | Bin 383 -> 0 bytes .../00005.png | Bin 358 -> 0 bytes .../00006.png | Bin 414 -> 0 bytes .../00007.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 493 -> 0 bytes .../00003.png | Bin 396 -> 0 bytes .../00004.png | Bin 382 -> 0 bytes .../00005.png | Bin 358 -> 0 bytes .../00006.png | Bin 414 -> 0 bytes .../00007.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 432 -> 0 bytes .../00003.png | Bin 509 -> 0 bytes .../00004.png | Bin 497 -> 0 bytes .../00005.png | Bin 438 -> 0 bytes .../00006.png | Bin 349 -> 0 bytes .../00007.png | Bin 368 -> 0 bytes .../00008.png | Bin 358 -> 0 bytes .../00009.png | Bin 414 -> 0 bytes .../00010.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 432 -> 0 bytes .../00003.png | Bin 509 -> 0 bytes .../00004.png | Bin 497 -> 0 bytes .../00005.png | Bin 438 -> 0 bytes .../00006.png | Bin 349 -> 0 bytes .../00007.png | Bin 368 -> 0 bytes .../00008.png | Bin 353 -> 0 bytes .../00009.png | Bin 341 -> 0 bytes .../00010.png | Bin 349 -> 0 bytes .../00011.png | Bin 345 -> 0 bytes .../00012.png | Bin 358 -> 0 bytes .../00013.png | Bin 414 -> 0 bytes .../00014.png | Bin 349 -> 0 bytes .../00000.png | Bin 374 -> 0 bytes .../00001.png | Bin 334 -> 0 bytes .../00002.png | Bin 432 -> 0 bytes .../00003.png | Bin 509 -> 0 bytes .../00004.png | Bin 497 -> 0 bytes .../00005.png | Bin 438 -> 0 bytes .../00006.png | Bin 349 -> 0 bytes .../00007.png | Bin 396 -> 0 bytes .../00008.png | Bin 353 -> 0 bytes .../00009.png | Bin 341 -> 0 bytes .../00010.png | Bin 345 -> 0 bytes .../00011.png | Bin 396 -> 0 bytes .../00012.png | Bin 358 -> 0 bytes .../00013.png | Bin 414 -> 0 bytes .../00014.png | Bin 349 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00001.png | Bin 334 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00002.png | Bin 401 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_lr_undelegate/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_multiClaimv2/00001.png | Bin 367 -> 424 bytes tests/snapshots/nanos_requestExitv2/00001.png | Bin 367 -> 424 bytes .../nanos_requestValidatorsExit/00000.png | Bin 374 -> 0 bytes .../nanos_requestValidatorsExit/00001.png | Bin 378 -> 0 bytes .../nanos_requestValidatorsExit/00002.png | Bin 406 -> 0 bytes .../nanos_requestValidatorsExit/00003.png | Bin 358 -> 0 bytes .../nanos_requestValidatorsExit/00004.png | Bin 414 -> 0 bytes .../nanos_requestValidatorsExit/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_stakev2/00001.png | Bin 367 -> 424 bytes tests/snapshots/nanos_withdraw/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_withdraw/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_withdraw/00002.png | Bin 420 -> 0 bytes tests/snapshots/nanos_withdraw/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_withdraw/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_withdraw/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_withdrawCL/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_withdrawCL/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_withdrawCL/00002.png | Bin 405 -> 0 bytes tests/snapshots/nanos_withdrawCL/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_withdrawCL/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_withdrawCL/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanos_withdrawEL/00000.png | Bin 374 -> 0 bytes tests/snapshots/nanos_withdrawEL/00001.png | Bin 378 -> 0 bytes tests/snapshots/nanos_withdrawEL/00002.png | Bin 392 -> 0 bytes tests/snapshots/nanos_withdrawEL/00003.png | Bin 358 -> 0 bytes tests/snapshots/nanos_withdrawEL/00004.png | Bin 414 -> 0 bytes tests/snapshots/nanos_withdrawEL/00005.png | Bin 349 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00002.png | Bin 471 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_batchWithdraw/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00002.png | Bin 457 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_batchWithdrawCL/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00002.png | Bin 437 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_batchWithdrawEL/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_claimv2/00001.png | Bin 402 -> 535 bytes .../nanox_delegate_to_is_kiln/00000.png | Bin 414 -> 0 bytes .../nanox_delegate_to_is_kiln/00001.png | Bin 372 -> 0 bytes .../nanox_delegate_to_is_kiln/00002.png | Bin 467 -> 0 bytes .../nanox_delegate_to_is_kiln/00003.png | Bin 355 -> 0 bytes .../nanox_delegate_to_is_kiln/00004.png | Bin 415 -> 0 bytes .../nanox_delegate_to_is_kiln/00005.png | Bin 472 -> 0 bytes .../nanox_delegate_to_is_kiln/00006.png | Bin 381 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00000.png | Bin 414 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00001.png | Bin 372 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00002.png | Bin 467 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00003.png | Bin 776 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00004.png | Bin 415 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00005.png | Bin 472 -> 0 bytes .../nanox_delegate_to_is_not_kiln/00006.png | Bin 381 -> 0 bytes tests/snapshots/nanox_deposit/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_deposit/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_deposit/00002.png | Bin 348 -> 0 bytes tests/snapshots/nanox_deposit/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_deposit/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_deposit/00005.png | Bin 381 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00000.png | Bin 414 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00001.png | Bin 372 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00002.png | Bin 563 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00003.png | Bin 811 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00004.png | Bin 417 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00005.png | Bin 425 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00006.png | Bin 417 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00007.png | Bin 425 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00008.png | Bin 415 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00009.png | Bin 472 -> 0 bytes .../nanox_lrCompleteQueuedWithdrawals/00010.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 563 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 387 -> 0 bytes .../00005.png | Bin 415 -> 0 bytes .../00006.png | Bin 472 -> 0 bytes .../00007.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 563 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 417 -> 0 bytes .../00005.png | Bin 425 -> 0 bytes .../00006.png | Bin 424 -> 0 bytes .../00007.png | Bin 429 -> 0 bytes .../00008.png | Bin 387 -> 0 bytes .../00009.png | Bin 386 -> 0 bytes .../00010.png | Bin 419 -> 0 bytes .../00011.png | Bin 371 -> 0 bytes .../00012.png | Bin 415 -> 0 bytes .../00013.png | Bin 472 -> 0 bytes .../00014.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 563 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 417 -> 0 bytes .../00005.png | Bin 415 -> 0 bytes .../00006.png | Bin 472 -> 0 bytes .../00007.png | Bin 381 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00000.png | Bin 414 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00001.png | Bin 372 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00002.png | Bin 573 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00003.png | Bin 390 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00004.png | Bin 410 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00005.png | Bin 415 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00006.png | Bin 472 -> 0 bytes .../nanox_lrDepositIntoStrategyNormal/00007.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 573 -> 0 bytes .../00003.png | Bin 392 -> 0 bytes .../00004.png | Bin 447 -> 0 bytes .../00005.png | Bin 415 -> 0 bytes .../00006.png | Bin 472 -> 0 bytes .../00007.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 573 -> 0 bytes .../00003.png | Bin 445 -> 0 bytes .../00004.png | Bin 442 -> 0 bytes .../00005.png | Bin 415 -> 0 bytes .../00006.png | Bin 472 -> 0 bytes .../00007.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 507 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 402 -> 0 bytes .../00005.png | Bin 418 -> 0 bytes .../00006.png | Bin 415 -> 0 bytes .../00007.png | Bin 472 -> 0 bytes .../00008.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 507 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 402 -> 0 bytes .../00005.png | Bin 418 -> 0 bytes .../00006.png | Bin 410 -> 0 bytes .../00007.png | Bin 392 -> 0 bytes .../00008.png | Bin 402 -> 0 bytes .../00009.png | Bin 393 -> 0 bytes .../00010.png | Bin 415 -> 0 bytes .../00011.png | Bin 472 -> 0 bytes .../00012.png | Bin 381 -> 0 bytes .../00000.png | Bin 414 -> 0 bytes .../00001.png | Bin 372 -> 0 bytes .../00002.png | Bin 507 -> 0 bytes .../00003.png | Bin 811 -> 0 bytes .../00004.png | Bin 402 -> 0 bytes .../00005.png | Bin 445 -> 0 bytes .../00006.png | Bin 410 -> 0 bytes .../00007.png | Bin 392 -> 0 bytes .../00008.png | Bin 393 -> 0 bytes .../00009.png | Bin 445 -> 0 bytes .../00010.png | Bin 415 -> 0 bytes .../00011.png | Bin 472 -> 0 bytes .../00012.png | Bin 381 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00001.png | Bin 372 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00002.png | Bin 476 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_lr_undelegate/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_multiClaimv2/00001.png | Bin 402 -> 535 bytes tests/snapshots/nanox_requestExitv2/00001.png | Bin 402 -> 535 bytes .../nanox_requestValidatorsExit/00000.png | Bin 414 -> 0 bytes .../nanox_requestValidatorsExit/00001.png | Bin 425 -> 0 bytes .../nanox_requestValidatorsExit/00002.png | Bin 455 -> 0 bytes .../nanox_requestValidatorsExit/00003.png | Bin 415 -> 0 bytes .../nanox_requestValidatorsExit/00004.png | Bin 472 -> 0 bytes .../nanox_requestValidatorsExit/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_stakev2/00001.png | Bin 402 -> 535 bytes tests/snapshots/nanox_withdraw/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_withdraw/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_withdraw/00002.png | Bin 471 -> 0 bytes tests/snapshots/nanox_withdraw/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_withdraw/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_withdraw/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_withdrawCL/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_withdrawCL/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_withdrawCL/00002.png | Bin 457 -> 0 bytes tests/snapshots/nanox_withdrawCL/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_withdrawCL/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_withdrawCL/00005.png | Bin 381 -> 0 bytes tests/snapshots/nanox_withdrawEL/00000.png | Bin 414 -> 0 bytes tests/snapshots/nanox_withdrawEL/00001.png | Bin 425 -> 0 bytes tests/snapshots/nanox_withdrawEL/00002.png | Bin 437 -> 0 bytes tests/snapshots/nanox_withdrawEL/00003.png | Bin 415 -> 0 bytes tests/snapshots/nanox_withdrawEL/00004.png | Bin 472 -> 0 bytes tests/snapshots/nanox_withdrawEL/00005.png | Bin 381 -> 0 bytes 366 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/snapshots/nanos_batchWithdraw/00000.png delete mode 100644 tests/snapshots/nanos_batchWithdraw/00001.png delete mode 100644 tests/snapshots/nanos_batchWithdraw/00002.png delete mode 100644 tests/snapshots/nanos_batchWithdraw/00003.png delete mode 100644 tests/snapshots/nanos_batchWithdraw/00004.png delete mode 100644 tests/snapshots/nanos_batchWithdraw/00005.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00000.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00001.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00002.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00003.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00004.png delete mode 100644 tests/snapshots/nanos_batchWithdrawCL/00005.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00000.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00001.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00002.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00003.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00004.png delete mode 100644 tests/snapshots/nanos_batchWithdrawEL/00005.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00000.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00001.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00002.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00003.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00004.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00005.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_kiln/00006.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00000.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00001.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00002.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00003.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00004.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00005.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00006.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00007.png delete mode 100644 tests/snapshots/nanos_delegate_to_is_not_kiln/00008.png delete mode 100644 tests/snapshots/nanos_deposit/00000.png delete mode 100644 tests/snapshots/nanos_deposit/00001.png delete mode 100644 tests/snapshots/nanos_deposit/00002.png delete mode 100644 tests/snapshots/nanos_deposit/00003.png delete mode 100644 tests/snapshots/nanos_deposit/00004.png delete mode 100644 tests/snapshots/nanos_deposit/00005.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00000.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00001.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00002.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00003.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00004.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00005.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00006.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00007.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00008.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00009.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00010.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00011.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00012.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00013.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00000.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00001.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00002.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00003.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00004.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00005.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00006.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00007.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00008.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00009.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00010.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00000.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00001.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00002.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00003.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00004.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00005.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00006.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00007.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00008.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00009.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00010.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00011.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00012.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00013.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00014.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00015.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00016.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00017.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00000.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00001.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00002.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00003.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00004.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00005.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00006.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00007.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00008.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00009.png delete mode 100644 tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00010.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00000.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00001.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00002.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00003.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00004.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00005.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00006.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyNormal/00007.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00000.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00001.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00002.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00003.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00004.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00005.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00006.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00007.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00000.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00001.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00002.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00003.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00004.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00005.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00006.png delete mode 100644 tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00007.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00000.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00001.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00002.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00003.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00004.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00005.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00006.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00007.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00008.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00009.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00010.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00000.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00001.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00002.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00003.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00004.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00005.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00006.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00007.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00008.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00009.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00010.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00011.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00012.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00013.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00014.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00001.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00002.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00003.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00004.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00005.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00008.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00009.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00010.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00012.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00013.png delete mode 100644 tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00014.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00000.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00001.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00002.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00003.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00004.png delete mode 100644 tests/snapshots/nanos_lr_undelegate/00005.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00000.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00001.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00002.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00003.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00004.png delete mode 100644 tests/snapshots/nanos_requestValidatorsExit/00005.png delete mode 100644 tests/snapshots/nanos_withdraw/00000.png delete mode 100644 tests/snapshots/nanos_withdraw/00001.png delete mode 100644 tests/snapshots/nanos_withdraw/00002.png delete mode 100644 tests/snapshots/nanos_withdraw/00003.png delete mode 100644 tests/snapshots/nanos_withdraw/00004.png delete mode 100644 tests/snapshots/nanos_withdraw/00005.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00000.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00001.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00002.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00003.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00004.png delete mode 100644 tests/snapshots/nanos_withdrawCL/00005.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00000.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00001.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00002.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00003.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00004.png delete mode 100644 tests/snapshots/nanos_withdrawEL/00005.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00000.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00001.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00002.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00003.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00004.png delete mode 100644 tests/snapshots/nanox_batchWithdraw/00005.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00000.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00001.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00002.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00003.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00004.png delete mode 100644 tests/snapshots/nanox_batchWithdrawCL/00005.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00000.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00001.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00002.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00003.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00004.png delete mode 100644 tests/snapshots/nanox_batchWithdrawEL/00005.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00000.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00001.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00002.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00003.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00004.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00005.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_kiln/00006.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00000.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00001.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00002.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00003.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00004.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00005.png delete mode 100644 tests/snapshots/nanox_delegate_to_is_not_kiln/00006.png delete mode 100644 tests/snapshots/nanox_deposit/00000.png delete mode 100644 tests/snapshots/nanox_deposit/00001.png delete mode 100644 tests/snapshots/nanox_deposit/00002.png delete mode 100644 tests/snapshots/nanox_deposit/00003.png delete mode 100644 tests/snapshots/nanox_deposit/00004.png delete mode 100644 tests/snapshots/nanox_deposit/00005.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00000.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00001.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00002.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00003.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00004.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00005.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00006.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00007.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00008.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00009.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00010.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00000.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00001.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00002.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00003.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00004.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00005.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00006.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00007.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00000.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00001.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00002.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00003.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00004.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00005.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00006.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00007.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00008.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00009.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00010.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00011.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00012.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00013.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00014.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00000.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00001.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00002.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00003.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00004.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00005.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00006.png delete mode 100644 tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00007.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00000.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00001.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00002.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00003.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00004.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00005.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00006.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyNormal/00007.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00000.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00001.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00002.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00003.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00004.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00005.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00006.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00007.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00000.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00001.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00002.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00003.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00004.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00005.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00006.png delete mode 100644 tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00007.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00000.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00001.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00002.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00003.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00004.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00005.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00006.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00007.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00008.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00000.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00001.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00002.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00003.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00004.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00005.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00006.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00007.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00008.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00009.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00010.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00011.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00012.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00001.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00002.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00003.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00004.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00005.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00008.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00009.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00010.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png delete mode 100644 tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00012.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00000.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00001.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00002.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00003.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00004.png delete mode 100644 tests/snapshots/nanox_lr_undelegate/00005.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00000.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00001.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00002.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00003.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00004.png delete mode 100644 tests/snapshots/nanox_requestValidatorsExit/00005.png delete mode 100644 tests/snapshots/nanox_withdraw/00000.png delete mode 100644 tests/snapshots/nanox_withdraw/00001.png delete mode 100644 tests/snapshots/nanox_withdraw/00002.png delete mode 100644 tests/snapshots/nanox_withdraw/00003.png delete mode 100644 tests/snapshots/nanox_withdraw/00004.png delete mode 100644 tests/snapshots/nanox_withdraw/00005.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00000.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00001.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00002.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00003.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00004.png delete mode 100644 tests/snapshots/nanox_withdrawCL/00005.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00000.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00001.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00002.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00003.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00004.png delete mode 100644 tests/snapshots/nanox_withdrawEL/00005.png diff --git a/tests/snapshots/nanos_batchWithdraw/00000.png b/tests/snapshots/nanos_batchWithdraw/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_batchWithdraw/00001.png b/tests/snapshots/nanos_batchWithdraw/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_batchWithdraw/00002.png b/tests/snapshots/nanos_batchWithdraw/00002.png deleted file mode 100644 index 21f4a7745c89080999c909a45f267d711c18886f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)|ENWIpp_sobExuqhT{3)}a6FrD9pd2ADEO2C(~4uThzr zb36~`SOB(AWT_J?HOYAEHF(($e<7&m?Ab%F;Hl7Q#39U)0Tf>vjnK)Ji^W@K0Ks}k z{5c7Eq5c4(B18RQFj7PP!C(z6K^3y(Dl&0Hv)->q8ktRy-#!Q2PRmcfeY;u4B#j`8 z+o}5yllPJDS<)^-81)r|80wNX{K)dJsh{~E*!_~U9%I{3@If`bgqR>cdDf4~Y7}AW z1yMCMH&YxF)L%AcS--#Y@R(K5v0bsU^MYtpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_batchWithdraw/00005.png b/tests/snapshots/nanos_batchWithdraw/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_batchWithdrawCL/00000.png b/tests/snapshots/nanos_batchWithdrawCL/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_batchWithdrawCL/00001.png b/tests/snapshots/nanos_batchWithdrawCL/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_batchWithdrawCL/00002.png b/tests/snapshots/nanos_batchWithdrawCL/00002.png deleted file mode 100644 index 58bde19c5fdd4d711f23981d37742b80c7e9d97e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qs3Y4h3ut0RRBNQ<AskMYlpHk3;aW11LvnG(u-rPO`V&0R-!e z_;WJyLj3`VB18RQFj7PP!C(z6!6{@(mwR|!_LqMQgY4q^F1l}cindW9#+Ea**kN1$ z2{YPYNZ8PJslM8ZTtsEI^gu7w9Gg(t9;DQmOf*C_vl2GxfV1Ayfz{%p6+ttuVpg?H zk;m3JSO9v4Xe86LGmBcDntp1Bqoz?e^m=O4H6}H)t~|Mazq-W^*kav2hLUz>-Nf__ zFWJzqf-d*py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_batchWithdrawCL/00005.png b/tests/snapshots/nanos_batchWithdrawCL/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_batchWithdrawEL/00000.png b/tests/snapshots/nanos_batchWithdrawEL/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_batchWithdrawEL/00001.png b/tests/snapshots/nanos_batchWithdrawEL/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_batchWithdrawEL/00002.png b/tests/snapshots/nanos_batchWithdrawEL/00002.png deleted file mode 100644 index 9e8b87747c14fd5186e5cfa55f9d066465fc432f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)>F64>UIs94nj~-WyM_68pKIoag%W{MO5Hv4h+hw(= zU#_q{Ql)c!(gBjGG=6=fx9i;h+-A^A9NmJ38uV+uwAtTT>8V)g_xT#PWpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_batchWithdrawEL/00005.png b/tests/snapshots/nanos_batchWithdrawEL/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_claimv2/00001.png b/tests/snapshots/nanos_claimv2/00001.png index c57eb58085b3955615381587da1dc17faf6ad759..c61639ae3328514c55aa80cfea3911a328d94137 100644 GIT binary patch delta 398 zcmV;90dfBC0;mI!B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnJhRZVF|AD>G3lpb6D@9Ia|CeQ9SWf++ z#yTPZ003ZUwlz`?3!oOVuPqDk?L7ev+e&U>f6`qE@6xE)5g>GTl+z~BzBixV6G+A_ zrb7*f9RX-g4NM6@6KY^h0Gd#PJ2S6s03O^6?>B&TGQ8i6h<~f${l-9po*)YKr0#uq zTYsOt=6Pn?aicvnp!z7$ym4N0m6_I|!<_Y2$+&aDUOF?Z6t1Rw?XWz)y$822fqK+j z3!$+$^tfq0`OQgsrTo@~3qjmWxPjhGtPmAWfV{6W`bpusdBbrzF$UPk6$B`?s*HYw zG*L9Xs5IczeNBhKWL!a1c|Et(I5ACb!q;`4Ylv0~O=M>Y5kK7fd6WvRKuyZ+J(vFu mK?C4=PrwKU|8D^R0FUg@@XWr%hP1H&0000K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_delegate_to_is_kiln/00001.png b/tests/snapshots/nanos_delegate_to_is_kiln/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;!nTHK`8=d#jZ|iDDUF$mMHMBD?ALozNkOWIQX^H@HuxwkB0#mi+KeK63m|s^ zq@a}DBB_U(vjLmdSQ%5m9MI1q`%chRMH3bdsO)uFSF{={%)S_8YhN|^P^{8oruVL= zRWgS;?*>{6cO(tF9PQ3Z^PahA2ja5JJeV1ZxLGuJbVrhmjw9qOxDK z%-tW1x3vRx(%hwGaoeLY9jYa97{B@C;%?i~sDSiWZY)k4+@!nwj{sLdjYi6>v-txK z1!$iY>ZpO|W$nQ3SXY3$Ii-2us`rU8d&1y6j~Bb_wdbNTLK?Pu09y-{5Zt=A@&v5sh?@;JymO<0^>)3Jl#do zKC=f6{PcqIro|HY5kS_|z?A^9pa$LqkOeg$gb+dq*^m#7?t?&h-nLc%0000py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_delegate_to_is_kiln/00006.png b/tests/snapshots/nanos_delegate_to_is_kiln/00006.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_delegate_to_is_not_kiln/00000.png b/tests/snapshots/nanos_delegate_to_is_not_kiln/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_delegate_to_is_not_kiln/00001.png b/tests/snapshots/nanos_delegate_to_is_not_kiln/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;!nTHK`8=d#jZ|iDDUF$mMHMBD?ALozNkOWIQX^H@HuxwkB0#mi+KeK63m|s^ zq@a}DBB_U(vjLmdSQ%5m9MI1q`%chRMH3bdsO)uFSF{={%)S_8YhN|^P^{8oruVL= zRWgS;?*>{6cO(tF9Pa#d~vwO`M@smDNDB(LY& zjnzHn)!Je6Tz38j{~J)V@3zG1H;r09C=uXutn-4uLAnU}FmhR`btk{7A#(a`XID+} zW6QY%ay8jTyy&n99$sxxI@S1yU`7O#08cn91ME!5u-F1?aIAdO3&4-6Qq5Vo&vxMI z42uA@b1rbdRsG#iC}r^5qdr!eD2ZeDjyr}PlWk|wZ92+lqjT3kpZ|O|6`L5|9JVk| zw~;pE%s@`c!Q?xb$^0yIW%iS7s-fdDoW zYB=UFwLtt+sbbS%v8q-o-L#gQm_BYXl@}K@-h_E|=2fqAYRg_7YTJzbS{9AC3G??x z)zgh}H*Zwc>@C-oVw|@YnQJyL-ZLK5X~`mUNmfO`hibT;uT*2}AQNH_JqFZ*RDQ(S zqgvx^QVW4ho_zxijW1xc0gN%(gC|xk3Y$E8eSau-v5Dju`bpz1NqWiZk2!bG3m5XESV}I}J?%0=+V}GWR zawA!t2K;Vv{29pTi!E*A*LmeF;BMRGGj2|C5&6U9(~8Wy{F1nwm*;P3MwjOJDi~)I zZ^V-h2f^+*ApcM7eHOup6;J{^p;HCOD?6$3X<<1ppqX9(epFIwzGseo^*TC%LCi7w zo8t-~JLd-XTVgK`O{u0|?z(T@g}6(T_c8Jq>UQ4h+C}rOTjk8+TD6j#eFzeUBpYgb&H2QAlev(9TKP1wdz&Mhd0*6 zAvPZ$b3{o5i-^RY8>_O6+G5cuL8_KG7UPn;xt3@jVqAB`UrAVAFS$2?_tNc1%}2?M z_5%1=13_!6{?|)zyc0q^6{6q&xDtU`eC455?B&HMuK@iN!(y{M-I}WvW9IKLj`%a_G z4b3W7pwiOtZ$R2-OWO8-uN5p&q-`e;cz5bo11<)d6|y_{h??Zb{3}_sWaG0?X-%|H zH#)r&y*Vn`H>RXg+71g3kWg0GWAVjx&>vRX4Nn`OFBOHFr|`0#!0dGM0CaLD^}I#( zSyzx^`m&z4g+s81HVQSCub~5c+%SyX9=g?>Nk1eDzppto_o7HIB`u`vkPmnFbQ6|L z!>`pez*8=WMbbWd^<^)#zBkYP2CztBovr5EfjosEO8M{tzrZM!9V=SGlLt@@D&gfR vxY>Z5B&qz4SW`_pB;bfa5ClOG1c4DB)|%T39ewk|00000NkvXXu0mjf;zX>T diff --git a/tests/snapshots/nanos_delegate_to_is_not_kiln/00006.png b/tests/snapshots/nanos_delegate_to_is_not_kiln/00006.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_delegate_to_is_not_kiln/00008.png b/tests/snapshots/nanos_delegate_to_is_not_kiln/00008.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_deposit/00000.png b/tests/snapshots/nanos_deposit/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_deposit/00001.png b/tests/snapshots/nanos_deposit/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_deposit/00002.png b/tests/snapshots/nanos_deposit/00002.png deleted file mode 100644 index 62815eb12e460544215869d0e7003d57949c14e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmV-70m%M|P)5N*L{c&apq=!{*xW*+#tN z0njY|RaEYy9dHx%jnA-I^^uoC+Q#Cz%(0hA-OTZ1%p=rXf&{n%V$PAv{(3%*TnmRKEkN$W*@@4XLSqXBdN# zunUdkRpe?KI(DX5Pk4%)NXFbr;{uE}6ha@_Y9(k7g^a?zI#TV<-`#{~1Mep6>=mbp ztWEKV#jjfsSpSi=S`g#`xJ&>b)t8CSfHyt@@+V3NA%qY@L>@=xlM5$U;>iF2002ov JPDHLkV1g42idg^v diff --git a/tests/snapshots/nanos_deposit/00003.png b/tests/snapshots/nanos_deposit/00003.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_deposit/00005.png b/tests/snapshots/nanos_deposit/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00000.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00001.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;4%P)k>$u?87x^F? z6}UAq+E31 diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00003.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00003.png deleted file mode 100644 index 62eb566555ba2b457ffc5413b9a813e2287369d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)f!yX diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00004.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00004.png deleted file mode 100644 index 06c3c59a9000082a980407c1e47a01c43dbfef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVy=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00005.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00005.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00007.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00007.png deleted file mode 100644 index 82030b711fe69207d044d44c0ff7bbee83f4da1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)y@Tw;Khthi?!M+uj}mLSnNLI@#b5c~Fi>6ktsQvb*J4@Y61iH*6g6Mgj}rg&c#oQ-ozFvd2M8aO)s$UTjWPs_9guy{285&j z3Kw7@Kq*A%+bT_AcoBxK_2E=*57@@e)qOh%Qs*$*b8#o)`PNN{r5{ z0>Fy(l2M`%CR-;@N-_A}S)_DA z;Y=qc0x~ZUGj`+2q1rni)WwZ)5X(u=M0wh>BTxkhiLavuYUa+?1NEs-0T#drmj^O; zsA9BB#@UGEOuwKC5E(!N)DTokWDfM-At8hiLP*anZw$o(|1uge00000NkvXXu0mjf D<;RyD diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00009.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00009.png deleted file mode 100644 index 82030b711fe69207d044d44c0ff7bbee83f4da1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)y@Tw;Khthi?!M+uj}mLSnNLI@#b5c~Fi>6ktsQvb*J4@Y61iH*6g6Mgj}rg&c#oQ-ozFvd2M8aO)s$UTjWPs_9guy{285&j z3Kw7@Kq*A%+bT_AcoBxK_2E=*57@@e)qOh%Qs*$*b8#o)`PNN{r5{ z0>Fy(l2M`%CR-;@N-_A}S)_DA z;Y=qc0x~ZUGj`+2q1rni)WwZ)5X(u=M0wh>BTxkhiLavuYUa+?1NEs-0T#drmj^O; zsA9BB#@UGEOuwKC5E(!N)DTokWDfM-At8hiLP*anZw$o(|1uge00000NkvXXu0mjf D<;RyD diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00011.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00011.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00013.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals/00013.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00000.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00001.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;4%P)k>$u?87x^F? z6}UAq+E31 diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00003.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00003.png deleted file mode 100644 index 62eb566555ba2b457ffc5413b9a813e2287369d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)f!yX diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00004.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00004.png deleted file mode 100644 index 06c3c59a9000082a980407c1e47a01c43dbfef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVy=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00005.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00005.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00007.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00007.png deleted file mode 100644 index 5d10a09010526e7de70eab95e0b3a8b29ae7d6d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmV-F0l@x=P)MU4&cA zutzmbeAIV?Ua~d!=m{7!CFp8sl5{<~LPZmaHlwvIOVw4=mw>q%HCu$UlIdZgRV(ii zWL*J&B)1a_+5?<9YFhUaCjfKDEbBJ3=eQaxxFEU-ORNtn*~1#FG}i?gm>1S}z%(+f z?}lP(Sl=0F5DC0cBguh+*1b*SG(Db>*^Syu8A2Am7RD+;fkWv5{ z8?XY%tk&u+F)0O@WO6l}pBzMUjc90MAV4rFT@Vd$&YVPUw=)9(0001N&kM**sQZn6 R=$-%o002ovPDHLkV1jp6eW?Hd diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00008.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00008.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00010.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_1/00010.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00000.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00001.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;4%P)k>$u?87x^F? z6}UAq+E31 diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00003.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00003.png deleted file mode 100644 index 62eb566555ba2b457ffc5413b9a813e2287369d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)f!yX diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00004.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00004.png deleted file mode 100644 index 06c3c59a9000082a980407c1e47a01c43dbfef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVy=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00005.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00005.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00007.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00007.png deleted file mode 100644 index 82030b711fe69207d044d44c0ff7bbee83f4da1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)y@Tw;Khthi?!M+uj}mLSnNLI@#b5c~Fi>6ktsQvb*J4@Y61iH*6g6Mgj}rg&c#oQ-ozFvd2M8aO)s$UTjWPs_9guy{285&j z3Kw7@Kq*A%+bT_AcoBxK_2E=*57@@e)qOh%Qs*$*b8#o)`PNN{r5{ z0>Fy(l2M`%CR-;@N-_A}S)_DA z;Y=qc0x~ZUGj`+2q1rni)WwZ)5X(u=M0wh>BTxkhiLavuYUa+?1NEs-0T#drmj^O; zsA9BB#@UGEOuwKC5E(!N)DTokWDfM-At8hiLP*anZw$o(|1uge00000NkvXXu0mjf D<;RyD diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00009.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00009.png deleted file mode 100644 index a3f84470ac161bd75bb2966852d72414df5870f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)_tq-P?c)+)Yk(5vB0zR8#Ov0%c(Pc$>@@jgKWny2VM0t5v z09IxPAVz^Rs2`T#7`hW!0fJ%-l$HD0u;uPX!6ZN{$A%hsa+NHE$=b>JMMNicnbUpO z2>_tqv$X+VqA$itKC!E96^Z8Kw0IJ~hO20@?z|t=6=2*rt2w*M8l?&?R)G3Ls}PQk zSGa%{0&Il{e_Ll!8eWW{b8R@4NBto`h@gDY5b)6)<0YJm5nQIqv#w?rd0y;sl^C5@ z1z=}(0%8_8liINa$Iyeo3NRSPKv{X5f|R=&ib;T0_6;>?$z7rlCQB!eN-^f%Sxwx; z@s3eVWZkXi2lXveTruMU4&cA zutzmbeAIV?Ua~d!=m{7!CFp8sl5{<~LPZmaHlwvIOVw4=mw>q%HCu$UlIdZgRV(ii zWL*J&B)1a_+5?<9YFhUaCjfKDEbBJ3=eQaxxFEU-ORNtn*~1#FG}i?gm>1S}z%(+f z?}lP(Sl=0F5DC0cBguh+*1b*SG(Db>*^Syu8A2Am7RD+;fkWv5{ z8?XY%tk&u+F)0O@WO6l}pBzMUjc90MAV4rFT@Vd$&YVPUw=)9(0001N&kM**sQZn6 R=$-%o002ovPDHLkV1jp6eW?Hd diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00012.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00012.png deleted file mode 100644 index 4fe8a80119d949f651fb52a2d7a2705d68969fc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmV-T0kZyyP)L;_i4Z~v*~#8nv2)S;_LU(dw0- z9-!`k3&A!qr)R)sa)GrMKLG|i9;(}>-Z`&E1PkgP!V>EbmApa>BCRzbi|{h~8!&^+ z=x;*_HKV^7YTyZ7$dhxBv(k-vW;qygJ4xI(t#QZ~A^a|oW&Dhl5wgZCt1zG*#AG^i zejE!6ssJg?vJ`4kT7r7l_W%npvCA*_!Tg;82B_K4n!iMi+J&GBP`QBys1_t$e)(dO f5JCtcgv8+k?(3gWw=t`Z00000NkvXXu0mjf5lfJ8 diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00013.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00013.png deleted file mode 100644 index 3a9f816d2af790fe1ac4d2841a0fd023ca9877aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(QQP)Nva-Ip(Kgac5CmJYOAhT{tJk!5vz$gD_$NpYIpgk z2T^yxL}EKJr!&BqBZqY_egY78OsZx}Tdpgyf(vR7VUG5LiqEhHD?RIi49pAb8=x8) z);B{iHLPz8H1Gso$P>?Vm`tu^4lbn`cw)6)S_d+=GvRdDL3Q783o5V_;Olo`8 z0HU9H9j-nRX5KKVh)z7kBh@p(*R0ilOc(()Cgut17KwD!MG`>5VdLB9rzzcljR7%q$H88Io}7d$HzZElCBrt+u&BadwxlEo8GH;YQfd5Ge!0DrMJfYd+m5dwm^BK z@0pj92|l@rZ;$#jBpqLpWw!O{9wAAcj5?0uE#g{rZ89lQ*-mB;UBB=KH21uit=J-U z(VR`Hf=T?-6R9U!CG0=b6w8}u%v0u6y5#Z6RdAj538Qa1pR#Y6slI)kB{6Se7l%)q zeq!H@DRDg9K7NdKTP}XBXESVIwPa?T)0yRHb6oS6XJ5D#&`%5u4wejtWs{wpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00017.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_8/00017.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00000.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00001.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;4%P)k>$u?87x^F? z6}UAq+E31 diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00003.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00003.png deleted file mode 100644 index 62eb566555ba2b457ffc5413b9a813e2287369d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)f!yX diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00004.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00004.png deleted file mode 100644 index 06c3c59a9000082a980407c1e47a01c43dbfef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVy=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00005.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00005.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00007.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00007.png deleted file mode 100644 index 82030b711fe69207d044d44c0ff7bbee83f4da1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)y@Tw;Khthi?!M+uj}mLSnNLI@#b5c~Fi>6ktsQvb*J4@Y61iH*6g6Mgj}rg&c#oQ-ozFvd2M8aO)s$UTjWPs_9guy{285&j z3Kw7@Kq*A%+bT_AcoBxK_2E=*py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00010.png b/tests/snapshots/nanos_lrCompleteQueuedWithdrawals_redelegate_1/00010.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00000.png b/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00001.png b/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;VeCyJ2% zXR@xl`q0?@>Xxa){kx>q_p3dgpX<(1h<;@Y9UhU3etTRW-~ARE({95HYK*#v8c9G| zr|g2&3-vW_tcxn@`3=sHyQ^N-M8HzeVn>Crgk77`WF#%*4JUvmheq-MO>24!M{2Uq zK~HGY{LD9z1Ip%Z8@F*#!~{ivw6jT1r9A4;K+r056NVny=yAZN!5GdwQ|^dmd$(7| zDJX9*`Y&kly?TY-BLZ5)+c;D4Hlwo(H3ylbWuc-+EtN{HSE<4Hl$d=d#b z=1iW$W_%5KoDrE%%mkrQg!DGl1l@+}i%>#9DyHI2GN8s(6Q%kn^{YG=`*dpqPKp4d zuKBf4DYrBQOO#-Bv^;cSW=#b6>c%b{xLSvHHHX0jp%dU9L0!C@!Kf_h8WHVPoEmy1 zIeJtRPK2u8-YIcS0K5B9NfKI)njv3~Sy8gQJQVcO^8@lx0h+q9ca=@QZrcZ9ha0!M3j4a=Z=&Gc;v6VcA#d}1{p%$%+ z-SHcXSMU09j4%m{bI0000Wp64Ta29fYbvvN9@b>0D^zZC8zB>F15ZkboIG4fUOY4RFRE_2ZrDhQ)U=|y4)Ph9( z3ums&^Mmo9u<{emkb5H3CvyiVUrDSbv|>YewZPIhi9?Vl?KDC>matp_35sze`Xept zk6^S7vww7s9B>pKo%oSX>(W>z7`*}j0000$ZC;o%!63U}-7f$D002ovPDHLkV1m$H Blyd+8 diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00005.png b/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00005.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00007.png b/tests/snapshots/nanos_lrDepositIntoStrategyNormal/00007.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00000.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00001.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;VeCyJ2% zXR@xl`q0?@>Xxa){kx>q_p3dgpX<(1h<;@Y9UhU3etTRW-~ARE({95HYK*#v8c9G| zr|g2&3-vW_tcxn@`3=sHyQ^N-M8HzeVn>Crgk77`WF#%*4JUvmheq-MO>24!M{2Uq zK~HGY{LD9z1Ip%Z8@F*#!~{ivw6jT1r9A4;K+r056NVny=yAZN!5GdwQ|^dmd$(7| zDJX9*`Y&kly?TY-BLZ5)+c;D4Hlwo(H3ylbWuc-+EtN{HSE<4Hl$d=d#b z=1iW$W_%5KoDrE%%mkrQg!DGl1l@+}i%>#9DyHI2GN8s(6Q%kn^{YG=`*dpqPKp4d zuKBf4DYrBQOO#-Bv^;cSW=#b6>c%b{xLSvHHHX0jp%dU9L0!C@!Kf_h8WHVPoEmy1 zIeJtRPK2u8-YIcS0K5B9NfKI)njv3~Sy8gQMAqyx$ANsI#PMp%<(j6TK?1s n3J}b&C1~DlnGiw(pdQPE>y4@0vI8KZVzrhleGZ1%f+o{_W0(ZU zoqY}lNI+RR>9Y$R)<(4~Q%(K`Ey9y6z}_6l3-vo-iVXF;p-2t&JA)i#f?X(+^L3b= zvR><}JOI|G{8=5?SZ6|OpnodT;>YiBX^A^RSNS$Ub4H!VZw$^83Dv&~_0moZHjTU> z$HS3tRm}~b6bC8twiw{YW?Z8v_o)VP>)PE{y9B7xSbF`(L!eTbo8Q~f<4Dtrt@x|o zFe;ynre>VK-cMHoHr#USx@DSqf9m(RFf|Eacc@py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00007.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownERC20/00007.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00000.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00001.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;VeCyJ2% zXR@xl`q0?@>Xxa){kx>q_p3dgpX<(1h<;@Y9UhU3etTRW-~ARE({95HYK*#v8c9G| zr|g2&3-vW_tcxn@`3=sHyQ^N-M8HzeVn>Crgk77`WF#%*4JUvmheq-MO>24!M{2Uq zK~HGY{LD9z1Ip%Z8@F*#!~{ivw6jT1r9A4;K+r056NVny=yAZN!5GdwQ|^dmd$(7| zDJX9*`Y&kly?TY-BLZ5)+c;D4Hlwo(H3ylbWuc-+EtN{HSE<4Hl$d=d#b z=1iW$W_%5KoDrE%%mkrQg!DGl1l@+}i%>#9DyHI2GN8s(6Q%kn^{YG=`*dpqPKp4d zuKBf4DYrBQOO#-Bv^;cSW=#b6>c%b{xLSvHHHX0jp%dU9L0!C@!Kf_h8WHVPoEmy1 zIeJtRPK2u8-YIcS0K5B9NfKI)njv3~Sy8gQIy8 zr2wrOf7?p|GXu)N7ZZYu<+WNY+lrzvQ~RBl_bNSA7S$N%O4V}LMJUhc0T9t|wAvxr z^%{m-{a^^NA(j-wjM|Q__4DW&2a*6MAzaTgV@QG_fU(NAB3iW+JGQXL@OY1_t)UjJ zjXm%gtF9mN?`wp~WwG|TJHss_%q#Cgo1 z+K5G8H4tr$8xE(F1yNkGY(KVfS|@DEAHN?M_MYAcQn|MhAPOTttCM5rp~aBiPXhlF9@so?J=>BbNs=TR* z47X9*K96aW4Y)*?#e3-J?A(5J^a?P`y3j5h%5Ag)M8sw*pXqBbO$b`d?wM&Epd1`@l<&Vyt}DnM8F8j1??*G zgc?^`*HVo3J-B$z#{CIrEzMuq`ZqWib$_2-A2H$_;M6sz5JdXH!*3~viwN>fPzXxf zA7+w8EEV?(K`SFP8RyBP@r$bI5@AP5hpte~gB;LuGHdUi`-py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00007.png b/tests/snapshots/nanos_lrDepositIntoStrategyUnknownStrategy/00007.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00000.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00001.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;ZyZE5m%{7svIb8lbY#2H~>OdR=9o(D@eRB z&a@@AvWOud9pnGD=9t#ny=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00004.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00004.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00006.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00006.png deleted file mode 100644 index 827de905d9c320a7426bc6a64da96948880e1ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)e2@4OhMANgYis7ZIHZA%u`s*`g;PA|mJUZEx?mc`S<- zz#Hj*b|_$0fDU}KAW~Pii(UP!=^C@*d)MVWtfzFh7~^TMXnCs<$}4&TBJvxp^^k0O z4a2SdUG&x z9{7#ft9SeJ7-2FjwS8`;*iT#qZYp#0dN+i^91y0p6x1M+wXzTz4JQL?;1#JlxtkHM z;0gb_@Cp1w{Vu3JjwV0`#z8E{yVRVnN`@35KaS{Q?cF0TUes$K1?Z%6HF*CtV6eAM v$dgcjU?5XaeyLeZ_w(+|gb+dqA=C2#1oN!@#*^C^00000NkvXXu0mjf1xT3z diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00007.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00007.png deleted file mode 100644 index 1f3bd76943eb3d66ccc709e45f8ad422d63be352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)NOyFrpGVg?kOcS>%=JZP3`sBqFtWTB(V`_=v6(%F$9s&HLoKw0 zJ@6fyN3Z$0y00cPn@5OMg z^E=RfJOr`!O)g+B<9N&fTy`!P0{FR|1^_9DPD%y0Sd)_^Ns=Tpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00010.png b/tests/snapshots/nanos_lrQueueWithdrawals_1_2_dimension/00010.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00000.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00001.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;ZyZE5m%{7svIb8lbY#2H~>OdR=9o(D@eRB z&a@@AvWOud9pnGD=9t#ny=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00004.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00004.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00006.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00006.png deleted file mode 100644 index 827de905d9c320a7426bc6a64da96948880e1ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)e2@4OhMANgYis7ZIHZA%u`s*`g;PA|mJUZEx?mc`S<- zz#Hj*b|_$0fDU}KAW~Pii(UP!=^C@*d)MVWtfzFh7~^TMXnCs<$}4&TBJvxp^^k0O z4a2SdUG&x z9{7#ft9SeJ7-2FjwS8`;*iT#qZYp#0dN+i^91y0p6x1M+wXzTz4JQL?;1#JlxtkHM z;0gb_@Cp1w{Vu3JjwV0`#z8E{yVRVnN`@35KaS{Q?cF0TUes$K1?Z%6HF*CtV6eAM v$dgcjU?5XaeyLeZ_w(+|gb+dqA=C2#1oN!@#*^C^00000NkvXXu0mjf1xT3z diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00007.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00007.png deleted file mode 100644 index 1f3bd76943eb3d66ccc709e45f8ad422d63be352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)NOyFrpGVg?kOcS>%=JZP3`sBqFtWTB(V`_=v6(%F$9s&HLoKw0 zJ@6fyN3Z$0y00cPn@5OMg z^E=RfJOr`!O)g+B<9N&fTy`!P0{FR|1^_9DPD%y0Sd)_^Ns=T{u2q zfHvY^n+lj6zyn`wh}PxpVVAEJT`_I=+;us2=_%eF#&{bX&itwo$}`#kBDzMa9g??R z!*Ht~3;|9=N-?I9?&w}WkFIeb3GgR`>zm9Nl3)m6WO*&3hcm^AE#_l*{Elon)IvMh z1OH?9=!g6{N0_9=I_GAJ{lk5tcnBUMXV?N`;-?*0r)=UZQ**SBzRHJffPVPBv9v8(7rTa@VK7> zf++ROLLLE5rqcj21v!hFlOD@OQ4~c{6f5usKe?e^Qb@cb00000NkvXXu0mjf(BPQ< diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00009.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00009.png deleted file mode 100644 index 9d9f05a0a8b72e6003ed4c63b990c15e5cc59db4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmV-b0jmCqP)MAqyx$ANsI#PMp%<(j6TK?1s n3J}b&C1~DlnGiwe2@4OhMANgYis7ZIHZA%u`s*`g;PA|mJUZEx?mc`S<- zz#Hj*b|_$0fDU}KAW~Pii(UP!=^C@*d)MVWtfzFh7~^TMXnCs<$}4&TBJvxp^^k0O z4a2SdUG&x z9{7#ft9SeJ7-2FjwS8`;*iT#qZYp#0dN+i^91y0p6x1M+wXzTz4JQL?;1#JlxtkHM z;0gb_@Cp1w{Vu3JjwV0`#z8E{yVRVnN`@35KaS{Q?cF0TUes$K1?Z%6HF*CtV6eAM v$dgcjU?5XaeyLeZ_w(+|gb+dqA=C2#1oN!@#*^C^00000NkvXXu0mjf1xT3z diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00011.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00011.png deleted file mode 100644 index bceed68d6a9b6e6ceee1ec9be8c8912b8456c5cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmV-f0jB9KbEBy zz#AEVb}C?IK%Mw%LX>XZHoNt+s;kV*_pZx%=t$LFGsnxIX?d%W$}8Ie5&6y5I3>GL z!wBm*7y?|Vk`kDSALv%U5nb~@65t_J=!?u4l3)lBRCzC>O-r?6D|?KH_n57QMtBQ* z;(u&jz3ZRnNRw%a*13Pm{lc}uE!*67zng;L1A<#iK@Bols|um<8|3CL2xlEu+0bq) z#W|FfLBMMt5I6b+_oLo44Q`Wyr?T1mCge#lPQrH?JlvvYea)N#43<&v8v_z7LCH{n rWKc^`duL+SlR36@gb+dqAw=^5ZVs13Ub>3!00000NkvXXu0mjfS!R?B diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00012.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00012.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00014.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension/00014.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00001.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;ZyZE5m%{7svIb8lbY#2H~>OdR=9o(D@eRB z&a@@AvWOud9pnGD=9t#ny=XsTBzC3UiqC3r6AL;d9(XozFWhug&n5*Z+4eW?`wG#c1nV%)07t z)`i+5HF#Cn-cgIG906DWpJ24FYQH!r)f#+24F|!L2ymozz=IP+qbiXw@{5(LEkF{7 ziADItJbcWsN41sJOH;cn_KDuMv*;djhhjzL zhO?jME&$TH=j|*)Xf@Npe?f>w*14eL+Yj>9%ZE6@6z;fWISxl)Y#pGGB z)~KDf-t+WiOYkl+9;!w+y6>tW2!bF8g4^%~Jr#&C0X|@d00000NkvXXu0mjf{gm*e diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00004.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00004.png deleted file mode 100644 index 53e7aa041e7dc3e9453476b700c868cce35e5416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmVgw{{Ii|qAqrhIbg5g(6!>ZN=5JsbVQUSNs=V}yq=ritjGk^UQM+_DTda; zOS@$j>g>J(HV0NI#ne_HJQVLZ!36!>kE>|&deZXPc*FAe{4T{JEV~!6x^*pQ5&3;7l?Koym5Q7p0j!t=O)}7aQ$A^0172|KV31 zlTqJ=%p9muZK+RBqkcR#RlkX5_5=70b}37)1_-;FEMrr%&Bn}V#{h^Z{zJ@?ZZrnE z$(hSKWjoRC;SIn^U=r)7es%)279VPUuc|eymvOo6$HEd+2YNukJ26lrk(DW_@@*6K+tZ(XZNmzKc< zwfGOfQA4Y;zp`ur`vl8v746!KUDOe(hh(%iF=PjHq;|r!@@b<$fwuPG*8(8wFgYUZ zm|LH2;5dfrspPgs+U>;f9gttb8n|YS9*&UrW?S65vFYo8Ui;l}^tK&E^OPGD3n~}% zzKjikrFBj3Pl32Pyg!(T!A#;5n#tD53uzwnj)ts`EeQhpElb~sdp$$e=-@EA;PGdQ zz3p^DyDGy&n>?kIJ*6TBEXF)9>x0<=fCNVR*w7DjV%w_KJ&oA`$f3stP4Z~Tstlc0 zY}4(*)Bxxusr|U;YuaSnlI`8#<1+NL11P;#C_I^bcwgKF0M4i g5(GgI1VL~G-U}%#VS}wMHUIzs07*qoM6N<$f<$)Cr~m)} diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png deleted file mode 100644 index 827de905d9c320a7426bc6a64da96948880e1ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)e2@4OhMANgYis7ZIHZA%u`s*`g;PA|mJUZEx?mc`S<- zz#Hj*b|_$0fDU}KAW~Pii(UP!=^C@*d)MVWtfzFh7~^TMXnCs<$}4&TBJvxp^^k0O z4a2SdUG&x z9{7#ft9SeJ7-2FjwS8`;*iT#qZYp#0dN+i^91y0p6x1M+wXzTz4JQL?;1#JlxtkHM z;0gb_@Cp1w{Vu3JjwV0`#z8E{yVRVnN`@35KaS{Q?cF0TUes$K1?Z%6HF*CtV6eAM v$dgcjU?5XaeyLeZ_w(+|gb+dqA=C2#1oN!@#*^C^00000NkvXXu0mjf1xT3z diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png deleted file mode 100644 index f6d556916108fab7602b510c4ceb72780470fd7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)Iy8 zr2wrOf7?p|GXu)N7ZZYu<+WNY+lrzvQ~RBl_bNSA7S$N%O4V}LMJUhc0T9t|wAvxr z^%{m-{a^^NA(j-wjM|Q__4DW&2a*6MAzaTgV@QG_fU(NAB3iW+JGQXL@OY1_t)UjJ zjXm%gtF9mN?`wp~WwG|TJHss_%q#Cgo1 z+K5G8H4tr$8xE(F1yNkGY(KVfS|@DEAHN?M_MYAcQn|MhAPOTttCM5rp~aBiPXhlF9@so?J=>BbNs=T{u2q zfHvY^n+lj6zyn`wh}PxpVVAEJT`_I=+;us2=_%eF#&{bX&itwo$}`#kBDzMa9g??R z!*Ht~3;|9=N-?I9?&w}WkFIeb3GgR`>zm9Nl3)m6WO*&3hcm^AE#_l*{Elon)IvMh z1OH?9=!g6{N0_9=I_GAJ{lk5tcnBUMXV?N`;-?*0r)=UZQ**SBzRHJffPVPBv9v8(7rTa@VK7> zf++ROLLLE5rqcj21v!hFlOD@OQ4~c{6f5usKe?e^Qb@cb00000NkvXXu0mjf(BPQ< diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00009.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00009.png deleted file mode 100644 index 9d9f05a0a8b72e6003ed4c63b990c15e5cc59db4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmV-b0jmCqP)MAqyx$ANsI#PMp%<(j6TK?1s n3J}b&C1~DlnGiw9KbEBy zz#AEVb}C?IK%Mw%LX>XZHoNt+s;kV*_pZx%=t$LFGsnxIX?d%W$}8Ie5&6y5I3>GL z!wBm*7y?|Vk`kDSALv%U5nb~@65t_J=!?u4l3)lBRCzC>O-r?6D|?KH_n57QMtBQ* z;(u&jz3ZRnNRw%a*13Pm{lc}uE!*67zng;L1A<#iK@Bols|um<8|3CL2xlEu+0bq) z#W|FfLBMMt5I6b+_oLo44Q`Wyr?T1mCge#lPQrH?JlvvYea)N#43<&v8v_z7LCH{n rWKc^`duL+SlR36@gb+dqAw=^5ZVs13Ub>3!00000NkvXXu0mjfS!R?B diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png deleted file mode 100644 index f6d556916108fab7602b510c4ceb72780470fd7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)Iy8 zr2wrOf7?p|GXu)N7ZZYu<+WNY+lrzvQ~RBl_bNSA7S$N%O4V}LMJUhc0T9t|wAvxr z^%{m-{a^^NA(j-wjM|Q__4DW&2a*6MAzaTgV@QG_fU(NAB3iW+JGQXL@OY1_t)UjJ zjXm%gtF9mN?`wp~WwG|TJHss_%q#Cgo1 z+K5G8H4tr$8xE(F1yNkGY(KVfS|@DEAHN?M_MYAcQn|MhAPOTttCM5rp~aBiPXhlF9@so?J=>BbNs=Tpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00014.png b/tests/snapshots/nanos_lrQueueWithdrawals_2_3_dimension_with_unknowns/00014.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_lr_undelegate/00000.png b/tests/snapshots/nanos_lr_undelegate/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_lr_undelegate/00001.png b/tests/snapshots/nanos_lr_undelegate/00001.png deleted file mode 100644 index 326ea1dfd542fd2a490dc7418fe1e8df5245237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)*2 z#xaFnTM(9Oqvj^J(8cSeP=cBUxt;Op`X-+R;t6QFzxqU}{FZ{+rJw})d=>E>>aGUK zvX+d2qRfDCintb@0?~aC1{Bu1;E><=EDIMe&bQ^Ie)2~U==GRis|Mc(ti^^-z+>Eh g8dO$)LI{EL0h9ov6thu;vBUQHJ;Wr9*ye2E#*EFv6x@vD-!;jkpr!||5l`1QxD*;EplN^gIi<3ff!t*v z1;v~mi6hjV4al@c+NfeI0P{R@-UL&p=t3g^nY%7|6}(0olO3UM?>7xDidI@o=3TW~ zMQeDauMO>m6^V~siuwk@73$cL?LaKX)cT%)$3PRiS?CEAoIE53-6c(ps36Q(p`uU) zfvJjkC`Jx9a(5YJSG1CYr8TvEa^D(BGR;8Kw=9DpWno3G~t0AGXk#<(%*PQJ>t1i~rF>!3#J vrQ0ANqs|0<2RO29+6x%LBE`GoIF2-5X9N6zc!7Z~00000NkvXXu0mjfyfv}@ diff --git a/tests/snapshots/nanos_lr_undelegate/00003.png b/tests/snapshots/nanos_lr_undelegate/00003.png deleted file mode 100644 index eeec6324a1f33b9b155d3e979728a086251adb10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_lr_undelegate/00005.png b/tests/snapshots/nanos_lr_undelegate/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_multiClaimv2/00001.png b/tests/snapshots/nanos_multiClaimv2/00001.png index c57eb58085b3955615381587da1dc17faf6ad759..c61639ae3328514c55aa80cfea3911a328d94137 100644 GIT binary patch delta 398 zcmV;90dfBC0;mI!B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnJhRZVF|AD>G3lpb6D@9Ia|CeQ9SWf++ z#yTPZ003ZUwlz`?3!oOVuPqDk?L7ev+e&U>f6`qE@6xE)5g>GTl+z~BzBixV6G+A_ zrb7*f9RX-g4NM6@6KY^h0Gd#PJ2S6s03O^6?>B&TGQ8i6h<~f${l-9po*)YKr0#uq zTYsOt=6Pn?aicvnp!z7$ym4N0m6_I|!<_Y2$+&aDUOF?Z6t1Rw?XWz)y$822fqK+j z3!$+$^tfq0`OQgsrTo@~3qjmWxPjhGtPmAWfV{6W`bpusdBbrzF$UPk6$B`?s*HYw zG*L9Xs5IczeNBhKWL!a1c|Et(I5ACb!q;`4Ylv0~O=M>Y5kK7fd6WvRKuyZ+J(vFu mK?C4=PrwKU|8D^R0FUg@@XWr%hP1H&0000O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnJhRZVF|AD>G3lpb6D@9Ia|CeQ9SWf++ z#yTPZ003ZUwlz`?3!oOVuPqDk?L7ev+e&U>f6`qE@6xE)5g>GTl+z~BzBixV6G+A_ zrb7*f9RX-g4NM6@6KY^h0Gd#PJ2S6s03O^6?>B&TGQ8i6h<~f${l-9po*)YKr0#uq zTYsOt=6Pn?aicvnp!z7$ym4N0m6_I|!<_Y2$+&aDUOF?Z6t1Rw?XWz)y$822fqK+j z3!$+$^tfq0`OQgsrTo@~3qjmWxPjhGtPmAWfV{6W`bpusdBbrzF$UPk6$B`?s*HYw zG*L9Xs5IczeNBhKWL!a1c|Et(I5ACb!q;`4Ylv0~O=M>Y5kK7fd6WvRKuyZ+J(vFu mK?C4=PrwKU|8D^R0FUg@@XWr%hP1H&0000K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_requestValidatorsExit/00001.png b/tests/snapshots/nanos_requestValidatorsExit/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_requestValidatorsExit/00002.png b/tests/snapshots/nanos_requestValidatorsExit/00002.png deleted file mode 100644 index db4f8f575c7ee9e804a4cc5cf5dc467241c227f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk;P)&JwEgR-@c>RZSh#F+!^bmu-CR6Z<`9aaQvoY> zMik68)GI@#Mr19w)g@cjMkI_k-5-ni9L(fTb|Is5kHg6$s9du0=dvyPc3eW4<{uqF zrMf9w(|cSlHPUV11|Gx&(LbqT<|=Y6QxHx0iA=UIQY!EdfQ~YDwz>u3 zX#YWq9jn(nX|E`TS>bJcdpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_requestValidatorsExit/00005.png b/tests/snapshots/nanos_requestValidatorsExit/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_stakev2/00001.png b/tests/snapshots/nanos_stakev2/00001.png index c57eb58085b3955615381587da1dc17faf6ad759..c61639ae3328514c55aa80cfea3911a328d94137 100644 GIT binary patch delta 398 zcmV;90dfBC0;mI!B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnJhRZVF|AD>G3lpb6D@9Ia|CeQ9SWf++ z#yTPZ003ZUwlz`?3!oOVuPqDk?L7ev+e&U>f6`qE@6xE)5g>GTl+z~BzBixV6G+A_ zrb7*f9RX-g4NM6@6KY^h0Gd#PJ2S6s03O^6?>B&TGQ8i6h<~f${l-9po*)YKr0#uq zTYsOt=6Pn?aicvnp!z7$ym4N0m6_I|!<_Y2$+&aDUOF?Z6t1Rw?XWz)y$822fqK+j z3!$+$^tfq0`OQgsrTo@~3qjmWxPjhGtPmAWfV{6W`bpusdBbrzF$UPk6$B`?s*HYw zG*L9Xs5IczeNBhKWL!a1c|Et(I5ACb!q;`4Ylv0~O=M>Y5kK7fd6WvRKuyZ+J(vFu mK?C4=PrwKU|8D^R0FUg@@XWr%hP1H&0000K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_withdraw/00001.png b/tests/snapshots/nanos_withdraw/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_withdraw/00002.png b/tests/snapshots/nanos_withdraw/00002.png deleted file mode 100644 index 21f4a7745c89080999c909a45f267d711c18886f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmV;V0bBlwP)|ENWIpp_sobExuqhT{3)}a6FrD9pd2ADEO2C(~4uThzr zb36~`SOB(AWT_J?HOYAEHF(($e<7&m?Ab%F;Hl7Q#39U)0Tf>vjnK)Ji^W@K0Ks}k z{5c7Eq5c4(B18RQFj7PP!C(z6K^3y(Dl&0Hv)->q8ktRy-#!Q2PRmcfeY;u4B#j`8 z+o}5yllPJDS<)^-81)r|80wNX{K)dJsh{~E*!_~U9%I{3@If`bgqR>cdDf4~Y7}AW z1yMCMH&YxF)L%AcS--#Y@R(K5v0bsU^MYtpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_withdraw/00005.png b/tests/snapshots/nanos_withdraw/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_withdrawCL/00000.png b/tests/snapshots/nanos_withdrawCL/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_withdrawCL/00001.png b/tests/snapshots/nanos_withdrawCL/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_withdrawCL/00002.png b/tests/snapshots/nanos_withdrawCL/00002.png deleted file mode 100644 index 58bde19c5fdd4d711f23981d37742b80c7e9d97e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qs3Y4h3ut0RRBNQ<AskMYlpHk3;aW11LvnG(u-rPO`V&0R-!e z_;WJyLj3`VB18RQFj7PP!C(z6!6{@(mwR|!_LqMQgY4q^F1l}cindW9#+Ea**kN1$ z2{YPYNZ8PJslM8ZTtsEI^gu7w9Gg(t9;DQmOf*C_vl2GxfV1Ayfz{%p6+ttuVpg?H zk;m3JSO9v4Xe86LGmBcDntp1Bqoz?e^m=O4H6}H)t~|Mazq-W^*kav2hLUz>-Nf__ zFWJzqf-d*py!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_withdrawCL/00005.png b/tests/snapshots/nanos_withdrawCL/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanos_withdrawEL/00000.png b/tests/snapshots/nanos_withdrawEL/00000.png deleted file mode 100644 index 8d84cc70fea8013b7e8b25c0982ce142fa103d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)K?4J2QqX3 zXn7ePqhBDwvA-|J28LIrjF%tX0z{3v6!_gF&(SYH)S*7TN;1RxW-%}TLH9_+sttDO z-T32w&rL(!1@Vr`jm5G(8dd=Ruu#)JAN?l#rFLU`oQ(r?$33AC7s0}pw!fi~(9k^# zU9aci?pXN=I7A<-f!Mw2untnw9MivqZYw}c5&)gweYhbTnv#2#t$0X2wST7_1F;LR zw?>Da2SkSfG>qWq1mej-6nW@2l+Z=0om5jdB%3o3Qx19_LNUlTqF4R_1Iaj%@^2O= z@;n%h1N>H$2;%-~Dvx1!0LtkT-;cq73rgisOElFtPbcL{d3TfNQvm<~003s>1*i4o Uje8$F8UO$Q07*qoM6N<$g5rpv%m4rY diff --git a/tests/snapshots/nanos_withdrawEL/00001.png b/tests/snapshots/nanos_withdrawEL/00001.png deleted file mode 100644 index da040da358c6aace96623d528283d17eb910111d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP) z<$IfeFX2V>J0J!b(eFkk)QEm(putG63XP=4KFo|5ZPvLy_RpuzOV70Hhte`rm!aQzK+4>Tn>d>^nD+vovIkHddj004lI YH&A8N%=9edJOBUy07*qoM6N<$f}p^vDF6Tf diff --git a/tests/snapshots/nanos_withdrawEL/00002.png b/tests/snapshots/nanos_withdrawEL/00002.png deleted file mode 100644 index 9e8b87747c14fd5186e5cfa55f9d066465fc432f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmV;30eAk1P)>F64>UIs94nj~-WyM_68pKIoag%W{MO5Hv4h+hw(= zU#_q{Ql)c!(gBjGG=6=fx9i;h+-A^A9NmJ38uV+uwAtTT>8V)g_xT#PWpy!C9JIc{)5O z@z$QeIQ9`eWZ?jWi`t2Mo$*Db2R}Hn&;ifF{eG`PbQ=vzUeGZ$-(viTv&jx{*n>+F z$sJSlS-F{}u|NPAS#vt({Ipt{4zxMEv>x1pQ_2Ty6vG|1u)q#rxT8xbt6SjIvSJcm zATRwh1$m*q09lctz8DFqp}sJPfhIVGH2D>obVJ8hCB^DASqdfRP^^LZu4>Ved?oGf z&gPIV`f^(;vh%m0~_?r8>V7uBj~f|{k#}B z4)Di%0(GQh%XXzDG$sKK-Q2JkKR-`QsiPFD-4d_!i{fwH;J|_aEL%ZYNu#B0FJ7G| z;=_VQWOA9;dQ4Y9)LpKCV=ri`X({49JagUwO3&5UdSK)wEJxPN%9wG}45n;lzK(aC zKtbL$y*-#9uSql`7 zENOEh^0jsFWbV&<+yj5)WEX_aERLO-`${sQhD#B5ZCio#Fr4qHlr^7X|9DL69eFa= z#kf#}$Pcl(QEE=tNl8Pt$o;~Fk*8r@j8mpwSGW8d!1&11FbzPh@^gWj=oh7f%f7G)4s^6#xJL07*qo IM6N<$g02I(Gynhq diff --git a/tests/snapshots/nanos_withdrawEL/00005.png b/tests/snapshots/nanos_withdrawEL/00005.png deleted file mode 100644 index ce795f34e8569e986af689fded3b59c9a8af2961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)O41}p;-~WL<=z+0=1Om1tEU@3H#qtw22}5*_5JCvCo4!52c$FXo$VhXU?0M$^Bekqgf%Ka;M*^X|4 zEs9YCQ(xfJKmNC#+8dY%2&wT+>D^<3C%}_*k1^mvtO~`RE00000NkvXXu0mjf-kqOA diff --git a/tests/snapshots/nanox_batchWithdraw/00000.png b/tests/snapshots/nanox_batchWithdraw/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_batchWithdraw/00002.png b/tests/snapshots/nanox_batchWithdraw/00002.png deleted file mode 100644 index 1cbb181a7ea7f8f3bdf5791e3630ae44e8524412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)k=Im_{J9E;ms z*`n<`w)ry<TTm~E@_iX-f5eTF zvHMTjVF1)3kdG&Sb-QryK_V6Rc`*e50Qdy++0Y#lDVL}>U88_eW*5$v^nKV#j^U~2 z%;$odbEKYSy;PB{5bG{2<0tiSUs*vYcgnQ_Bx+FUK8j4D6O%Bf%Amk#EH zr6QVHfvdIrWy&dRTt{U9&wmu^x;JiCG3n@fU3(U9UF&L@GoUYS6!-2k^DE%>S)l&R zy0Ml$LjEy0OV0JvNv{BB=VWcl$Miom_C@9@+E4gindYh9Z4SFpch!H_X&B!3db4~} z-5?YFWg4L-`in6Jk=TVI4T8)VJc{rF0000000000000000001w`30DMg?*X^8@K=f N002ovPDHLkV1oXA+zkK# diff --git a/tests/snapshots/nanox_batchWithdraw/00003.png b/tests/snapshots/nanox_batchWithdraw/00003.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_batchWithdraw/00004.png b/tests/snapshots/nanox_batchWithdraw/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_batchWithdrawCL/00000.png b/tests/snapshots/nanox_batchWithdrawCL/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_batchWithdrawCL/00002.png b/tests/snapshots/nanox_batchWithdrawCL/00002.png deleted file mode 100644 index 7637e8597f5099ee8724adde72c8b5c8c5c147cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)VBigEW(4fSGcVym&NT|GZ=zocitz>u=9 z@-h5Rjosl`L;DKfiYb2zzH{HdW42Cu-~4jCv?v?RZppr~E+Lhk$$rlHF6ibEj<2u= ztI$rJBy$XwBE0|r0000000000000000KhW8NlRkByo6}B00000NkvXXu0mjfE4j_c diff --git a/tests/snapshots/nanox_batchWithdrawCL/00003.png b/tests/snapshots/nanox_batchWithdrawCL/00003.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_batchWithdrawCL/00004.png b/tests/snapshots/nanox_batchWithdrawCL/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_batchWithdrawEL/00000.png b/tests/snapshots/nanox_batchWithdrawEL/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_batchWithdrawEL/00002.png b/tests/snapshots/nanox_batchWithdrawEL/00002.png deleted file mode 100644 index 5781d9906232fbadae0b1df8d805cb9527b55639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Aba4!+nDh2#;G{zeJPnCu z>G_BL_8*D;worL;qeJj*0h#~rS0*V+uuNIT0@S7RU08I-l%Vy+=ei%S>#_JQE&b1< zMW!eJv-n*`S7Xa3q?!0 zqH6l4sjn89RF!XPik!CNMr`6`TLtdVVzVSayOrELS5>X+xLD;{(aenMW9sF{*4bya zGiInc)>du^pMT%xmPgjn+PWD)PdsQ++Tq5z@;BojyL-X9?=2bn(j7m^thIj|=snB& zb>T9bA6rbO=G3qGm3;kKLDCoXi*iYG>o|9nT-+b>zH)IvkWuErd(UUjo5Oh4e350J zea==s3G2tVo?ktFvD!EKcIDRW`Qh&wX9uURU0ufTPUUq;`J{gS*N4|!6uZ7%XZBm| zxK|Ht?(8{VK4(e!YF4YRa-p`jlm8xWve8gHQDbP0l+XkKQ31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_batchWithdrawEL/00004.png b/tests/snapshots/nanox_batchWithdrawEL/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_claimv2/00001.png b/tests/snapshots/nanox_claimv2/00001.png index 0f55e0b95f0f9103b54342f1f51e190cddeac617..fe0d1dec4a567d5e6fe6f0dfdf0b054d32e77619 100644 GIT binary patch delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($JQ%3b!sS%w0Qk_IKt|2`{_Yt`~H zl!HlcJwtBBd2mq@)~!5a#?&)l#>6bIGdJEXRDPldOS#E=ZDPADtq0*<=izKAXKwH2 z*4)~CFy939TOj(nFaP0p8$3~jIar16bP!~6Fcski0000000000000000001{`2$hF VC@y_Bf8YQB002ovPDHLkV1mT+suchL diff --git a/tests/snapshots/nanox_delegate_to_is_kiln/00000.png b/tests/snapshots/nanox_delegate_to_is_kiln/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_delegate_to_is_kiln/00002.png b/tests/snapshots/nanox_delegate_to_is_kiln/00002.png deleted file mode 100644 index 5492520723880b9e01d05f7080412eaa37df976e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)-P8*3`OVhvA6C5I?a^Ah{kd9v>~Oi#<5EU9l<%Q;4;W+OSUc`j zgOCMbveA(X(jO`n>v&JHl-I9WWmyW6H3p*aD!G(7Npe{ViY2@Jizo=`C08*E2c)Sf zNapf@8W|D4dUluyOzi>kuoeuhw!uD*x5>-p!Nylx%7ubpmB+5VtQ~BWg8rvTU&6AW zRSwDnM}IH_zz7RgLzS3_OI8|YKF=kB7Z&D%jnl-c%XgTPu3w4}K7xWnakEXXG$fZI z3fuU#Uu3x+(6}MoP(ELND&dmuHtGRYhkBi`-1-U-I(sfD#edc|T;?paz5=T3AJAH1 z1&o^o#()0Q-+?s#6A&K~_5=ml#qFv=wf6iM9>TkG#w?%6ZZ7-eo4?XE6`+z2f5iJ3 z&+2Dsb!r{l;nXa2hle0j2SX8F0000000000000000001Bm|rfPR|hOxer*5%002ov JPDHLkV1gVK&u;(# diff --git a/tests/snapshots/nanox_delegate_to_is_kiln/00003.png b/tests/snapshots/nanox_delegate_to_is_kiln/00003.png deleted file mode 100644 index 0e736ef5b4ebcff982ca8f620db4c4ad524b378c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`hpba4!+nDh2VAYZcrPebCi zH)?nOd+a?e=i?D9_)P7>uK(4udX=^?Pn`nN{Zejqo{rKlgXeozssHzIDPcVGaEG+z zm#DjpuQSqK{16kFIOnsNzWo`_Us1wWbYGXb@vM4i`Lj;ms8i$S%Cv1UNq!o=A&=9z z_+)%0@0Ls`xg0WA>FzQw7x9iS#?qGY+^U38DcAMI+Sz{-SJkfhDZY&1 zcS-n6-)9Hs?sAy%o?-Ljdg(;233*Y?9;_baYZ`SM{y%J8=eYcNA-mX##7QUrnM@6t s{P*OFgI;T#v_Hzkb$$T_5i&Tuhq1xuwEv>B)B8Zep00i_>zopr0MTuj_y7O^ diff --git a/tests/snapshots/nanox_delegate_to_is_kiln/00004.png b/tests/snapshots/nanox_delegate_to_is_kiln/00004.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_delegate_to_is_kiln/00005.png b/tests/snapshots/nanox_delegate_to_is_kiln/00005.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_delegate_to_is_not_kiln/00000.png b/tests/snapshots/nanox_delegate_to_is_not_kiln/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_delegate_to_is_not_kiln/00002.png b/tests/snapshots/nanox_delegate_to_is_not_kiln/00002.png deleted file mode 100644 index 5492520723880b9e01d05f7080412eaa37df976e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)-P8*3`OVhvA6C5I?a^Ah{kd9v>~Oi#<5EU9l<%Q;4;W+OSUc`j zgOCMbveA(X(jO`n>v&JHl-I9WWmyW6H3p*aD!G(7Npe{ViY2@Jizo=`C08*E2c)Sf zNapf@8W|D4dUluyOzi>kuoeuhw!uD*x5>-p!Nylx%7ubpmB+5VtQ~BWg8rvTU&6AW zRSwDnM}IH_zz7RgLzS3_OI8|YKF=kB7Z&D%jnl-c%XgTPu3w4}K7xWnakEXXG$fZI z3fuU#Uu3x+(6}MoP(ELND&dmuHtGRYhkBi`-1-U-I(sfD#edc|T;?paz5=T3AJAH1 z1&o^o#()0Q-+?s#6A&K~_5=ml#qFv=wf6iM9>TkG#w?%6ZZ7-eo4?XE6`+z2f5iJ3 z&+2Dsb!r{l;nXa2hle0j2SX8F0000000000000000001Bm|rfPR|hOxer*5%002ov JPDHLkV1gVK&u;(# diff --git a/tests/snapshots/nanox_delegate_to_is_not_kiln/00003.png b/tests/snapshots/nanox_delegate_to_is_not_kiln/00003.png deleted file mode 100644 index 5484aa06bc49351de18c43dc29be484c7f695151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmV+j1NZ!iP)@OyikmX{-rQag5{Mcd zF|xG^DNvn=b}|JQ-i%4Q89;EuBu)|6RkgH(G~UYxWFLSQBSzX!J3mQNP^D&%DXv`0 ze$p*NyB@+_6^)1RE5~4@ApgQ~F4JbO`Nun<((1B1n<{Elw7nj;-y}_#c0v>Ml9Tw@u90H)o5I@owxL@g5uuE4@4_d zdFZW1=NwUkr{X}{mv9vLY3#*a)8bsV}8{2VSofi&n*$s=WPqoh=L}z$6qPDq_;L#z+2h2ZRSym;|u^-8MR`yEAiB15Sj8uAL0#Zd+#nq zK#Wo_1!Z|Pk#F%|EDF3B@$jTw+p}ASLyeik4x)aw&=aA>&FhZ%Gz0PD6{nc0|*AVso7A10WJqo(Ck%{Ul03oFkIz zW)jT+9>JV1hR!9+0NnCnP*sf-GtTiNO#lD@0002+&in#0-DK$Au)#3^0000Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_delegate_to_is_not_kiln/00005.png b/tests/snapshots/nanox_delegate_to_is_not_kiln/00005.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_deposit/00000.png b/tests/snapshots/nanox_deposit/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_deposit/00002.png b/tests/snapshots/nanox_deposit/00002.png deleted file mode 100644 index 507044a9f8d43d46b9a14ad194b212a3c5f6b06f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}Cba4!+nDh2VB;R2L9@oI_ zulzRsSKT=M-@;Q8OkJn0XRgeB&`8)Tw_SWRi-L{pS;eYqDPOxqr$u;kQHk8}Y;48gE?uABpBn{2t6Z^UHM3MQVSKt~lsd ovT&}S(=xVTL4BYFVdQ&MBb@05Uw3tN;K2 diff --git a/tests/snapshots/nanox_deposit/00003.png b/tests/snapshots/nanox_deposit/00003.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_deposit/00004.png b/tests/snapshots/nanox_deposit/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00000.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00002.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00002.png deleted file mode 100644 index 69f1e6acb295af75135766d1a5e8325f4c4ea74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)F0AK_&*8rJ>>DV%~zQX9&%?CeCVP+~q9i(zkR7xk5a+yYhrDR;G?#ZYl zk?qJ@3LAfI{J%d7CF2HRJ9oMwogV;OTc#_|%v8km(YFG82DrVzscFcT&y5nJirOIk z3g)~BSKPbfkle1%#SU-xB#9lnt@L@v$4G42^P^(09jB?#UR0cn7z|~adyTKYG(Th1 zsy5pTXCFCj#7bv!@_VtGdV2$_q$22X%xbn$21%wo=`D>eyEc-krzJ|6)Tpal00000000000000000000006+t_y_Kb(TBtqXl(!h002ovPDHLkV1lN2 B{lNeL diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00003.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48cb30Fxen#$Z+;y9w^y%5m+iQT_$vb`=3}3iOljFr=22^wWuI)q!g~`hx?48+Wbzhv*P6LeYJ8|dQ3*n?YHU=?_XJ~ zQ!75pXnUwY*JITar&rx#U|1!6hVk*Yw^iwPZ@&Gy$d_%N{^NZncSG2HHtJ-suPJl; z?)9#(LsnsrQP%%0H?f8PAI}_C3^zap2o4$Z!b;q~*_CqQ)$7e=* z<{uFHSv}2D?RT2mO10m|UNHNIDEfO%dfB|#LmwDY$e`eiaC{DnT5s-KZIH01tDnm{ Hr-UW|p&GO8 diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00005.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00005.png deleted file mode 100644 index c63a3b840a14de66db65b55d3950c561e819ba67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)aNnf^KFZgjUl^=CFq zfl`{}kT>(|_Ilq_f`*Sb-#8yoE6HDOY$>N@=&o;)7?PO4mf`A zQ_6bM#SDcV^{u!apj7S2c`(1zw^7h9;j)PqHfwJbv;&I&&!!3f-B$ItNgH)4!XY|2NRH2=WB+~~=kzN1*0000000000000000AQIPb>b30Fxen#$Z+;y9w^y%5m+iQT_$vb`=3}3iOljFr=22^wWuI)q!g~`hx?48+Wbzhv*P6LeYJ8|dQ3*n?YHU=?_XJ~ zQ!75pXnUwY*JITar&rx#U|1!6hVk*Yw^iwPZ@&Gy$d_%N{^NZncSG2HHtJ-suPJl; z?)9#(LsnsrQP%%0H?f8PAI}_C3^zap2o4$Z!b;q~*_CqQ)$7e=* z<{uFHSv}2D?RT2mO10m|UNHNIDEfO%dfB|#LmwDY$e`eiaC{DnT5s-KZIH01tDnm{ Hr-UW|p&GO8 diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00007.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00007.png deleted file mode 100644 index c63a3b840a14de66db65b55d3950c561e819ba67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)aNnf^KFZgjUl^=CFq zfl`{}kT>(|_Ilq_f`*Sb-#8yoE6HDOY$>N@=&o;)7?PO4mf`A zQ_6bM#SDcV^{u!apj7S2c`(1zw^7h9;j)PqHfwJbv;&I&&!!3f-B$ItNgH)4!XY|2NRH2=WB+~~=kzN1*0000000000000000AQIPb>Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00009.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals/00009.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00000.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00002.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00002.png deleted file mode 100644 index 69f1e6acb295af75135766d1a5e8325f4c4ea74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)F0AK_&*8rJ>>DV%~zQX9&%?CeCVP+~q9i(zkR7xk5a+yYhrDR;G?#ZYl zk?qJ@3LAfI{J%d7CF2HRJ9oMwogV;OTc#_|%v8km(YFG82DrVzscFcT&y5nJirOIk z3g)~BSKPbfkle1%#SU-xB#9lnt@L@v$4G42^P^(09jB?#UR0cn7z|~adyTKYG(Th1 zsy5pTXCFCj#7bv!@_VtGdV2$_q$22X%xbn$21%wo=`D>eyEc-krzJ|6)Tpal00000000000000000000006+t_y_Kb(TBtqXl(!h002ovPDHLkV1lN2 B{lNeL diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00003.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48cvxp~!c|v~`MH>MY`s?ZxVzG2enYC)!jkRVH0K(f%!u}R%eL%+*lD{M?E?|<%j<4m zbJ>4gCq?ar)rk$f>)LN=#j?t5$_wZgdgz-&@PtKmTmGiS_Th=`;AE z=hRPP61ouou~TmJe&LWXrLht3S8e=pB=X zgTd`4qdl%$>Xr254yD%^?dQxtBvxsASwXngyg5L)HvNf$P^`wK*$R`J*K+6sZAS(h Z&IQ31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00006.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_1/00006.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00000.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00002.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00002.png deleted file mode 100644 index 69f1e6acb295af75135766d1a5e8325f4c4ea74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)F0AK_&*8rJ>>DV%~zQX9&%?CeCVP+~q9i(zkR7xk5a+yYhrDR;G?#ZYl zk?qJ@3LAfI{J%d7CF2HRJ9oMwogV;OTc#_|%v8km(YFG82DrVzscFcT&y5nJirOIk z3g)~BSKPbfkle1%#SU-xB#9lnt@L@v$4G42^P^(09jB?#UR0cn7z|~adyTKYG(Th1 zsy5pTXCFCj#7bv!@_VtGdV2$_q$22X%xbn$21%wo=`D>eyEc-krzJ|6)Tpal00000000000000000000006+t_y_Kb(TBtqXl(!h002ovPDHLkV1lN2 B{lNeL diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00003.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48cb30Fxen#$Z+;y9w^y%5m+iQT_$vb`=3}3iOljFr=22^wWuI)q!g~`hx?48+Wbzhv*P6LeYJ8|dQ3*n?YHU=?_XJ~ zQ!75pXnUwY*JITar&rx#U|1!6hVk*Yw^iwPZ@&Gy$d_%N{^NZncSG2HHtJ-suPJl; z?)9#(LsnsrQP%%0H?f8PAI}_C3^zap2o4$Z!b;q~*_CqQ)$7e=* z<{uFHSv}2D?RT2mO10m|UNHNIDEfO%dfB|#LmwDY$e`eiaC{DnT5s-KZIH01tDnm{ Hr-UW|p&GO8 diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00005.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00005.png deleted file mode 100644 index c63a3b840a14de66db65b55d3950c561e819ba67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 425 zcmV;a0apHrP)aNnf^KFZgjUl^=CFq zfl`{}kT>(|_Ilq_f`*Sb-#8yoE6HDOY$>N@=&o;)7?PO4mf`A zQ_6bM#SDcV^{u!apj7S2c`(1zw^7h9;j)PqHfwJbv;&I&&!!3f-B$ItNgH)4!XY|2NRH2=WB+~~=kzN1*0000000000000000AQIPb>Q31IlGsZ>P!Tdz2~FKAWsrZa2R@B0001hyRY3B$T`>Jl+r`r zQsT{kPx0+@nUbk?FyhELAH1=jQy0D_lVg|*a~kyl{drPKN?1Fko}0DLahd_W+Tpg( z!@@F*TnwnEDhKILf33dVXVyB+0MT3V-1WzO<17(oz%bYha4Skq15l=a&RIO&?MJ=O zW+_lgQ~$`D`E`4}pD97Z?yWbj2h>XP%8hO1vtlCrLh-w6ax)_sT~Qi&%FNKE7)KJDnb8KtO00ij;KF(B}-7`KI{Ln z347ZuBfX)D<6TXYO!nOjQcd=qF$O15g-$Y(%ouD%dI10c000000000000000fNg#O XN@F1go7$9>00000NkvXXu0mjfQ&PW3 diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00008.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00008.png deleted file mode 100644 index af34fd01d1aab1c8d18e2d19a328e40975639de8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s}ba4!+nDh2#E?<)YPs78^ zJ)ZCDm)t!nuXgrQt;VZcPWPUREAeDx9*hJT^WfdH$_-K3nyxM-H)}*Dmd!r;&V9e{ z>vxp~!c|v~`MH>MY`s?ZxVzG2enYC)!jkRVH0K(f%!u}R%eL%+*lD{M?E?|<%j<4m zbJ>4gCq?ar)rk$f>)LN=#j?t5$_wZgdgz-&@PtKmTmGiS_Th=`;AE z=hRPP61ouou~TmJe&LWXrLht3S8e=pB=X zgTd`4qdl%$>Xr254yD%^?dQxtBvxsASwXngyg5L)HvNf$P^`wK*$R`J*K+6sZAS(h Z&IeOmXuOjcLY?bsS-{o}YzSUrR9R3}64=&61)Q?}?Yt837*cy8gA!K(4EbX)rG zSsT{RYV~2=>uZ$L{4Zp>S2$z)58hLng4Tyu#fir*q_$vBp6HFbMaOuS#(v$qhqGYUx7nozXClo!%^z>$-Lxg}_ktyy zH~u*Dm2i6%?Kb;;zwk%zopr05}4wVgLXD diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00010.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00010.png deleted file mode 100644 index 460a5e92b658d2e27542e4522f0b7b83ed120c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmV;U0bKrxP)w#o=l{^8*^7{?MZB{>EM_7+5G_|(F#Q^ZP7YqQqi%Q#sJZ9&f^%N z9U%Dg?C*{}p^uuSOeDPzVs3-}P)nujfJ^)h%4rcj!mhn8x&!pmTfOf3_&L9ycWy!V z-N~uB#l;tCLjm+8XVdQO;_MHzUsjg}0RRBNo0*sXAHIGXT>gG*cC!F+tTSMMEEi(_ zw2zx>e((`9GH=G2V{W`e$Wnk=nu^N4AN=^)SIbg>8J+!`Lv75pDNzB;)XehrnkGn8 zfSGJ-_F1_KaB01NUYH|tyya=`Y+EWV|B!ib&(+L-2mKiFy7O(U5B$eOR@dMpy)W+c zJf=w|`(cb!ll@@SU?+B=olcTW4VEIk0000000000000000002MGQR{ zPTutVzF*~=QGSca3TK|Bv;J3qGFx#pEX4(+yP$rey7tnJj#bxEH?Lat*6`f<@bAmM zcG}G3ti5{7FEm@gTl4Qh{m=Ekm~*l!eE!x$i7k0K?%UHu#nX(J9gaQx z_FtCV`F}!njqZNOz8YWpmpIdQ6LZ~~XU}9eye-OG$Rg{;E|caRFzMl}pYnlfUsVn- z)!WIDf6M8o+GPddzXr_#!haLK9P|uXI9adBM?S~3f)QvR5@^WXSAX#Y@4+f_O^~Rk LtDnm{r-UW|5$2&s diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00012.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00012.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00013.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_8/00013.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00000.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00002.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00002.png deleted file mode 100644 index 69f1e6acb295af75135766d1a5e8325f4c4ea74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)F0AK_&*8rJ>>DV%~zQX9&%?CeCVP+~q9i(zkR7xk5a+yYhrDR;G?#ZYl zk?qJ@3LAfI{J%d7CF2HRJ9oMwogV;OTc#_|%v8km(YFG82DrVzscFcT&y5nJirOIk z3g)~BSKPbfkle1%#SU-xB#9lnt@L@v$4G42^P^(09jB?#UR0cn7z|~adyTKYG(Th1 zsy5pTXCFCj#7bv!@_VtGdV2$_q$22X%xbn$21%wo=`D>eyEc-krzJ|6)Tpal00000000000000000000006+t_y_Kb(TBtqXl(!h002ovPDHLkV1lN2 B{lNeL diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00003.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48cb30Fxen#$Z+;y9w^y%5m+iQT_$vb`=3}3iOljFr=22^wWuI)q!g~`hx?48+Wbzhv*P6LeYJ8|dQ3*n?YHU=?_XJ~ zQ!75pXnUwY*JITar&rx#U|1!6hVk*Yw^iwPZ@&Gy$d_%N{^NZncSG2HHtJ-suPJl; z?)9#(LsnsrQP%%0H?f8PAI}_C3^zap2o4$Z!b;q~*_CqQ)$7e=* z<{uFHSv}2D?RT2mO10m|UNHNIDEfO%dfB|#LmwDY$e`eiaC{DnT5s-KZIH01tDnm{ Hr-UW|p&GO8 diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00005.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00005.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00006.png b/tests/snapshots/nanox_lrCompleteQueuedWithdrawals_redelegate_1/00006.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00000.png b/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00002.png b/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00002.png deleted file mode 100644 index 899b5918e75cdd8ac389da0ea8dc6ba2b6e4c36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)JSB=0hdR9loE6q?wR)O)Lhh@eP}Bqaa<004mP{5W)S&MBqiI24Jm zA6+D&iMXNjYr?B)XC0&*Fwl&xFP?|9LpQ19L@cAm9HfuAc ztFAI@!|N%;b;m zWV`>5R&*;l>&zyHr(S6)u`jzvmO@S63oAXmZuoSlBNKfb_qtt63d>b&HNtU-+lq5YzmISJTY> zHi@5?6JVY$S0n5$7Hyq5SYaOm*TYZ|s!K6<{F5fj%7_O(h_yyVFp<~ZKGdzQbJpWWSU*}U@B^m?vc zf%eO;9{YUOKCyLrK}cEapRdt!_qBp--zGTLv`8+0wpyDfvER$lx@aEf`HM64Ce$$0 zY+ibw@v(gUnU?M|b^X^QHvVa|3d-_T=Xc)z!{o_N!@MI8Qc9l+#$LxcP*ry}aH-sOu e0>c9t*gfOdH~qpr!)KB;NZ8ZW&t;ucLK6U-%B4*J diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00004.png b/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00004.png deleted file mode 100644 index 2a409b85c209be284ea1c1bb9820a3c8367a5a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2#;G|{+o`#1d z>G_BL_8*D;)+pJg$ha}uWhnN(z1rHpeAPDt{eR^S-@S9}r`_1v`))Od$m;2i9Ww|<@2UTJhNthN zu*Gll_!92FcIpr}ob28E>yLhIzHY`xvAz#huY_uE+A?;>d#0xcrq;SgKUd4+vRZkj zq?TdEf6pADr7~-M|MgbxylC|1z|!BG6>n9|bsv|MtvY;dci1+W-(2Dkdp{WbsW_}4 z{5QELK=|+B8O;7EivHq`X?)w1_5i~O85}UHx9JydIIH0#0220e^>bP0l+XkKwcM~8 diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00005.png b/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00005.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00006.png b/tests/snapshots/nanox_lrDepositIntoStrategyNormal/00006.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00000.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00002.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00002.png deleted file mode 100644 index 899b5918e75cdd8ac389da0ea8dc6ba2b6e4c36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)JSB=0hdR9loE6q?wR)O)Lhh@eP}Bqaa<004mP{5W)S&MBqiI24Jm zA6+D&iMXNjYr?B)XC0&*Fwl&xFP?|9LpQ19L@cAm9HfuAc ztFAI@!|N%;b;m zWV`>5R&*;l>&zyHr(S6)u`jzvmO@S63oAXmwipyLtC!&-~z1H*xoK&WyUx z{mpY+BN+_~G9QT-ni!Y&uYZ~RFS~g9g;lHK+PW61s#e6>rzpCr|E)L9PCNR}Np#b% z-*HB-;#)8BEB^6x>%Fw3&$xC&WXn#3; z__8Oa3I7%bY!q1hc)$DmdmHPvS#6#^?Nj6h2gBq0D~@i-WIFV?YU?}W$(lEduRZ_f zd*DWj<`w?OWrw{YdRRK9a^BeNmtD8qZsK(t%ZHEuo$uV`sP^l$iIeXaab004X}5fPE-C<1&%2ar-q zCH0Su!9L^t9UXv4L~_nYn##d(Tncp0=vq}fRa3fHl=vA?{S)=iBX|0sDpsxzyU^9k zan3n5`)P*(IGoBwoAFK7lM8lPg5EcSFAAOkdTDMKcS}20!dH^ZwpfDnqI{}KcNc9p z45#|X&O87BfVW|NGnhF)ES!EH3Ja@1Ro7|Is_0*uIpfFQExCY`Xg}A(B({xP?f54r z+nEW~zl(0yP7IDUFJk%=V;fENTI3X7-ur!KUiW6)`zE|9%FQ31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00006.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownERC20/00006.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00000.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00002.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00002.png deleted file mode 100644 index 899b5918e75cdd8ac389da0ea8dc6ba2b6e4c36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)JSB=0hdR9loE6q?wR)O)Lhh@eP}Bqaa<004mP{5W)S&MBqiI24Jm zA6+D&iMXNjYr?B)XC0&*Fwl&xFP?|9LpQ19L@cAm9HfuAc ztFAI@!|N%;b;m zWV`>5R&*;l>&zyHr(S6)u`jzvmO@S63oAXmQ31IlGw|9pdw@pNh82cde6tGNqJ1{Kqv_T0002k?q%D3N~wH~F&h3S zzbK_tCqO-Op^yI(2 zS&1K^30Zr-myGsX!{~<)-X^_f<)+Se`k+|;a5&YJ0ymnJj7Pw?!L0|!xY>HRh!#ZG zw(O^%iN-NilV>~s1P>44tQ`vV(u(t!xHvUQ_vk5{}SF~@NJ>KrwxqKzytNZ=k_3%Q26Ui4c z6X)EP`dV>ZMw}l!joXSBE@X8M4#NB3k?uz~$V7h|CDcTJGjd>wS;*2skjcSPgckq+ n00000000000000009fW9=_5(OU%?(o00000NkvXXu0mjfk`Kst diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00004.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00004.png deleted file mode 100644 index 4de95ddac5f3979a6c383266f398f2a1914ea380..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmV;r0Y(0aP)vWfrr$vc>0=oZ1`De|YY;>o!-rZZs z;jNu>j?I2rVFIc{xzHJ3q@J9xN(p-33|6rnmJ*T>6kvVFx zrK-DT8gjT9q{};m&x=@jNw2VE(7HD{MgM@A*Sag*_JZWwtPXno873d<=jZJ1>?g+w zn2fdCtZxTrZlUXSAg{UcDM58BEj%f{x>{=fP;s5-cC=Z1I)mR>R400000 k0000000000003_D4^#$0bJQyu;{X5v07*qoM6N<$f}*|6J^%m! diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00005.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00005.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00006.png b/tests/snapshots/nanox_lrDepositIntoStrategyUnknownStrategy/00006.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00000.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00002.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00002.png deleted file mode 100644 index 8cbdac7f8d35233cafad2947c0c7f25a72f3885c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmV134`Wt?v;g`r9#?=l4`S&8nb-~+ z=_+Hh*-+5h`kLrXDVtcL2ybiS%p2GG>_3oR$}tqrL1m-)X}U)==V_bPnZ&hojnGLqm=8nYQWZr3f({i??Q>N8>8%-Z^;% zD3S7h^}Ag0zr)UEqx5Blo{UVHg_;M_C}jU2w$IwnRZZP!PN~6dh18KvW7J@$X|oV+ xXe5~$EJb<&000000000000000004kxegO1`#_>5zw}=1$002ovPDHLkV1l>O>a_p> diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00003.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48c*ev(D{JOl`ROx1XWIOjX|pyRbaXvg$z~&Ur>f`-f3&}NF^lmQ z{r^H=`kxuTRXe}^-x7}Qf@^-QRX=mL%fG#3`{q&Kj@F%iYvbK^wA8K^Dp7jwSJCge z+uG-0iCUYu28wO_YOoP58S tE3?mA;WSUL$%ik`wE`3}NTA{NAEx__FJ$jH{cZ#ad%F6$taD0e0syuQxSs$3 diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00005.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00005.png deleted file mode 100644 index cf33e8caa9aaeec7e19d3259490e0d8cfd1fd124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jjba4!+nDh3Aci&+J0oTAw zujX#}uex!%+yaG=DTcC%a%Jx%T|V-^(PC~B0O@}kck5NK*VFo*zzX&I8cRde58VCi zsQ7(R4x?qk)1&5vJ%-Dse9FJMrhnITmi3{ssV72oGn?#RuQu^2IraIt#N9PVwqIyj zbGLp<&$kr@zZ6^IJ=aE7uKYavo~7=8%ePslIL%*8IimYu|G~A=?)z`-+BrkW=W5h1 zy^KY5K6jsF{+_?#u)>_Jz6<5*Zh!9AE9{otBQV|I{>rb<_~viuf7SHP!$vr6v2pBz z&x{|=<{7hnNk9Ggv`bo+nmqFqZ^7c30lNh6Pq1VBJN^3H-Lo#6@fXgwV|3@9pPIh> za>n$kLy>k*jP;%8H+<~i(VO*cr={?%BsH6T$96iOcy>#P@$tOr%(EFzKK6|i@y-v< zd#R+pef!V5_J4`&UoJVJ2MCS)k2qS~(KbcpEFl;HAEw&yc?CI*~ Jvd$@?2>=1^x?=zU diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00006.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00006.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00007.png b/tests/snapshots/nanox_lrQueueWithdrawals_1_2_dimension/00007.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00000.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00002.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00002.png deleted file mode 100644 index 8cbdac7f8d35233cafad2947c0c7f25a72f3885c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmV134`Wt?v;g`r9#?=l4`S&8nb-~+ z=_+Hh*-+5h`kLrXDVtcL2ybiS%p2GG>_3oR$}tqrL1m-)X}U)==V_bPnZ&hojnGLqm=8nYQWZr3f({i??Q>N8>8%-Z^;% zD3S7h^}Ag0zr)UEqx5Blo{UVHg_;M_C}jU2w$IwnRZZP!PN~6dh18KvW7J@$X|oV+ xXe5~$EJb<&000000000000000004kxegO1`#_>5zw}=1$002ovPDHLkV1l>O>a_p> diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00003.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48c*ev(D{JOl`ROx1XWIOjX|pyRbaXvg$z~&Ur>f`-f3&}NF^lmQ z{r^H=`kxuTRXe}^-x7}Qf@^-QRX=mL%fG#3`{q&Kj@F%iYvbK^wA8K^Dp7jwSJCge z+uG-0iCUYu28wO_YOoP58S tE3?mA;WSUL$%ik`wE`3}NTA{NAEx__FJ$jH{cZ#ad%F6$taD0e0syuQxSs$3 diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00005.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00005.png deleted file mode 100644 index cf33e8caa9aaeec7e19d3259490e0d8cfd1fd124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|`Jjba4!+nDh3Aci&+J0oTAw zujX#}uex!%+yaG=DTcC%a%Jx%T|V-^(PC~B0O@}kck5NK*VFo*zzX&I8cRde58VCi zsQ7(R4x?qk)1&5vJ%-Dse9FJMrhnITmi3{ssV72oGn?#RuQu^2IraIt#N9PVwqIyj zbGLp<&$kr@zZ6^IJ=aE7uKYavo~7=8%ePslIL%*8IimYu|G~A=?)z`-+BrkW=W5h1 zy^KY5K6jsF{+_?#u)>_Jz6<5*Zh!9AE9{otBQV|I{>rb<_~viuf7SHP!$vr6v2pBz z&x{|=<{7hnNk9Ggv`bo+nmqFqZ^7c30lNh6Pq1VBJN^3H-Lo#6@fXgwV|3@9pPIh> za>n$kLy>k*jP;%8H+<~i(VO*cr={?%BsH6T$96iOcy>#P@$tOr%(EFzKK6|i@y-v< zd#R+pef!V5_J4`&UoJVJ2MCS)k2qS~(KbcpEFl;HAEw&yc?CI*~ Jvd$@?2>=1^x?=zU diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00006.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00006.png deleted file mode 100644 index b704065d711a0e90112ae1d81dd2be4e523494b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2VbkSi29*4kN zFa5UsSKTts1JK?taA!`=4$&z8@tbd>t`KaqVpr<7^e z{67!X(m%>Dsupa0JlmqnF!< zsbaRhyz1h=*9?DYF4dnN)_rTGxBvV(VSIYtzP1k+EP7(YR3{x{Yw>LR)x$^c95i`* zdOyqF3pUH{KKXfVzDS~w-mQfTmf!#O=c4M}+j?;w(KDWh{53nI{ARJ&h0ZzQhpK(1 zaf`?^ynl1WGNCs9#G0cTzt$U8)#Pjs4_{aGWT&{vMZJmhc4c(UV2IWDvXS#|k{8pr zD%~U|Hy_q`8Lqc=F&f9$w44r$I>7PovLUC&yy?u*O-eQ^UTXNOJrrL4wEKhIn&P7- zJVqDqFB8sMv|rNlgNx{=62X+B0_{WGz#u{fcb-XK*ZRt{xUFCfNZ8ZW&t;ucLK6Tx C-m|&@ diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00007.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00007.png deleted file mode 100644 index b54209a0d779c558149a7fc1f1ac84c2a64ce46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t3ba4!+nDh2V_NGG$JZ*_3 z=lnMPS54Lbmyj}Hc7@wdhx^alA1~E4Rm{xf0O~qWB>wipyLtC!&-~z1H*xoK&WyUx z{mpY+BN+_~G9QT-ni!Y&uYZ~RFS~g9g;lHK+PW61s#e6>rzpCr|E)L9PCNR}Np#b% z-*HB-;#)8BEB^6x>%Fw3&$xC&WXn#3; z__8Oa3I7%bY!q1hc)$DmdmHPvS#6#^?Nj6h2gBq0D~@i-WIFV?YU?}W$(lEduRZ_f zd*DWj<`w?OWrw{YdRRK9a^BeNmtD8qZsK(t%ZHEuo$uV`sP^l$iIeXaab*ev(D{JOl`ROx1XWIOjX|pyRbaXvg$z~&Ur>f`-f3&}NF^lmQ z{r^H=`kxuTRXe}^-x7}Qf@^-QRX=mL%fG#3`{q&Kj@F%iYvbK^wA8K^Dp7jwSJCge z+uG-0iCUYu28wO_YOoP58S tE3?mA;WSUL$%ik`wE`3}NTA{NAEx__FJ$jH{cZ#ad%F6$taD0e0syuQxSs$3 diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00009.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00009.png deleted file mode 100644 index 857b4307fc540feea5dfd719ceeccd7c6fef03a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|bPE<>I z`!CSwmcQ&`eI@?sahr<*pKI3^MbvH9F@4&=Evoul@Izj~>w|{*+vN0?v0mP)|6k~f z>*pC|lb=V|s~qyR$ZmJ4{hiw{Klf7Zw+EdTtuvQjn=QC(gMDbzx)YVEdyc2JZ+jkc@j_@?(u-eO<eZRgiFc0ktxGr@_jRkc+Jgks z{P{;%T{w%}nC9FR5=q&W_OD@zqiyGh(EFP>@^3i(^lo!h`*pj-$@h!7GW)z0PV>YZ j)!3IS?E!`fGB}VqFJ;4%v?{Kp)gWO{S3j3^P6Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00011.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension/00011.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00002.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00002.png deleted file mode 100644 index 8cbdac7f8d35233cafad2947c0c7f25a72f3885c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmV134`Wt?v;g`r9#?=l4`S&8nb-~+ z=_+Hh*-+5h`kLrXDVtcL2ybiS%p2GG>_3oR$}tqrL1m-)X}U)==V_bPnZ&hojnGLqm=8nYQWZr3f({i??Q>N8>8%-Z^;% zD3S7h^}Ag0zr)UEqx5Blo{UVHg_;M_C}jU2w$IwnRZZP!PN~6dh18KvW7J@$X|oV+ xXe5~$EJb<&000000000000000004kxegO1`#_>5zw}=1$002ovPDHLkV1l>O>a_p> diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00003.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00003.png deleted file mode 100644 index 343850a22a7448ea232679f2296b3c327c526eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmV+`1JwM9P)LFNuq+hPRQ`of(U zA%qY@$bL*}sO$7}ODMyNbusxhReMc!>)E>~wIgXt?U-7z*EhAFvSTqP46iUE%c~XT z@mQ4yKzZCHP{!E9atlAW#Xew0iYOT&ligBxqQz6xf@rx?K8GZDj25IuLTb6LfB_-e z`{b62YIEQiAC*Zn0WhlM>OcX-ZnKS0qh?$$kUif?Q__7#{cbp&dUe28$k9)-$-8DI zTNXFVk})&v_6uQaz!L(;b$FKoZK|{Zkd0X;oMxr!Rg}f#TybAf8}+X9^~{#wTH^ZY zaboqVZ=ohWYm4%sbe&A^Z$oi4y}ud8;3S-dPBL&ZW3UwI-mx00s(lHbMAW)?Pi8z? zs~rGc0#}S0t=&HE+dOjTjtdxX)px_y&AGlc!lzfG^>*MUSc-7TUe8ShB8AUA?LG}a zGmQY*%cWqerqp7ob6OtGRC8j3JuQq!>s2G5;C(P~MIwW0(Z!~PESF|wY~@h^RN-jC zj%#5L2MC`Vc!eB&mTkhPiYWlb#8iJ1?`e~&eN{KLi<}??Fz(D@;q|%dlwe9M-`W*^-(NvZstWN;SI?sCC}rW|5pW4N1JevQ3mhL zNW;48c*ev(D{JOl`ROx1XWIOjX|pyRbaXvg$z~&Ur>f`-f3&}NF^lmQ z{r^H=`kxuTRXe}^-x7}Qf@^-QRX=mL%fG#3`{q&Kj@F%iYvbK^wA8K^Dp7jwSJCge z+uG-0iCUYu28wO_YOoP58S tE3?mA;WSUL$%ik`wE`3}NTA{NAEx__FJ$jH{cZ#ad%F6$taD0e0syuQxSs$3 diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00005.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00005.png deleted file mode 100644 index 94771e7febd5e3c47d0ad945f1685bcf46e696d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP)Q31IlGw|9pdw@pNh82cde6tGNqJ1{Kqv_T0002k?q%D3N~wH~F&h3S zzbK_tCqO-Op^yI(2 zS&1K^30Zr-myGsX!{~<)-X^_f<)+Se`k+|;a5&YJ0ymnJj7Pw?!L0|!xY>HRh!#ZG zw(O^%iN-NilV>~s1P>44tQ`vV(u(t!xHvUQ_vk5{}SF~@NJ>KrwxqKzytNZ=k_3%Q26Ui4c z6X)EP`dV>ZMw}l!joXSBE@X8M4#NB3k?uz~$V7h|CDcTJGjd>wS;*2skjcSPgckq+ n00000000000000009fW9=_5(OU%?(o00000NkvXXu0mjfk`Kst diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00006.png deleted file mode 100644 index b704065d711a0e90112ae1d81dd2be4e523494b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>x2ba4!+nDh2VbkSi29*4kN zFa5UsSKTts1JK?taA!`=4$&z8@tbd>t`KaqVpr<7^e z{67!X(m%>Dsupa0JlmqnF!< zsbaRhyz1h=*9?DYF4dnN)_rTGxBvV(VSIYtzP1k+EP7(YR3{x{Yw>LR)x$^c95i`* zdOyqF3pUH{KKXfVzDS~w-mQfTmf!#O=c4M}+j?;w(KDWh{53nI{ARJ&h0ZzQhpK(1 zaf`?^ynl1WGNCs9#G0cTzt$U8)#Pjs4_{aGWT&{vMZJmhc4c(UV2IWDvXS#|k{8pr zD%~U|Hy_q`8Lqc=F&f9$w44r$I>7PovLUC&yy?u*O-eQ^UTXNOJrrL4wEKhIn&P7- zJVqDqFB8sMv|rNlgNx{=62X+B0_{WGz#u{fcb-XK*ZRt{xUFCfNZ8ZW&t;ucLK6Tx C-m|&@ diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00007.png deleted file mode 100644 index b54209a0d779c558149a7fc1f1ac84c2a64ce46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{t3ba4!+nDh2V_NGG$JZ*_3 z=lnMPS54Lbmyj}Hc7@wdhx^alA1~E4Rm{xf0O~qWB>wipyLtC!&-~z1H*xoK&WyUx z{mpY+BN+_~G9QT-ni!Y&uYZ~RFS~g9g;lHK+PW61s#e6>rzpCr|E)L9PCNR}Np#b% z-*HB-;#)8BEB^6x>%Fw3&$xC&WXn#3; z__8Oa3I7%bY!q1hc)$DmdmHPvS#6#^?Nj6h2gBq0D~@i-WIFV?YU?}W$(lEduRZ_f zd*DWj<`w?OWrw{YdRRK9a^BeNmtD8qZsK(t%ZHEuo$uV`sP^l$iIeXaabbPE<>I z`!CSwmcQ&`eI@?sahr<*pKI3^MbvH9F@4&=Evoul@Izj~>w|{*+vN0?v0mP)|6k~f z>*pC|lb=V|s~qyR$ZmJ4{hiw{Klf7Zw+EdTtuvQjn=QC(gMDbzx)YVEdyc2JZ+jkc@j_@?(u-eO<eZRgiFc0ktxGr@_jRkc+Jgks z{P{;%T{w%}nC9FR5=q&W_OD@zqiyGh(EFP>@^3i(^lo!h`*pj-$@h!7GW)z0PV>YZ j)!3IS?E!`fGB}VqFJ;4%v?{Kp)gWO{S3j3^P6Q31IlGw|9pdw@pNh82cde6tGNqJ1{Kqv_T0002k?q%D3N~wH~F&h3S zzbK_tCqO-Op^yI(2 zS&1K^30Zr-myGsX!{~<)-X^_f<)+Se`k+|;a5&YJ0ymnJj7Pw?!L0|!xY>HRh!#ZG zw(O^%iN-NilV>~s1P>44tQ`vV(u(t!xHvUQ_vk5{}SF~@NJ>KrwxqKzytNZ=k_3%Q26Ui4c z6X)EP`dV>ZMw}l!joXSBE@X8M4#NB3k?uz~$V7h|CDcTJGjd>wS;*2skjcSPgckq+ n00000000000000009fW9=_5(OU%?(o00000NkvXXu0mjfk`Kst diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00010.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00010.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png b/tests/snapshots/nanox_lrQueueWithdrawals_2_3_dimension_with_unknowns/00011.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_lr_undelegate/00000.png b/tests/snapshots/nanox_lr_undelegate/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*%aHdtUInDsB@h&BfhV%)mYU1H>1PWo0@(r(pH(J z&)@N@*vC3L;L^csp1*hOIk!4<1Jk5u;c)?e_pTnkceRc?YLn~#H+LWSJYCnmcG-HC zDcv2v+V1erZQ!~;sqEkDD@!G|UOl$jyzO%6>(6uVzfjo2``zX1i^lt5R}Jo+=H9D& zUQsvvUOfNi!}}KAyZw1@ZQPYiKDi|0D^C_QH7iVRUc{jf@;?#?I3pfp`tBij(ZqU? NsHdx+%Q~loCIIUFqrCtC diff --git a/tests/snapshots/nanox_lr_undelegate/00002.png b/tests/snapshots/nanox_lr_undelegate/00002.png deleted file mode 100644 index c6bdfc1c7d6d3f0a0ab42d2816e1f3d8cde74a5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)&bd&Y>&4;=m#baZ()&UA?Rs~?d#__1 zgug06Cc<<^$F9hI9I06Al4LE-fAf-QDadv+5S3TiwTwxU(^8O@eB~RWV5FB^$4nfM zhNd7}$OA{uh{WBq!bD)`8(VrV@d*y4DbyxbmaVpnTxV-1``%yr+7A!jE=E55SbwrE)L#hnPew@)fBdQ$;d>~AciFj`p?S?QOSXmUH$7>) z4mgsH+@jq%J~F#4wcgeTdwE+H+DjqG^g&mI7XSbN000000000000000=;j~IHfvV{ SoPYoT0000Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_lr_undelegate/00004.png b/tests/snapshots/nanox_lr_undelegate/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_multiClaimv2/00001.png b/tests/snapshots/nanox_multiClaimv2/00001.png index 0f55e0b95f0f9103b54342f1f51e190cddeac617..fe0d1dec4a567d5e6fe6f0dfdf0b054d32e77619 100644 GIT binary patch delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($JQ%3b!sS%w0Qk_IKt|2`{_Yt`~H zl!HlcJwtBBd2mq@)~!5a#?&)l#>6bIGdJEXRDPldOS#E=ZDPADtq0*<=izKAXKwH2 z*4)~CFy939TOj(nFaP0p8$3~jIar16bP!~6Fcski0000000000000000001{`2$hF VC@y_Bf8YQB002ovPDHLkV1mT+suchL diff --git a/tests/snapshots/nanox_requestExitv2/00001.png b/tests/snapshots/nanox_requestExitv2/00001.png index 0f55e0b95f0f9103b54342f1f51e190cddeac617..fe0d1dec4a567d5e6fe6f0dfdf0b054d32e77619 100644 GIT binary patch delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($JQ%3b!sS%w0Qk_IKt|2`{_Yt`~H zl!HlcJwtBBd2mq@)~!5a#?&)l#>6bIGdJEXRDPldOS#E=ZDPADtq0*<=izKAXKwH2 z*4)~CFy939TOj(nFaP0p8$3~jIar16bP!~6Fcski0000000000000000001{`2$hF VC@y_Bf8YQB002ovPDHLkV1mT+suchL diff --git a/tests/snapshots/nanox_requestValidatorsExit/00000.png b/tests/snapshots/nanox_requestValidatorsExit/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_requestValidatorsExit/00002.png b/tests/snapshots/nanox_requestValidatorsExit/00002.png deleted file mode 100644 index 9c0b648363753a003d260e80fb3243b7dc659f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)^v0rDvhE{=$uV2| zu#2*UF#mbG<8tXF`$pniDPmGk8!e!^4b#VV1s4X(EB#U{cca>9ujt);2DF(+S$$g` zcBzWjrXXdgXz<42{pQMK;mZGLni_HixjP7y7&b^AE|mX)ybZ=Ca^ zRi~h*3guP)$tTyeYWI(x2UWbfJ)eAgsTBH1c3Onj?L7TYhCwF!$8Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_requestValidatorsExit/00004.png b/tests/snapshots/nanox_requestValidatorsExit/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_stakev2/00001.png b/tests/snapshots/nanox_stakev2/00001.png index 0f55e0b95f0f9103b54342f1f51e190cddeac617..fe0d1dec4a567d5e6fe6f0dfdf0b054d32e77619 100644 GIT binary patch delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($JQ%3b!sS%w0Qk_IKt|2`{_Yt`~H zl!HlcJwtBBd2mq@)~!5a#?&)l#>6bIGdJEXRDPldOS#E=ZDPADtq0*<=izKAXKwH2 z*4)~CFy939TOj(nFaP0p8$3~jIar16bP!~6Fcski0000000000000000001{`2$hF VC@y_Bf8YQB002ovPDHLkV1mT+suchL diff --git a/tests/snapshots/nanox_withdraw/00000.png b/tests/snapshots/nanox_withdraw/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_withdraw/00002.png b/tests/snapshots/nanox_withdraw/00002.png deleted file mode 100644 index 1cbb181a7ea7f8f3bdf5791e3630ae44e8524412..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{7P)k=Im_{J9E;ms z*`n<`w)ry<TTm~E@_iX-f5eTF zvHMTjVF1)3kdG&Sb-QryK_V6Rc`*e50Qdy++0Y#lDVL}>U88_eW*5$v^nKV#j^U~2 z%;$odbEKYSy;PB{5bG{2<0tiSUs*vYcgnQ_Bx+FUK8j4D6O%Bf%Amk#EH zr6QVHfvdIrWy&dRTt{U9&wmu^x;JiCG3n@fU3(U9UF&L@GoUYS6!-2k^DE%>S)l&R zy0Ml$LjEy0OV0JvNv{BB=VWcl$Miom_C@9@+E4gindYh9Z4SFpch!H_X&B!3db4~} z-5?YFWg4L-`in6Jk=TVI4T8)VJc{rF0000000000000000001w`30DMg?*X^8@K=f N002ovPDHLkV1oXA+zkK# diff --git a/tests/snapshots/nanox_withdraw/00003.png b/tests/snapshots/nanox_withdraw/00003.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_withdraw/00004.png b/tests/snapshots/nanox_withdraw/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_withdrawCL/00000.png b/tests/snapshots/nanox_withdrawCL/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_withdrawCL/00002.png b/tests/snapshots/nanox_withdrawCL/00002.png deleted file mode 100644 index 7637e8597f5099ee8724adde72c8b5c8c5c147cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)VBigEW(4fSGcVym&NT|GZ=zocitz>u=9 z@-h5Rjosl`L;DKfiYb2zzH{HdW42Cu-~4jCv?v?RZppr~E+Lhk$$rlHF6ibEj<2u= ztI$rJBy$XwBE0|r0000000000000000KhW8NlRkByo6}B00000NkvXXu0mjfE4j_c diff --git a/tests/snapshots/nanox_withdrawCL/00003.png b/tests/snapshots/nanox_withdrawCL/00003.png deleted file mode 100644 index b2401b220a6db139961dbcfed78507c4de86032a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Q31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_withdrawCL/00004.png b/tests/snapshots/nanox_withdrawCL/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ diff --git a/tests/snapshots/nanox_withdrawEL/00000.png b/tests/snapshots/nanox_withdrawEL/00000.png deleted file mode 100644 index 487ea10fcfeb2f3e6b79239459672251d49addd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%}$P)vpO}&+|8}fC)JNq`>?#dJ%s{^>GN_4usXQirk{^@^BA?p!El9&T9q~zMsh2=YdLB`_ONiP zKy6XlUGFZ>Cn7mP3u*?m9zd-f8w*wncT3<(aoi-(r%ll!5+Ui!Y&g{z0&Zk3U} z{`%@K$9q4vESMj5^U=>&tG*cD=QMbwd-_avNcyr#r}N*`oDJRjdfiLz6N?4T_*MN{ za7E@x_|=|@RV=&jom$miaA$($+jDo9#>Qs9?}$}Rp4<25OJBtIrdhH^rnhdG&g1K6 zyZ+bjK8r-*%AKdy&o_H|;A`PUPKkdNt7KyK^1rhFakYD|%xgE@`0#!IwYxWQMdo&y z#olN44W8NTT`$?sGH1H;m-QZLIU7am53(=5;A8Hn#=ee2ALKP8@ZcGL+7nZzn41-1 OAW=_OKbLh*2~7axp}|uC diff --git a/tests/snapshots/nanox_withdrawEL/00002.png b/tests/snapshots/nanox_withdrawEL/00002.png deleted file mode 100644 index 5781d9906232fbadae0b1df8d805cb9527b55639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_8Aba4!+nDh2#;G{zeJPnCu z>G_BL_8*D;worL;qeJj*0h#~rS0*V+uuNIT0@S7RU08I-l%Vy+=ei%S>#_JQE&b1< zMW!eJv-n*`S7Xa3q?!0 zqH6l4sjn89RF!XPik!CNMr`6`TLtdVVzVSayOrELS5>X+xLD;{(aenMW9sF{*4bya zGiInc)>du^pMT%xmPgjn+PWD)PdsQ++Tq5z@;BojyL-X9?=2bn(j7m^thIj|=snB& zb>T9bA6rbO=G3qGm3;kKLDCoXi*iYG>o|9nT-+b>zH)IvkWuErd(UUjo5Oh4e350J zea==s3G2tVo?ktFvD!EKcIDRW`Qh&wX9uURU0ufTPUUq;`J{gS*N4|!6uZ7%XZBm| zxK|Ht?(8{VK4(e!YF4YRa-p`jlm8xWve8gHQDbP0l+XkKQ31IlGw|9L_yRTLLS&ux#tU!)?{o#0wDkZ008EG?1xM#ZH*XXtLJje zn{n*@df&j4{!!jD&jO^BVvJ()hQHH!%W3(Dj6W`QoPO|;n2-Ayk2fOj!k(QvFKVVz zN;#YPAImsuXF2GEUvpr^C8&NT!any~^~irCB9x)jPI1+~25toqi%C6mLnBjXN6GEh z+9gIeu7UFsG@jy9g;A5($*kA<6Bb;8%B3c|@F<8lTYl9}-0rEScN?C9`;0f0RR9100000000000001hX}(@gLwlUg|EK@}002ov JPDHLkV1g7!yiouE diff --git a/tests/snapshots/nanox_withdrawEL/00004.png b/tests/snapshots/nanox_withdrawEL/00004.png deleted file mode 100644 index 570ce28d53e82ac396ba25c370110058f3a638f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Nkl`l1;k+@4An6g^M6kcbtxu@7*hfO000000DuchDWw$aQJnB& zJ%BsK3VrpQ1hnYqoNY&PO0WdV>i`7cs)e_@w@x()p@w=B24`klR6(CLpxqtlZO|2 zIWjpO-F~*EHtLqUMt)Wc_@bMv^h#{CUFW0M(vJ1P=5N1GhWcHM(-Xu*&bc@D4_o$^ z7Y|pL)I@*DzttR=&yLH#^{|TW)8Sp0qphw%epiuSUG#WHS~ht|j~;`U4>BXmdi9@& zuz>%00000G5i7^TsbXePb2LB O0000U4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ From d2210a7db4444a269593083884122566620b3105 Mon Sep 17 00:00:00 2001 From: Dean Galvin Date: Tue, 24 Sep 2024 10:31:40 -0400 Subject: [PATCH 5/9] Fix tests for Coibnase plugin --- tests/cal/b2c.json | 14 +++++++------- tests/src/claim.v2.test.js | 2 +- tests/src/multiClaim.v2.test.js | 2 +- tests/src/requestExit.v2.test.js | 2 +- tests/src/stake.v2.test.js | 4 ++-- tests/src/test.fixture.js | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/cal/b2c.json b/tests/cal/b2c.json index 683e2c9..3473350 100644 --- a/tests/cal/b2c.json +++ b/tests/cal/b2c.json @@ -7,28 +7,28 @@ "selectors": { "0x3a4b66f1": { "method": "stake", - "plugin": "CoinbaseStaking" + "plugin": "Coinbase" }, "0x721c6513": { "method": "requestExit", - "plugin": "CoinbaseStaking" + "plugin": "Coinbase" }, "0xb7ba18c7": { "method": "multiClaim", - "plugin": "CoinbaseStaking" + "plugin": "Coinbase" } } }, { "address": "0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60", - "contractName": "CoinbaseStakingExitQueue", + "contractName": "CoinbaseExitQueue", "selectors": { "0xadcf1163": { "method": "claim", - "plugin": "CoinbaseStaking" + "plugin": "Coinbase" } } } ], - "name": "CoinbaseStaking" -} \ No newline at end of file + "name": "Coinbase" +} diff --git a/tests/src/claim.v2.test.js b/tests/src/claim.v2.test.js index 16821f2..2f4d769 100644 --- a/tests/src/claim.v2.test.js +++ b/tests/src/claim.v2.test.js @@ -7,7 +7,7 @@ import { ledgerService } from '@ledgerhq/hw-app-eth'; const contractAddr = '0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60'; -const pluginName = 'CoinbaseStaking'; +const pluginName = 'Coinbase'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/multiClaim.v2.test.js b/tests/src/multiClaim.v2.test.js index df04851..f77438a 100644 --- a/tests/src/multiClaim.v2.test.js +++ b/tests/src/multiClaim.v2.test.js @@ -7,7 +7,7 @@ import { ledgerService } from '@ledgerhq/hw-app-eth'; const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'CoinbaseStaking'; +const pluginName = 'Coinbase'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/requestExit.v2.test.js b/tests/src/requestExit.v2.test.js index 8af6fa6..eb10b19 100644 --- a/tests/src/requestExit.v2.test.js +++ b/tests/src/requestExit.v2.test.js @@ -7,7 +7,7 @@ import { ledgerService } from '@ledgerhq/hw-app-eth'; const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'CoinbaseStaking'; +const pluginName = 'Coinbase'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/stake.v2.test.js b/tests/src/stake.v2.test.js index 76a4235..e8b4c5a 100644 --- a/tests/src/stake.v2.test.js +++ b/tests/src/stake.v2.test.js @@ -2,7 +2,7 @@ import 'core-js/stable'; import 'regenerator-runtime/runtime'; import { waitForAppScreen, - CoinbaseStakingJSON, + CoinbaseJSON, zemu, genericTx, nano_models, @@ -15,7 +15,7 @@ import { ledgerService } from '@ledgerhq/hw-app-eth'; const contractAddr = '0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7'; -const pluginName = 'CoinbaseStaking'; +const pluginName = 'Coinbase'; const abi_path = `../cal/abis/${contractAddr}.json`; const abi = require(abi_path); diff --git a/tests/src/test.fixture.js b/tests/src/test.fixture.js index 5e8653d..324e215 100644 --- a/tests/src/test.fixture.js +++ b/tests/src/test.fixture.js @@ -66,7 +66,7 @@ function zemu(device, func) { let elf_path; let lib_elf; elf_path = device.eth_path; - lib_elf = { CoinbaseStaking: device.path }; + lib_elf = { Coinbase: device.path }; const sim = new Zemu(elf_path, lib_elf); try { await sim.start({ ...sim_options_nano, model: device.name }); From 5a03cca33ba3b7c0847039a063a1b76d51458897 Mon Sep 17 00:00:00 2001 From: Dean Galvin Date: Tue, 24 Sep 2024 11:17:39 -0400 Subject: [PATCH 6/9] Use develop --- ethereum-plugin-sdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethereum-plugin-sdk b/ethereum-plugin-sdk index 0afd2a9..f794d6d 160000 --- a/ethereum-plugin-sdk +++ b/ethereum-plugin-sdk @@ -1 +1 @@ -Subproject commit 0afd2a969eb23e8a508560e0e308dc51fb9219e0 +Subproject commit f794d6d24b67da442e20ceae06e924ebdbb98b3d From 64b764d838d4373aaa6651a405629d7267491afd Mon Sep 17 00:00:00 2001 From: Dean Galvin Date: Tue, 24 Sep 2024 11:19:21 -0400 Subject: [PATCH 7/9] Fix plugin name in docs --- PLUGIN_SPECIFICATION.md | 4 ++-- README.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PLUGIN_SPECIFICATION.md b/PLUGIN_SPECIFICATION.md index 00c6ac4..730255a 100644 --- a/PLUGIN_SPECIFICATION.md +++ b/PLUGIN_SPECIFICATION.md @@ -10,8 +10,8 @@ Smart contracts covered by the plugin: | Network | Version | Smart Contract | Address | | ------- | ------- | ------------------------------------- | -------------------------------------------- | -| Mainnet | v2.2 | OCV2-N20 - CoinbaseStaking On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | -| Mainnet | v2.2 | OCV2-EQ - CoinbaseStaking On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | +| Mainnet | v2.2 | OCV2-N20 - Coinbase On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | +| Mainnet | v2.2 | OCV2-EQ - Coinbase On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | ## Functions diff --git a/README.md b/README.md index 1e38d1f..7d20a95 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,8 @@ Smart contracts covered by this plugin are: ks | Network | Name | Address | | ------- | ----------------------------- | -------------------------------------------- | -| Mainnet | CoinbaseStaking On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | -| Mainnet | CoinbaseStaking On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | +| Mainnet | Coinbase On-Chain v2 Native20 | `0x2e3956e1ee8b44ab826556770f69e3b9ca04a2a7` | +| Mainnet | Coinbase On-Chain v2 ExitQueue | `0x86358f7b33b599c484e0335b8ee4f7f7f92d8b60` | ## Clearsigning From 65d59487c1aba73f3857d9e0e7c003b5f6cb0e8d Mon Sep 17 00:00:00 2001 From: Dean Galvin Date: Tue, 24 Sep 2024 11:29:07 -0400 Subject: [PATCH 8/9] Add temp icon --- icons/nanos_app_coinbase.gif | Bin 0 -> 97 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/nanos_app_coinbase.gif diff --git a/icons/nanos_app_coinbase.gif b/icons/nanos_app_coinbase.gif new file mode 100644 index 0000000000000000000000000000000000000000..24e206cb2c0ae3e282678b3d809157e4730d0c21 GIT binary patch literal 97 zcmZ?wbhEHb6krfw_`m=H|NsA2{K*1lD*os8%uP&B^-WCAOwQ&@Pt46tv^CH(F$F;e q9grH3J_aVKp8l1m-_B=fa6DE1dP&9XJt+#wmFG?@eKkvj!5RQcBOhh} literal 0 HcmV?d00001 From fb15b64b22f162f0568067d4599817c170ba9603 Mon Sep 17 00:00:00 2001 From: Dean Galvin Date: Tue, 24 Sep 2024 12:36:33 -0400 Subject: [PATCH 9/9] Fix test images --- tests/snapshots/nanos_claimv2/00001.png | Bin 424 -> 399 bytes tests/snapshots/nanos_multiClaimv2/00001.png | Bin 424 -> 399 bytes tests/snapshots/nanos_requestExitv2/00001.png | Bin 424 -> 399 bytes tests/snapshots/nanos_stakev2/00001.png | Bin 424 -> 399 bytes tests/snapshots/nanox_claimv2/00001.png | Bin 535 -> 444 bytes tests/snapshots/nanox_multiClaimv2/00001.png | Bin 535 -> 444 bytes tests/snapshots/nanox_requestExitv2/00001.png | Bin 535 -> 444 bytes tests/snapshots/nanox_stakev2/00001.png | Bin 535 -> 444 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/snapshots/nanos_claimv2/00001.png b/tests/snapshots/nanos_claimv2/00001.png index c61639ae3328514c55aa80cfea3911a328d94137..e1e383b30ce9cf5ee7666247071556cdc2fa4ddc 100644 GIT binary patch delta 372 zcmV-)0gL{q1CIlcB!5;(L_t(|ob8y=4udcVMRl3~|G_?N4=x>PDMFP}^`0z?sjVnb z8tya!0000neAfR@p4NO9RN3{r{yCTB9c+JIn8D=GboaCVuBor-T6Re`Q<%fP#{FS4 zmky@u@?v*To+gafhWER{xEkK?3}O%os!$}p=de=UJZPQO8%%Zu z#ljVLE3zzOT5g(Vb?7jAy;mb9H%fX<)MRe^&syKi7S&k=!8J2IP~(=NS1XmOr(W`` z^}XyMjZoW*oo$4}4mhj7H+?Ei-qNl{84bcA0B3zw!*c|ojV&*x7}TPBjA%797LzhM zFCIIl%OT9_jR#B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnPDMFP}^`0z?sjVnb z8tya!0000neAfR@p4NO9RN3{r{yCTB9c+JIn8D=GboaCVuBor-T6Re`Q<%fP#{FS4 zmky@u@?v*To+gafhWER{xEkK?3}O%os!$}p=de=UJZPQO8%%Zu z#ljVLE3zzOT5g(Vb?7jAy;mb9H%fX<)MRe^&syKi7S&k=!8J2IP~(=NS1XmOr(W`` z^}XyMjZoW*oo$4}4mhj7H+?Ei-qNl{84bcA0B3zw!*c|ojV&*x7}TPBjA%797LzhM zFCIIl%OT9_jR#B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnPDMFP}^`0z?sjVnb z8tya!0000neAfR@p4NO9RN3{r{yCTB9c+JIn8D=GboaCVuBor-T6Re`Q<%fP#{FS4 zmky@u@?v*To+gafhWER{xEkK?3}O%os!$}p=de=UJZPQO8%%Zu z#ljVLE3zzOT5g(Vb?7jAy;mb9H%fX<)MRe^&syKi7S&k=!8J2IP~(=NS1XmOr(W`` z^}XyMjZoW*oo$4}4mhj7H+?Ei-qNl{84bcA0B3zw!*c|ojV&*x7}TPBjA%797LzhM zFCIIl%OT9_jR#B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCnPDMFP}^`0z?sjVnb z8tya!0000neAfR@p4NO9RN3{r{yCTB9c+JIn8D=GboaCVuBor-T6Re`Q<%fP#{FS4 zmky@u@?v*To+gafhWER{xEkK?3}O%os!$}p=de=UJZPQO8%%Zu z#ljVLE3zzOT5g(Vb?7jAy;mb9H%fX<)MRe^&syKi7S&k=!8J2IP~(=NS1XmOr(W`` z^}XyMjZoW*oo$4}4mhj7H+?Ei-qNl{84bcA0B3zw!*c|ojV&*x7}TPBjA%797LzhM zFCIIl%OT9_jR#B!6#7L_t(|ob8y~t^*+mMV*t*|9@~F+J|YT#DQH<)Y8LB(@Yc* z@fLR}Ns=T<(#7Nc{$aD`TK8Z;zh03{LO;}xeq697bZNS8K5n+1DLe;u);{j9Z#rh$ zmTgj50viy<@xSe2*Hw5R&T7KgPN%}IAX<2SUq3z;Vl&CPWPbx1>O+zuX~Jm-j6=#D zyKfHY;=L|Ujl+q2{R9-@;kJA27>^xr zgkG&sIv(rFD#Fdo+FUyVCq6JR(J(Z#>x4yfz3ZDBtCQ{tKut3HN~|w!)`Oxb8A;B; zO7aw1$=G|i^M8Eo(JwB?dXA~N$t;utN|_}^;1`x&Of_})%L=GOgQmz9Dg{(p z5=Q~04A=o)&vesJLn)w?0TbXgss=wn6i|wj8XA;E3MggDCCn1Z6ZK{;Z9><+-6(s}Ohu2~~ZGT5*iPn*aZ_=^{m@o~Wean9i#=+en(ekv+gI6fk{4~|?w4Ie-3(YL99&$= z`(71l)0Dip^M8+d@y~$qd%e((MYUI9X=-h^)t&zUcsD7&FY zj86{Q$~!Wq&VU_>**!$+-XiaH+T}8}PQn}K$5|+r<$bv|w|4(A-vQ{i zK=j9Me&Kf;G!$VEW}%ZNL1qlLBD??q000000000002=@R006)?-&pi+w*NJt6aWAK M07*qoM6N<$f`P%x9{>OV delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($J1Z6ZK{;Z9><+-6(s}Ohu2~~ZGT5*iPn*aZ_=^{m@o~Wean9i#=+en(ekv+gI6fk{4~|?w4Ie-3(YL99&$= z`(71l)0Dip^M8+d@y~$qd%e((MYUI9X=-h^)t&zUcsD7&FY zj86{Q$~!Wq&VU_>**!$+-XiaH+T}8}PQn}K$5|+r<$bv|w|4(A-vQ{i zK=j9Me&Kf;G!$VEW}%ZNL1qlLBD??q000000000002=@R006)?-&pi+w*NJt6aWAK M07*qoM6N<$f`P%x9{>OV delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($J1Z6ZK{;Z9><+-6(s}Ohu2~~ZGT5*iPn*aZ_=^{m@o~Wean9i#=+en(ekv+gI6fk{4~|?w4Ie-3(YL99&$= z`(71l)0Dip^M8+d@y~$qd%e((MYUI9X=-h^)t&zUcsD7&FY zj86{Q$~!Wq&VU_>**!$+-XiaH+T}8}PQn}K$5|+r<$bv|w|4(A-vQ{i zK=j9Me&Kf;G!$VEW}%ZNL1qlLBD??q000000000002=@R006)?-&pi+w*NJt6aWAK M07*qoM6N<$f`P%x9{>OV delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($J1Z6ZK{;Z9><+-6(s}Ohu2~~ZGT5*iPn*aZ_=^{m@o~Wean9i#=+en(ekv+gI6fk{4~|?w4Ie-3(YL99&$= z`(71l)0Dip^M8+d@y~$qd%e((MYUI9X=-h^)t&zUcsD7&FY zj86{Q$~!Wq&VU_>**!$+-XiaH+T}8}PQn}K$5|+r<$bv|w|4(A-vQ{i zK=j9Me&Kf;G!$VEW}%ZNL1qlLBD??q000000000002=@R006)?-&pi+w*NJt6aWAK M07*qoM6N<$f`P%x9{>OV delta 509 zcmVF1DMQNuu;r>VBE?s2GFi6NC3)^YlTV;qO zz7b$7QUU+~006k0FSlnYrT)%2+h%7B_Gvqmu|r$OkI!vh*;e%`Qk#1mFA(ocz=%5a zs`U2ZODQ>LX(JugDLmh(N~%h1mrk%Pz71t)F!)}wwvp0R8-G<|*O>p1p=x{EqqLN1 zu4YE?k?cwFjujKO0;Kej+`~BCBvm_VZDfXCEh7Q;D5q<;&BzrHMK`Z2>Xwz787*g` zIxW=TA%Y#gVF{4k`vlou>L>?d@1HZOR&j1YuVvotvu)$5pl(LD!ACYD8MfIdxa@2G z5!7P^Y^O`)On+V_PkaY_6#g$^NZJAHE+qf}_fr~t?ryWCe(f{v8>3cZeC|tTs{{I+ z;SR2bj+m){9=gnrTCD}8qw;6{;A($J